提纲
网络层
ip协议:ip协议字段 地址管理(ipv4版本的ip地址、ip分类(早期分类、CIDR)、子网掩码) 路由器选择(数据如何通过ip进行转发)
数据链路层
以太网协议:负责相邻设备之间的数据转发
ARP协议:查找相邻机器MAC地址的协议
其他协议
DNS协议:域名解析协议
NAT协议:地址转换协议
ip协议
主机:配有ip地址,但是不进行路由器控制的设备;
路由器:即配有ip地址,又能进行路由控制;
节点:主机和路由器的统称
协议头格式
1. 4位版本号:标识当前ip协议是ipv4(0100)
2. 4位首部长度:4bit表示最大的数字是15,因此ip头部最大长度时60字节
3. 8位服务类型:3为优先权字段,4位TOS字段,和1位保留字段(必须置为0),4位TOS分别表示:最小延时、最大吞吐量、最高可靠性、最小成本,这四者相互冲突,只能选择一个
4. 16位总长度:2^16
5. 16位标识:同一个数据包当中的不同分片具有同样的表标识,本质上就是为了在接收方的时候,找到同一个数据包的不同分片
6. 3位标志:第一个比特位为保留位,第二个比特位标识是否分片(1:禁止分片),第三个比特位(1:后面还有分片,0:标识是最后一个分片)
7. 13片偏移:2^13=8192 标识当前分片在数据包当中的相对位置,也是为了接收方组合分片使用的
(1)13片偏移计算出来的是一个数值,这个数值乘以8,就算出来当前分片在整个数据包当中的相对位置,字节为单位
(2)2*^13*2^3=2^16
8.问题:
每一个分片在传输的时候,是否是独立的?肯定的
万一在传输过程当中丢失了一个分片,就是将其他分片页丢掉,不会接收了。ip协议也是不可靠的
tcp协议在传输数据的时候,将数据递交给网络层,是否需要进行分片传输? 不需要,因为已经严格按照MSS进行传输
udp协议在传输数据的时候,将数据递交给网络层,是否需要进行分片传输? 有可能需要
9. 8位生存时间:TTL
ip数据包最大能够经历的路由器个数,每经历一个路由器,TTL减1,TTL没有到0的时候,已经到达了对端主机(正常发送),TTL达到0的时候,就会在网络当中丢弃掉。
10. 8位协议:使用ip协议的上层协议(传输层的协议名称)
接收方在接收到这个ip数据的时候,通过该字段可以指定到将IP数据包提交给哪一个传输层的协议
地址管理
1.ipv4版本的ip地址,类型unit32_t的整数,能够表示的范围:[0,42亿+]
2.早期地址不够用,ip地址快枯竭了
3.早期ip划分方式
(1)ip=网络号(网段)+主机号
网络号:可以表示一个“网络”当中的所有主机(保证相互连接的两个网段具有不同的标识)
主机号:在“网络”当中可以唯一标识一台主机(同一段网段内,主机之间具有相同的网络号,但是必须有不同的主机号)
不同的子网其实就是把网络号相同的主机放到一起
如果在子网当中新增一台主机,那这台主机的网络号和这个子网的网络号一致,但是主机号必须不能和子网当中其他的主机重复
(2)Ip地址划分为五类
A类
最高位为保留位,设置为0+7位网络号+24位主机号
网络号的范围: 0 0000000 ~ 0 1111111 -> [0,127]
主机号的范围:00000000 00000000 00000000 ~ 11111111 11111111 11111111 -> [0.0.0 ,255.255.255] 16777216(2^24)个ip地址
A类ip地址的范围:0 0000000 00000000 00000000 00000000 ~ 0 1111111 11111111 11111111 11111111
也就是0.0.0.0~ 127.255.255.255 (2147483647)
B类
最高两位为保留位,设置为10+14位网络号+16位主机号
网络号的范围: 10 000000 00000000 ~ 10 111111 11111111 -> [128.0~191.255]
主机号的网络范围: 00000000 00000000 ~ 11111111 11111111 ->[0.0~255.255] 2^16个ip地址
B类ip地址的范围: 128.0.0.0 ~ 191.255.255.255 (2147483648)
C类
最高位三位为保留为,设置为110+21位网络号+8位主机号
网络号的范围: 110 00000 00000000 00000000 ~ 110 11111 11111111 11111111 -> [192.0.0~ 223.255.255]
主机号的范围: 00000000 ~ 11111111 -> [0~255] 2^8个ip地址
C类ip地址的范围:192.0.0.0~223.255.255.255
D类ip地址的范围:224.0.0.0~239.255.255.255
E类ip地址的范围: 240.0.0.0~247.255.255.255
CIDR(新的划分方式)
1.作用:为了更加精确化的划分ip地址,增加了子网掩码(32个比特位的高位连续为1,连续任意个)
2.计算方式
当前网络的网络号=ip&子网掩码
当前网络的最大主机数量= ~(子网掩码)
eg:
(1)172.17.0.3 & 255.255.249.0=172.17.0.0(网络号)
255.255.240.0 -> 11111111 11111111 11110000 00000000 -> 取反 00000000 00000000 00001111 11111111=4095
(2)192.168.112.90,子网掩码是:255.255.255.0,请将ip所在的子网,在划分成为4份相同ip数量的子网
网络号:192.168.112.90&255.255.255.0=192.168.112.0
最大主机号: ~255.255.255.0=0.0.0.255 最大主机数量255
当前子网当中有ip地址数量: 192.168.112.0 ~ 192.168.112.255 也就是256个ip
划分成4份:
192.168.112.0 ~ 192.168.112.63
192.168.112.64 ~ 192.168.112.127
192.168.112.128 ~ 192.168.112.191
192.168.112.192 ~ 192.168.112.255
私网ip地址和公网ip地址
1.公网ip:具备直接访问互联网能力力的ip
2.私网ip:是不具备直接访问互联网的能力的,但是不同的私网可以进行复用
3.私网网段: (1)10.* -> 10.0.0.0~10.255.255.255
(2)172.16~ 172.31 -> 172.16.0.0~172.31.255.255
(3) 192.168.* ->192.168.0.0~192.168.255.255
特殊的ip地址
本地回环地址:127.0.0.1
0.0.0.0:网络号:ip地址当中主机号全为0的ip地址就是当前子网的网络号 广播号:ip地址当中主机号全为1的Ip地址为当前子网的广播号
路由选择
1.知道目的ip地址之后,将原主机的数据传递给目的主机
2.网络数据的五元组信息
(源ip,源端口,目的ip,目的端口,协议)
3.网络数据在转发的时候,需要经历多个转发设备(路由器、交换机)进行转发
4.如何进行转发
(1)当前机器是否在一个子网网络当中?在
(2)转发的时候是否需要转发到其他子网网络当种?
具体看转发数目的目的ip是否和源ip处于同一个子网当中
(3)如果需要转发到其他网络当中,需要如何转发?
路由器中的WAN和LAN
WAN:连接网络入户线使用,从运营商拉回来的网线插入到WAN口
LAN:是从其路由器拉出来一根网线连接PC设备
U:可用 G:网关 !:不可用
在转发数据的时候,先获取数据的目的ip地址,通过目的ip地址和路由表当中的路由项进行&操作;
如果获取到的结果和当前路由项当中的destination相符合,说明这条数据是转发给当前子网当中的机器;
如果获取到的结果和当前路由项当中的destination不符合,则继续匹配下一个路由项,直到所有子网的路由项都匹配一遍之后,还没有找到相应的数据转发路由项,则会和网关路由项的子网掩码进行按位与操作,将数据通过网关(WAN)转发给上级路由器;
上级路由器在获取了这条数据之后,也是需要重复上述匹配路由项的操作,直到将数据转发给相应子网网络当中的机器,或者转发给上级路由器;
在每一次路由器进行转发的时候,都会对ip数据报当中的ip协议的TTL字段进行减1操作;如果TTL为0,还没到达目标机器,则路由器丢弃该数据报;如果TTL>0,到达目标机器,则为正常转发