认识网络
1.网络发展史
ARPnetA(阿帕网)->internet(因特网)->移动互联网->物联网
2.局域网与广域网
4.路由器
概念(作用):用于连接局域网和外网
前面说了你的设备可以连接路由器来通信,你在你家这个区域设备之间连接在一起,但是你还要和外界通信,路由器就是把你家庭这个区域的网络和外部网络连接,你就能通过路由器给出的网络和外部联系。
路由器需要区分WAN口和LAN口,WAN口是接外网的(从Modem出来的或者从上一级路由器出来的),LAN口是接内网的,现在路由器都带无线功能,本质上无线接入就是LAN。
5.交换机与路由器
交换机:用于局域网内网的信息转发(就是处理信息,像一个物流中心,管理货物(数据)运输)
路由器:用于连接局域网和外网,也能进行数据转发
注:现在大部分路由器都有有交换机的功能;
可是交换机没有IP分配和IP寻址的机制,所以交换机没有路由器的能力。
6.网线
网线就是数据传输的通路(就像道路一样)
IP地址
1.基本概念
什么是IP地址
(1)IP地址是Internet中主机的标识(主机的身份证,要是有人要我给你送一个苹果(数据),你没有身份证,你怎么证明你是我要找的人)
(2)Internet中的主机要与别的机器通信必须具有一个IP地址
(3)IP地址为32位(IPv4)或者128位(IPv6)
(4)IPV4表示形式:常用点分十进制形式,如202.38.64.10,最后都会转换为一个32位的无符号整数。
补充知识:
NAT设备(网络地址转换)
功能:NAT设备的主要功能是将内部私有IP地址转换为公共IP地址,或反向操作,以便在局域网和外部网络(如互联网)之间进行通信。
工作原理:
当局域网内的设备访问互联网时,NAT设备记录设备的内部IP地址和源端口,并用公共IP地址替换。
响应的流量也会经过NAT设备,NAT通过记录的映射关系将数据包发送回正确的内部设备。
作用对象:NAT设备用于管理与外部网络(如互联网)的通信,通常作为路由器的一部分。
DHCP服务器(动态主机配置协议)
功能:DHCP服务器的主要任务是自动分配IP地址、子网掩码、默认网关和DNS服务器ip等网络配置给网络中的设备(客户端),简化网络管理。
工作原理:
当一个设备(如电脑或手机)首次连接到网络时,它会发送一个DHCP请求。
DHCP服务器接收到请求后,从预设的IP地址池中分配一个可用的IP地址,并返回给客户端。
作用对象:DHCP服务器专注于局域网内部的IP地址管理。
2.网络号/主机号(二级划分)
IP地址的组成:网络号+主机号
网络号:是一个局域网的标志,表示这个主机所属的网段(局域网)
主机号:标识在本网段内的ID,同一局域网不能重复(相当于你的主机在该局域网范围内的编号)
不同的局域网网络号是不一样的,主机号可能和别的局域网内的主机一样然而组合在一起的IP地址就不会一样,就像你的身份证,你的所属地编号可能有很多人和你一样,但是后面哈有出生年日期和男女标识以及分配顺序,这就决定了你的身份唯一性,但是又能找出很多同一性(所属地等等)。
3.IP地址分类
IP地址分类
各个类的范围:
A类:1.0.0.1~126.255.255.254
B类:128.0.0.1~~191.255.255.254
C类:192.0.0.1~~223.255.255.254
D类(组播地址):224.0.0.1~~239.255.255.254
E类:240.0.0.1~~247.255.255.254
特殊的IP地址
0.0.0.0:在服务器中,0.0.0.0指的是本机上的所有IPV4地址,假如一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么利用两个ip地址都能够访问该服务
127.0.0.1:回环地址/环路地址,所有发往该类地址的数据包都应该被loop back(Loopback通常指网络或框架中的一种自我测试机制,允许信号或数据从输出端返回到输入端而不经过外部设备。常见于网络协议、音频接口、软件开发等领域)。
网络地址: 每一个网段主机号为0的地址; 如:192.168.50.222-->192.168.50.0 它是网络中的一个特殊地址,不能被分配给任何具体的主机(主机号为0)
广播地址: 主机号最大的地址是该网段的广播地址 如:192.168.50.222的广播地址是192.168.50.255
全网广播地址:255.255.255.255
终端输入ifconfig可以查看自己当前设备的网络配备信息(包含IPV4,子网掩码,广播地址等)
4 子网掩码
子网掩码:将某一个IP划分成就是(1)是一个32位的整数,作用网络地址和主机地址;
(2)子网掩码长度是和IP地址长度完全一样;
特点:网络号全为1,主机号全为0;
公式:网络地址=IP & MASK(子网掩码)
主机地址= IP& ~MASK(子网掩码取反)
5.三级划分
作用: 重新划分网络号和主机号 , 也就是重新组网 , 从而提高资源利用率
二级划分 IP :IP地址= 网络号 + 主机号(把IP地址分为两个部分)
三级划分 IP :IP地址= 网络号 + 子网号 + 主机号(把IP地址分为三个部分,把主机号分为子网号和主机号)
练习:
1.B类地址的子网掩码怎么写? 255.255.0.0
2.一个IP地址为192.168.3.183,计算其网络号与主机号
子网掩码:255.255.255.0 网络号:192.168.3.0 主机号:0.0.0.183
3.B类地址,同一网段最多可以连接多少个主机? 2^16-2(去掉网络地址和广播地址)
4.如果有800台电脑, 在不浪费ip情况下, 选用哪个网段? B
5.某公司有四个部门:行政、研发1、研发2、营销,每个部门各50台计算机接入公司局域网,如果要在192.168.1.0网段为每个部门划分子网,子网掩码应该怎么设置,每个子网的地址范围分别是什么?
分析:首先确定利用第几类IP地址合适,要求能表示两百台计算机,资源利用率越高越好;这里还要求大家把主机号分为子网号和主机号,子网号来表示部门,主机号才表示各个电脑;再确定子网号应该使用几位,两位就够了,00,01,10,11,这个时候我们就确定了IP地址应该是网络号(已有)+子网号(四个部门)+主机号;A类主机号十六位,十六位减去两位子网号是14位,太多了,资源浪费,能不能再少点,B类八位主机号减去两位子网号是六位,2的六次方是64,可以容下一部门五十个人,所以选择B类IP地址。
确定格式:网络号(16位)+子网号(2位)+主机号(6位)
答案:
行政: 192.168.1.00 00 0000~00 11 1111 = 192.168.1.0~~192.168.1.63
研发一:192.168.1.01 00 0000~01 11 1111 = 192.168.1.64~~192.168.1.127
研发二:192.168.1.10 00 0000~10 11 1111 =192.168.1.128~~192.168.1.191
营销: 192.168.1.11 00 0000~11 11 1111 =192.168.1.192~~192.168.1.255
子网掩码:255.255.255.1100 0000 =255.255.255.192
网络模型
4.常见协议
应用层:
SSH:加密协议
telnet:远程登录协议
FTP:文件传输协议
HTTP:超文本传输协议
DNS:域名解析协议 (将人类易于记忆的域名(如www.baidu.com)转换为计算机使用的IP地址(如192.0.2.1))
SMTP/POP3:邮件传输协议
传输层:
TCP:传输控制协议
UDP:用户数据报协议
网络层:
IP(IPV4/IPV6):网间互连的协议
ICMP:网络控制管理协议,ping命令采用
IGMP:网络分组管理协议,广播和组播使用
ARP:地址解析协议 IP-->MAC
RARP:反向地址转换协议 MAC-->IP
网络接口和物理层:
ppp:点对点协议
Ethernet:是一种常见的局域网技术,启用MAC地址进行帧的传输和接收
Wi-Fi:用于无线局域网的数据传输,通常基于IEEE 802.11标准
1.DNS
由于使用IP地址来指定计算机不方便人们记忆,且输入时候容易出错,用字符标识网络中计算机名称途径。
这种命名方法就像每个人的名字,这就是域名(Domian Name )
域名服务器(Domain Name server):用来处理IP地址和域名之间的转换。
域名系统(Domain Name System,DNS):域名翻译成IP地址的软件DNS
域名结构:
例如域名 www.baidu.com.cn从右向左看:
1.cn为高级域名,也叫一级域名,它通常分配给主干节点,取值为国家名,cn代表中国
2.com为网络名,属于二级域名,它通常表示组织或部门
中国互联网二级域名共40个,edu表示教育部门,com表示商业部门,gov表示政府,军队mil等等
3.baidu为机构名,在此为三级域名,表示百度
4.www:万维网world wide web,也叫环球信息网,是一种特殊的信息结构框架。
DNS工作流程:
DNS黑客技术:
2.TPC与UDP:
相同点:
UDP TCP 协议都存在于传输层,全双工通信
不同点:
TPC(传输控制协议):
1.全双工通信、面向连接、可靠
2.是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、材料无失序、数据无重复到达的通信)。
3.适用场景:
(1)发送小尺寸数据(如对DNS服务器进行IP地址查询时)
(2)适合于广播/组播式通信中。
(3)MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议
4.高可靠原因:
(1) 三次握手、四次挥手
(2)序列号和应答机制
(3)超时,错误重传机制
(4)拥塞控制、流量控制(滑动窗口)
UDP(用户资料报协议):
1.全双工通信、面向无连接、不可靠通过;因为在数据发送前不需要进行连接,于是能够进行高效率的数据传输,然而容易丢失信息。
2.适用场景:
(1)发送小尺寸数据(如对DNS服务器进行IP地址查询时)
(2)适合于广播/组播式通信中。
(3)MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议
5.常用网络调试命令
1.ping:用来网络联通测试(使用多)
作用:
(1)用来检测网络的连通情况和分析网络速度;
(2)根据域名得到服务器IP;
(3)根据ping返回的TTL值来判断对方所采用的操作系统及数据包经过路由器数量。
参数:
字节:数据包大小
时间:响应时间,时间越小证明你链接这个地址的速度越快
TTL:Time To Live,从源到目的,每经过一个路由器,TTL减一,当TTL=0,包丢失
2.ifconfig:查看网络接口信息

参数:
ens33:网卡名称
en:Ethernet
s:表示热插拔插槽上的设备
33:插槽编号
lo:回环网卡
其他命令:
格式
含义
ifconfig 具体网卡名称
只显示具体网卡的详细信息(无论是否启用)
ifconfig -a
表示显示所有网卡包括没有启动的网卡
ifconfig 网卡名称 up/down
表示开启或关闭网卡
ifconfig 网络接口 IP地址[/子网掩码长度]
新建临时IP地址(添加 一块虚拟网卡)
ifconfig -s
查看通讯情况
套接字:socket
1.什么是套接字
1.普通的I/O操作过程 :打开资料->读/写操作->关闭资料
2.TCP/IP协议被集成到操作系统的内核中,引入了新型的“I/O”管理 ----->进行网络通信的两个进程在不同的机器上,如何连接? 网络协议具有多样性,如何进行统一的处理 ?
需要一种通用的网络编程接口:Socket(像一个插排线,将两个进程连接)
3. socket类型
1.流式套接字(SOCK_STREAM) ---> TCP
提供了一个面向连接、可靠的数据传输服务,材料无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流。
2.数据报套接字(SOCK_DGRAM) --> UDP
提供无连接服务。数据包以独立数据包的形式被发送,不供应无差错保证,材料可能丢失或重复,顺序发送可能乱序接收。
3.原始套接字(SOCK_RAW)
可以对较低层次协议如IP、ICMP直接访问,还有一些ping命令
4. 位置
在应用层和数字链路层与物理层之间
端口号
概念:
1.为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区分
2.TCP端口号与UDP端口号独立(UDP port为8888,TCP port也可为8888 )
3.端口号一般由IANA (Internet Assigned Numbers Authority) 管理
4.端口用两个字节来表示
分类:(1)众所周知端口:(被占用:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用))
(2)已登记端口:1024~49151(可用来建立与其它主机的会话)
(3)动态或私有端口:49152~65535 (固定某些服务使用)
字节序
1.字节序: 不同类型的cpu主机,内存存储大于一个字节类型的数据在内存中的存放顺序。
2.浮点类型,字符类型,字符串没有字节序
3.分类:
小端序(little-endian) - 低序字节存储在低地址 (主机字节序)
大端序(big-endian)- 高序字节存储在低地址 (网络字节序)
网络中传输的数据必须使用网络字节序,即大端字节序
终端显示的数据必须是主机字节序,即小端字节序
大小端口转换
主机字节序转换为网络字节序 (小端序->大端序)
u_long htonl (u_long hostlong); //host to network long
u_short htons (u_short short); //掌握这个
网络字节序转换为主机字节序(大端序->小端序)
u_long ntohl (u_long hostlong);
u_short ntohs (u_short short);
主机字节序转换为网络字节序 (小端序->大端序)
in_addr_t inet_addr(const char *strptr); //该参数是字符串 typedef uint32_t in_addr_t; struct in_addr { in_addr_t s_addr; };
功能: 主机字节序转为网络字节序
参数: const char *strptr: 字符串
返回值: 返回一个无符号长整型数(无符号32位整数用十六进制表示), 否则NULL
网络字节序转换为主机字节序(大端序->小端序)
char *inet_ntoa(stuct in_addr inaddr);
功能: 将网络字节序二进制地址转换成主机字节序。
参数: stuct in_addr in addr : 只需传入一个结构体变量
返回值: 返回一个字符指针, 否则NULL;