4.2 IPV4
最后更新于
最后更新于
版本(4bit):IPV4/IPV6
首部长度(4bit):标识首部的长度
单位是4B
最小为5(0101):20B
最大为15(1111):60B
区分服务(8bit):指示期望获得哪 种类型的服务
总长度(16bit):整个数据报(首部+数据)的长度
单位是1B
最小是64B
最大时1500B
标识(16bit):同一数据报的分片使 用同一标识
标志(3bit)
最高位无用
中间位DF(Don’t Fragment)
DF=1:禁止分片
DF=0:允许分片
最低位位MF (More Fragment)
MF=1:后面还有分片
MF=0:最后一个分片
片偏移(13bit):指出较长分组分片后,某片在原分组中的相对起始位置
单位是8B
生存时间(8bit):IP分组的保质期
每经过一个路由器-1
变成0时丢弃
协议(8bit):数据部分(即传输层报文段)所采用的协议
TCP:6
UPD:17
首部检验和(16bit):检验首部信息
源地址、目的地址(各32bit):来源和目标的IP地址
可选字段(0~40B):支持排错、 测量以及安全等措施
填充:保证首部长度为4B的整数倍
最大传送单元MTU:链路层数据帧可封装数据的上限。以太网的MTU是1500字节(B)。
因此,网络层的首部+数据部分的最大长度就为1500B。
分片时,分组从0开始,通过将每一个分组的起始分组号/8得到片偏移量。
每一个分片的长度一定是8B的整数倍。
例:已知数据报首部为20B,数据部分为3800B,将其分为长度不超过1420B的数据报片
分别的偏移量:
0.0.0.0
✔
❌
本网络范围内表示主机,路由表内表示默认路由
0.0.0.X
✔
❌
本网络范围内的某个特定主机
255.255.255.255
❌
✔
本网络广播地址
X.X.X.0
❌
❌
表示某一个网络
X.X.X.255
❌
✔
对特定网络进行广播
127.X.X.X
✔
✔
本地环回
A类
10.0.0.0~10.255.255.255
1
B类
127.16.0.0~127.31.255.255
16
C类
192.168.0.0~192.168.255.255
256
A类网络
最大可用网络数
减去全零(本地网络)
减去127(本地环回)
最大可用主机数
减去全零(本网络)
减去全一(255,广播)
B类网络
最大可用网络数
减去128.0(不可指派)
最大主机数
减去全零(本网络)
减去全一(255,广播)
C类网络
最大可用网络数
减去192.0.0(不可指派)
最大主机数
减去全零(本机)
减去全一(255,广播)
安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址
局域网中的每台设备使用私有IP,这些地址无法作为源地址和目的地址
每个路由器中存在一张NAT转换表,将私有地址+端口号与路由器IP+端口号一一对应,通过这一方法即可实现访问内网的计算机。
IP地址空间利用率低
两级IP地址不够灵活
将原本IP地址的主机号再次进行划分,得到子网号+新的主机号
子网号能否全0全1看情况(是否采用CIDR)
主机号不能全0或全1
全0:本机
全1:广播
主机号至少要有两位
子网划分后,网络对外仍然表现为一个网络,外部看不到内部网络中的子网划分。
增加子网的数量
减小广播域
减少主机数量
提高IP的利用率
不会增加网络的数量
将网络号的部分全部表示为1,主机号的部分全部表示为0,即得到子网掩码
对于两级IP地址(未划分子网),网络号部分为1,即为子网掩码
对于三级IP地址(划分子网),网络号+子网号的部分为1,即为子网掩码
将IP地址与子网掩码逐位相与,即得到网络地址
相与:两个对应的位均为1,结果为1;否则结果为0
例1:已知IP地址是141.14.72.24,子网掩码是255.255.192.0,求网络地址;如果子网掩码是255.255.224.0,求网络地址
故网络地址为141.14.64.0
网络地址为141.14.64.0
10000000
128
11000000
192
11100000
224
11110000
240
11111000
248
11111100
252
11111110
254
11111111
255
源路由器发送给目标路由器的路由表中,包含了以下信息:
目的网络地址
目的子网掩码
下一跳地址
目标路由器收到后,分组转发的算法顺序如下:
提取目标IP地址
将IP地址与自己网络中的各子网的子网掩码相与,结果与目的子网掩码对比
有相同的子网掩码:直接交付
没有相同的子网掩码:下一步
检查自己路由表中的特定主机路由(直接指向某个路由器)
存在与目标IP匹配的特定主机路由:转发
否则下一步
检查路由表中记录的的所有子网掩码,一一做与运算并对比
存在与目标子网掩码相同的记录:按照路径转发
否则下一步
转发到默认路由0.0.0.0进行处理
当分组的生命周期耗尽时,丢弃该分组,并转发报告分组出错。
不再采用网络号+子网号+主机号的方式,放弃了ABC类地址划分的概念。
CIDR记法:使用一定长度的位代表网络前缀,表示为IP地址/网络前缀位数,如128.14.32.0/20
网络前缀的位数是可变的,网络前缀相同的地址合称为一个地址块。
例:128.14.35.7/20是某CIDR地址块中的一个地址,分析这个地址块
二进制表示:10000000 00001110 00100011 00000111
最小地址:10000000 00001110 00100000 00000000(128.14.32.0)
最大地址:10000000 00001110 00101111 11111111(128.14.47.255)
所在地址块:10000000 00001110 00100000 00000000(128.14.32.0)
地址掩码:11111111 11111111 11110000 00000000(255.255.240.0)
将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合
例:将206.1.0.0/17与206.1.128.0/17构成超网
所构成的超网为206.1.0.0/16
使用CIDR时,通过跟网络掩码按位相与查找路由表,可能得到几个匹配结果,选择具有最长网络前缀的作为下一跳路由
前缀越长
地址块越小
路由越具体
应用层:产生报文
传输层:根据大小将报文分为报文段
网络层:将报文段加上IP地址(源主机和目的主机),形成(IP数据报)分组
数据链路层:将分组加上MAC地址(源主机和目的主机)和FCS
物理层:通过数字或模拟方式传输
解决下一跳走哪的问题
ARP高速缓存:每台主机中都有的,IP地址与MAC地址的映射
在链路层传输数据报分组时,必须以MAC地址的形式传递,因此需要使用ARP协议来获得目的主机的MAC地址,过程如下:
1)查找ARP高速缓存
首先查找本机的ARP缓存中有没有目的IP对应的MAC地址,如果有则直接填入
2)当目的主机在局域网内时
发送的请求分组中目的MAC地址为全1,表示广播分组
返回的响应分组中包括了目的MAC地址,直接填入即可
3)当目标主机不在本网络时
通过本机的子网掩码和目标地址做与运算,发现目标IP不在一个网段内
目的MAC地址设为默认网关(本网络出口路由器)的MAC地址
获取默认网关的MAC地址的方法仍然为通过ARP协议
之后的传输交由路由器处理
4)由路由器传到下一个路由器
源IP和目的IP不变
MAC地址改为相应的路由器MAC地址
5)由路由器到本网络内主机
源路由器通过ARP协议获得目的主机的MAC地址
IP地址仍然为最初的地址
MAC地址为路由器地址和获得的目的主机MAC地址
功能:完成主机或路由器IP地址到MAC地址的映射
过程
检查ARP高速缓存
有对应表项则写入MAC帧
没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组
目的主机收到请求后就向源主机单播一个ARP响应分组
源主机收到后将此映射写入ARP缓存(10-20min更新一次)
以太网帧的源和目的MAC地址:上、下一条的MAC地址
IP数据报的源和目的IP地址:最接近源/目的地址的公网IP地址
动态主机配置协议DHCP:
是应用层协议
使用客户/服务器方式
客户端和服务端通过广播方式进行交互
基于UDP
DHCP协议的过程:
主机广播DHCP发现报文
试图找到网络中的服务器,服务器获得IP地址
DHCP服务器广播DHCP提供报文
服务器拟分配给主机一个IP地址及相关配置
先到先得
主机广播DHCP请求报文
主机向服务器请求提供IP地址
DHCP服务器广播DHCP确认报文
正式将IP地址分配给主机
在网络层,使用网际控制报文协议(ICMP)来让主机和路由器报告差错和异常情况。
ICMP报文在首部的类型字段中表明此条报文的种类。
差错报文的类型
终点不可达:无法交付
源点抑制(已取消):拥塞丢数据
时间超过:报文生存时间TTL=0,丢弃部分已收到的数据报片
参数问题:首部字段有问题
改变路由(重定向):有更好的路由
差错报文的组成
ICMP差错报文本身是一个IP数据报
不发送差错报文的情况
对ICMP差错报告报文不再发送ICMP差错报告报文
对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
对具有组播地址的数据报都不发送ICMP差错报告报文
对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
回送请求和回答报文:能否PING通
时间戳请求和回答报文:获得时间戳
掩码地址请求和回答报文
路由器询问和通告报文
PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文
traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文
发送一连串的报文,TTL依次设置为1、2、3……
每到一个新的路由,就有一个数据报生命周期结束
不断接受差错报告报文
每一片的数据部分长度
分为三片:
第一片:
第二片:
第三片:
地址块内主机数: