首页 > 其他分享 >ip报文头部

ip报文头部

时间:2022-10-09 15:35:37浏览次数:56  
标签:IP 字节 ip 报文 校验 头部 分片 报头

 

 

二-----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。

 

 



3-----Differentiated Services Field(type of service)(占8b)--TOS,服务类型。用来指定特殊的报文处理方式,又划分为IP precedenc和D/T/R和reserve保留字段,RFC2474的tos取消了ip precedence字段而使用了DSCP,给QoS用来打标签。
一般情况下不使用这个字段。

 

 


4--Total Length----总长度(占16b)

标示此IP报头和数据的之和的总长度。

总长度16位,一个数据最大长度65535字节;

链路只允许1500字节,超过的话需要进行MTU分片。

一个数据包由IP报头和数据两部分组成,而IP报头为20---60字节,所以不会有一个数据包里纯数据超过1480字节的。

 

 



5- -Identification----ID标识符(占16b)

与标记字段和偏移字段用于IP报文分片。

原始报文大小超过MTU(<1480B)就必须将原始数据进行分片,每个分片小于MTU

对同一原始文件被分片的报文打上相同的标记,也用来判断流量是否来于同一主机。

IP软件在存储器中维持一个计数器没生产一个数据包,计数器就加1,并赋予标识字段。

数据报文进行分片处理后每个分片的标识值都与原数据包的标识值相同,接收端具有同标识值的分片就能最终正确重组为原数据。

Idertification(标识字段):

源站没发送一个分组,标识值+1

(源IP地址,标识)------>全网唯一的分组标识。

 

 



6- -Flag----标记(占3b)

占3位,目前只有2位具有意义;

第一位没有被使用

第二位D时不分片为(DF),当DF位置为1时表示路由器不能对报文进行分片处理。

第三位M--More fragment---多分片(MF)

当路由器对报文进行分片时,除了最后一个分片的MF位设置为0外,其他所有分片MF位置为1,以便接收者直到收到MF位为0的分片为止。

 

 



7- -Fragmentation offset----分片偏移(13b)

标识分片在分组中的位置。

片偏移以8个字节为偏移单位,分片的长度为8字节的整数倍;

以太网最大帧长为1518B,IP报文1500B(三层)+帧头18B(二层)。

注意:

MTU不是固定1500,这要取决现场物理环境;

MTU不包含帧头帧尾。

 

 



8- -Time to live--TTL----生存时间(8b)

跳数大小,即数据包能传多少跳,

不同操作系统TTL的默认最大值会有所不同(linux-255;win98--225;win7/8/10--64);

表示数据包在网络中的寿命(最初以秒为单位,现在以跳数为单位,最大225);

分组寿命,防止路由成环时IP数据被无限转发;

源和目的路由器之间的路由数量(跳数);

路由设备每此转发将TTL值减1,TTL为0时丢弃该分组。

 

 



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地址。


12- -Destination ip address----目的IP地址(32b)

此数据的接收者IP地址。

 

 



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

相关文章

  • IP编址
    1.IP编址IP地址分为网络部分(用来网络寻址)和主机部分(给主机使用)IP地址由32个二进制组成,通常用点分十进制形式表示网络地址:主机为全为0广播地址:主机位全为12.IP......
  • maxscript 自动寻路
    try(destroyDialogautoFinderRoll)catch()rolloutautoFinderRoll"遍历寻路"( buttonbtnCreateScene"创建场景"width:120 buttonbtnSetGround"设置地面[灰......
  • 报错:禁用了全局ipv6转发,但当前在内核中未禁用
    报错ERROR:[/etc/sysconfig/network-scripts/ifup-ipv6]GlobalIPv6forwardingisdisabledinconfiguration,butnotcurrentlydisabledinkernelERROR......
  • Python zipfile报错问题
    最近用Python来读zip的压缩包。报一个错误。Python2.6.6(r266:84292,Jun182012,14:18:47)[GCC4.4.620110731(RedHat4.4.6-3)]onlinux2Type"help","copyri......
  • Python非root用户启动python multiprocessing的semlock,提示没有权限的解决方法
    使用进程间通信的时候Python报错为<spanstyle="font-size:18px;">Traceback(mostrecentcalllast):File"web_game_sign.py",line483,in<module>count=mu......
  • 浏览器中javascript简易实现json数据保存到客户端
    思路很简单,就是利用Blob、URL.createObjectURL()方法和<a>便签的HTML5新属性download来模拟远端文件下载保存。下面直接上代码savePath:function(){varme......
  • JavaScript异步概念及与c#异步的区别
    JS的异步操作函数往往是通过回调函数来实现异步任务的结果处理,在ES6之前如setTimeout函数和异步AJAX编程;在ES6规范后Promise类对象使得书写异步任务更加容易,返回Promise......
  • pip 安装
    ​​PythonPackageIndex​​ Python包序列,这个软件是PyPA推荐的安装Python包的工具。安装方法:1,进入https://pypi.python.org/pypi/pip官网2,下载压缩包 ​​pip-6.0......
  • linux下解压zip 命令
    ## 基础命令是 unzip 解压在当前目录下,我以解压一个 logstash 的压缩包为例  unziplogstash-7.5.1.zip  ## 解压到指定目录下   这个是常用的,可以看到下......
  • 如何使用JavaScript将Set转换为Array?
    https://blog.csdn.net/m0_66319974/article/details/122436737在JavaScript中,想要将Set(集合)转换为Array数组,可以通过以下方式实现。方法1:使用Array.from()方法Array.......