概述
IPv4分组结构
IP分组由两个部分组成:分组头和数据。
与TCP报文类似,IP分组头的基本单位也为4字节,即分组头的每行宽度为4字节,如下图所示前5行是每个分组头必须有的字段,第6行是选项字段,因此IP分组头的基本长度为5*4=20字节,如果加上最长为40字节的选项,则IP分组头的最大长度为60字节。
可见IP分组头的长度为20-60字节。值得一提的是,TCP报头长度也为20-60字节。
IPv4分组头格式
1、版本字段
即上图中的“版本”,表示网络层IP协议版本号。字段值为4表示IPv4,字段值为6表示IPv6。
2、协议字段
指使用IP协议的高层协议类型,如ICMP、IGMP、TCP、UDP等。
3、长度
长度字段有两个,一个为分组头长度,一个为总长度。
分组头长度字段:该字段长度为4位,定义了以4字节为一个单位的分组头长度,分组头长度为20-60字节,因此该字段最小值为5(20字节),最大值为15(60字节)。
总长度字段:该字段长度为16位,定义了以字节为单位的分组总长度,是分组头长度与数据长度之和。因为16位,所以最大长度为2^16-1。
4、服务字段
占8bit,用于指示路由器如何处理分组。
服务类型字段:延迟D(delay)、可靠性R(reliability)、吞吐量T(throughput)、成本C(cost)
优先级字段:
(1)分组传输时,需要网络提供优先服务
(2)重要服务信息处理等级高于一般服务信息处理等级
5、生存时间字段
生存时间字段又叫TTL,用来设定分组在互联网中的“寿命”,避免分组在网络中无限循环、无休止转发。通常是用转发分组最多的路由器跳数来实现。
设计TTL是用来限制一个分组在互联网中的最大生存时间,TTL的初始值由源主机设置,经过一个路由器,它的值减1。当TTL的值变为0时,分组就被丢弃,并发送ICMP报文通知主机。
6、头检验和字段
长度为16位,用于保证分组头数据完整性,只需要对分组头进行检验和计算而不需要对整个分组进行,因为高层数据会有自己相应的检验字段,检验和的方法和UDP、TCP的检验和类似。
7、地址字段
地址字段包括源地址与目的地址,都是32位。
IP分组的分段与组装
1、最大传输单元与IP分组的分段
IP分组头中,与分组的分段和组装有关字段有标识、标志、段偏移。
每种网络规定数据链路层的帧的数据字段的最大长度称为最大传输单元(MTU)。
不同网络的数据链路层MTU的长度可能不同,因此路由器在接收到分组并准备转发到目的主机时,首先要根据下一个网络的数据链路层MTU,决定该分组在转发之前是否需要分段。当IP分组的长度大于MTU的长度时,就必须对IP分组进行分段。
2、分段方法
如下图所示,根据MTU长度完成分段,并对每一个分段数据添加原来的分组头。
3、标识、标志、段偏移字段
标识字段: 根据标识字段ID值是否相同来判断不同的段是否属于同一个分组,从而确保不会混淆。
标志字段: 结构如下图,DF=1表示不能对分组进行分段,DF=0表示可以分段。MF=1表示不是最后一个分段,MF=0表示接受的是最后一个分段。
段偏移: 表示分段在整个分组中的相对位置,段偏移是以8字节为单位来计数。
具体例子
如下图例子所示:
265为标识,表示同一分组;DF都为0代表可以分段;最后一个分段的MF为0,代表是最后一个分段;偏移量分别为0、100、200,代表偏移了0、800、1600字节。
IP分组头选项
选项用于控制与测试,最大长度为40字节,如果不受4的整数倍要添加填充位。
分组头选项由选项码、长度、选项数据组成。
其中选项码用于确定具体功能,包括源路由、记录路由、时间戳,如下:
1、源路由
指由源主机指定的传输路径,分为严格源路由(SSR)和松散源路由(LSR),前者经过的路由器和路径必须和规定一致,后者除了规定的路由器外中途还可以经过其它路由器。
2、记录路由
将每个路由器的IP地址记录下来。
3、时间戳
记录分组经过每个路由器的本地时间。
最后
以上就是美好方盒为你收集整理的IPv4分组格式(网络层学习笔记)的全部内容,希望文章能够帮你解决IPv4分组格式(网络层学习笔记)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复