二-----IP报头详解
IP报头大小为固定20字节(20B*8=160bit),总共由12部分组成。
1- -version---------版本(占4b,指IP协议的版本)。
feacc178ad6bcda58bedd7edd473e636.png
2- -Header Length---头部长度。(头部长度是指IP报头的总长度,因为有Option可选部分,通常为20字节,在20--60字节)。
该字段单位为32位字(1个32位字为4字节),因此当ip报头长度为1111时是最大60字节;
IP报头长度不是4字节的整数倍是,就需要对填充域进行填充;
常用IP报头长度为20字节---显示为1010。
![](/i/l/?n=22&i=blog/2118541/202210/2118541-20221009152547543-169271835.png)
3-----Differentiated Services Field(type of service)(占8b)--TOS,服务类型。用来指定特殊的报文处理方式,又划分为IP precedenc和D/T/R和reserve保留字段,RFC2474的tos取消了ip precedence字段而使用了DSCP,给QoS用来打标签。
一般情况下不使用这个字段。
![](/i/l/?n=22&i=blog/2118541/202210/2118541-20221009152558038-1432939400.png)
4--Total Length----总长度(占16b)
标示此IP报头和数据的之和的总长度。
总长度16位,一个数据最大长度65535字节;
链路只允许1500字节,超过的话需要进行MTU分片。
一个数据包由IP报头和数据两部分组成,而IP报头为20---60字节,所以不会有一个数据包里纯数据超过1480字节的。
![](/i/l/?n=22&i=blog/2118541/202210/2118541-20221009152619596-124363280.png)
5- -Identification----ID标识符(占16b)
与标记字段和偏移字段用于IP报文分片。
原始报文大小超过MTU(<1480B)就必须将原始数据进行分片,每个分片小于MTU
对同一原始文件被分片的报文打上相同的标记,也用来判断流量是否来于同一主机。
IP软件在存储器中维持一个计数器没生产一个数据包,计数器就加1,并赋予标识字段。
数据报文进行分片处理后每个分片的标识值都与原数据包的标识值相同,接收端具有同标识值的分片就能最终正确重组为原数据。
Idertification(标识字段):
源站没发送一个分组,标识值+1
(源IP地址,标识)------>全网唯一的分组标识。
![](/i/l/?n=22&i=blog/2118541/202210/2118541-20221009152632745-130772348.png)
6- -Flag----标记(占3b)
占3位,目前只有2位具有意义;
第一位没有被使用
第二位D时不分片为(DF),当DF位置为1时表示路由器不能对报文进行分片处理。
第三位M--More fragment---多分片(MF)
当路由器对报文进行分片时,除了最后一个分片的MF位设置为0外,其他所有分片MF位置为1,以便接收者直到收到MF位为0的分片为止。
![](/i/l/?n=22&i=blog/2118541/202210/2118541-20221009152641958-1881785151.png)
7- -Fragmentation offset----分片偏移(13b)
标识分片在分组中的位置。
片偏移以8个字节为偏移单位,分片的长度为8字节的整数倍;
以太网最大帧长为1518B,IP报文1500B(三层)+帧头18B(二层)。
注意:
MTU不是固定1500,这要取决现场物理环境;
MTU不包含帧头帧尾。
![](/i/l/?n=22&i=blog/2118541/202210/2118541-20221009152648283-240730458.png)
8- -Time to live--TTL----生存时间(8b)
跳数大小,即数据包能传多少跳,
不同操作系统TTL的默认最大值会有所不同(linux-255;win98--225;win7/8/10--64);
表示数据包在网络中的寿命(最初以秒为单位,现在以跳数为单位,最大225);
分组寿命,防止路由成环时IP数据被无限转发;
源和目的路由器之间的路由数量(跳数);
路由设备每此转发将TTL值减1,TTL为0时丢弃该分组。
![](/i/l/?n=22&i=blog/2118541/202210/2118541-20221009152655228-683777375.png)
9- -Protocol----协议(8b)
标识数据携带的数据是何种协议,标识传输层地址或协议号
如1代表ICMP,6代表TCP,17代表UDP
10- -Header checksum----报头校验和(16b)
用于校验检查IP报头是否有出入。
只校验IP报头部,数据部分由高层协议校验(TCP头的校验字段包含IP头和数据的校验)
无需重复校验数据部分;
缩短路由器转发分组时的处理时间,数据部分由终端用高层协议校验。
1- 发送方先把校验和字段置为0,对首部中没个16bit(切割多个16b)进行二进制反码求和,结果存在校验和字段中。
2- 收到一份IP数据包后同样对首部中每个16b进行二进制码反求和,接收方计算中包含了发送方存在的首部校验和。
3- 如果传输过程无错误,接收方结算结果全为1,传输中出现错误或数据丢失校验和结果为非全1,接受者第丢弃校验未通过数据。
4- 不生成错误报文,由上层发现丢失数据进行重传。
11- -source ip address----源IP地址(32b)
此数据发起者的IP地址。
![](/i/l/?n=22&i=blog/2118541/202210/2118541-20221009152700516-891490364.png)
12- -Destination ip address----目的IP地址(32b)
此数据的接收者IP地址。
![](/i/l/?n=22&i=blog/2118541/202210/2118541-20221009152710994-875570680.png)
13- -Option----可选字段(0--40B)
Option字段很少使用,用于控制,转发要求,测试等。
————————————————
版权声明:本文为CSDN博主「狄客天行」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42480540/article/details/112088071 标签:IP,字节,ip,报文,校验,头部,分片,报头 From: https://www.cnblogs.com/jiguibu/p/16772300.html