ip数据报格式;ip数据报分片

article/2025/9/16 3:34:45

点击打开链接

IPv4数据报格式:

上图表示的数据,最高位在左边,记为0位;最低位在右边,记为31位。在网络中传输数据时,先传输0~7位,其次是8~15位,然后传输16~23位,最后传输24~31位。由于TCP/IP协议头部中所有的二进制数在网络中传输时都要求以这种顺序进行,因此把它称为网络字节顺序。在实际编程中,以其他形式存储的二进制数必须在传输数据前使用网络编程API相应的函数把头部转换成网络字节顺序。

1)版本号:占用4位二进制数,表示该IP数据报使用的IP协议版本。目前Internet中使用的主要是TCP/IP协议族中版本号为4的IP协议。

2)头长度:占用4位二进制位,此域指出整个报头的长度(包括选项),该长度是以32位二进制数为一个计数单位的,接收端通过此域可以计算出报头在何处结束及从何处开始读数据。普通IP数据报(没有任何选项)该字段的值是5(即20个字节的长度)。

3)服务类型(TOS、type of service):占用8位二进制位,用于规定本数据报的处理方式。服务类型字段的8位分成了5个子域:

(1)—优先权(0-7)数越大,表示该数据报优先权越高。网络中路由器可以使用优先权进行拥塞控制,如当网络发生拥塞时可以根据数据报的优先权来决定数据报的取舍。

(2)—短延迟位D(Delay):该位置1时,数据报请求以短延迟信道传输,0表示正常延时。

(3)—高吞吐量位T(Throughput):该位置1时,数据报请求以高吞吐量信道传输,0表示普通。

(4)—高可靠位R(Reliability):该位置1时,数据报请求以高可靠性信道传输,0表示普通。

(5)—保留位。

目前在Internet中使用的TCP/IP协议大多数情况下网络并未对TOS进行处理,但在实际编程时,有专门的函数来设置该字段的各域。一些重要的网际应用协议中都设置了建议使用的TOS值:

从上表可以看出,对于与用户直接交互的应用,一般使用短延时;对于有大量数据需要进行传输的应用,一般选用高吞吐量;对于数据报要传输控制信息的应用,一般选用高可靠性。在数据报的生存期内不支持TOS的,TOS字段就设置为0x00。

4)总长度:占用16位二进制位,总长度字段是指整个IP数据报的长度(报头区+数据区),以字节为单位。利用头部长度字段和总长度字段就可以计算出IP数据报中数据内容的起始位置和长度。由于该字段长度为16位二进制数,因此理论上IP数据报最长可达65536个字节(事实上受物理网络的限制,要比这个数值小很多)。

5)生存时间(TTL,time to live):占用8位二进制位,它指定了数据报可以在网络中传输的最长时间。实际应用中把生存时间字段设置成了数据报可以经过的最大路由器数。TTL的初始值由源主机设置(通常为32、64、128或256),一旦经过一个处理它的路由器,它的值就减1。当该字段为0时,数据报就丢弃,并发送ICMP报文通知源主机,因此可以防止进入一个循环回路时,数据报无休止地传输下去。

6)上层协议:占用8位二进制位,IP协议可以承载各种上层协议,目标端根据协议标识就可以把收到的IP数据报送到TCP或UDP等处理此报文的上层协议了。

常用网际协议编号:

7)校验和:占用16位二进制数,用于协议头数据有效性的校验,可以保证IP报头区在传输时的正确性和完整性。头部检验和字段是根据IP协议头计算出的检验和,它不对头部后面的数据进行计算。

IP校验和主要是用来保证数据(IP报头)的完整性的。它用的算法非常简单, 就是反码求和校验。需要注意的是反码求和又叫1的补码(one'scomplement), 而2的补码就是我们通常说的补码求和了。校验算法具体如下。

  ①发送方

   1)将校验和字段置为0,然后将IP包头按16比特分成多个单元,如包头长度 不是16比特的倍数,则用0比特填充到16比特的倍数;

   2)对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算 是直接丢掉溢出的高位),将得到的和的反码填入校验和字段;

     3)发送数据包。

  ②接收方

   1)将IP包头按16比特分成多个单元,如包头长度不是16比特的倍数,则用 0比特填充到16比特的倍数;

   2)对各个单元采用反码加法运算,检查得到的和是否符合是全1(有的实现可 能对得到的和会取反码,然后判断最终值是不是全0);

对IP首部检验和的算法如下:

       1)把IP数据包的校验和字段置为0;

  2)把首部看成以16位为单位的数字组成,依次进行二进制求和(注意:求和 时应将最高位的进位保存,所以加法应采用32位加法);

  3)将上述加法过程中产生的进位(最高位的进位)加到低16位(采用32位加 法时,即为将高16位与低16位相加,之后还要把该次加法最高位产生的 进位加到低16位)

  4)将上述的和取反,即得到校验和。

为什么TCP/IP的在运输层和网络层都进行差错检测:IP层只对IP首部计算了检验和,而TCP/UDP检验和是对整个报文段进行的;TCP/UDP与IP不一定都必须属于同一个协议栈

8)源地址:占用32位二进制数,表示发送端IP地址。

9)目的地址:占用32位二进制数,表述目的端IP地址。

======================IP数据报分片和重组======================

最大传输单元:(链路层能承载的最大数据量)

IP数据报在互联网上传输时,可能要经过多个物理网络才能从源端传输到目的端。不同的网络由于链路层和介质的物理特性不同,因此在进行数据传输时,对数据帧的最大长度都有一个限制,这个限制值即最大传输单元MTU(Maximum Transmission Unit).

同一个网络上的两台主机之间通信时,该网络的MTU值是确定的,不存在分片问题。分片问题一般只存在于具有不同MTU值的互联网中。由于现在互联网主要使用路由器进行网络连接,因此分片工作通常由路由器负责。

当两台主机之间的通信要通过多个具有不同MTU值的网络时,MTU的瓶颈是通信路径上最小的MTU值,它被称为路径MTU。由于路由选择不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此,路径MTU在两个方向上不一定是一致的,下表是几种常用网络的MTU值:

分片:

把一个数据报为了适合网络传输而分成多个数据报的过程称为分片,被分片后的各个IP数据报可能经过不同的路径到达目标主机。

一个IP数据报在传输过程中可能被分片,也可能不被分片。如果被分片,分片后的IP数据报和原来没有分片的IP数据报结构是相同的,即也是由IP头部和IP数据区两个部分组成:

分片后的IP数据报,数据区是原IP数据报数据区的一个连续部分,头部是原IP数据报头部的复制,但与原来未分片的IP数据报头部有两点主要不同:标志和片偏移:

(1)标志:在IP数据报头部有一个叫“标志”的字段,用3位二进制数表示:

不分片DF(Do not Fragment)标志如果被置1,则数据报在传输过程中不能被分片,如网络连通性测试命令ping就可以用-F参数设置为在数据传输时不分片,但这样当数据不能通过MTU较小的网络时,将产生数据不可达的错误。

片未完MF(More Fragment)标志如果被置1,说明该数据报不是分片后的最后一个数据报,最后一个数据报的该位被置0。

(2)片偏移:IP数据报被分片后,各片数据区在原来IP数据区中的位置用13位片偏移来表示。上图中分片1的偏移为0;分片2的偏移为600;分片3的偏移为1200。实际在IP地址中,由于偏移是以8个字节为单位进行计算的,因而在IP数据报中分片1的偏移是0;分片2的偏移是75;分片3的偏移是150。

重组:

当分了片的IP数据报到达最终目标主机时,目标主机对各分片进行组装,恢复成源主机发送时的IP数据报,这个过程叫做IP数据报的重组。

在IP数据报头部中,标识用16位二进制数表示,它唯一地标识主机发送的每一份数据报。在一个数据报被分片时,每个分片仅把数据报“标识”字段的值原样复制一份,所以一个数据报的所有分片具有相同的标识

目标端主机重组数据报的原理是:

(1)根据“标识”字段可以确定收到的分片属于原来哪个IP数据报;

(2)根据“标志”字段的“片未完MF”子字段可以确定分片是不是最后一个分片;

(3)根据“偏移量”字段可以确定分片在原数据报中的位置。

========================IP数据报选项========================

IP数据报“选项”主要有两大功能:

1)用来实现对数据报传输过程中的控制,如规定数据报要经过的路由;

2)进行网络测试,如一个数据报传输过程中经过了哪些路由器。

IP“选项“域共分为四大类,每类分为若干个选项,每个选项有确定的编号:

IP数据报“选项”由三个部分组成:选项码、选项长度和选项数据。选项码和选项长度各占一个字节,中,选项长度用于确定整个选项部分的长度;选项码又分为复制、选项类和选项号:

复制:占一位,用来控制一个带有选项的IP数据报被分片后对选项的处理方式。该位置1时将选项复制到所有分片中;置0时将选项仅复制到第一个分片中。

选项类和选项号用于确定该选项是哪类选项中的哪个选项,其实就是确定该选项的功能。

1)源路由选择:是指IP数据报在互联网中传输时,所经过的路由是由发出IP数据报的源主机指定的,以区别于数据报在互联网中传输时由路由器的IP层自动寻径所得到的路由。

通过设置源路由选择选项,可以测试网络中指定路由的连通性,以使数据报绕开出错的网络,也可用于测试特定网络的吞吐量。源路由选择可分为两类:严格源路由选择和宽松源路由选择。

(1)—严格源路由选择有发送端规定IP数据报必须经过的路径上的每一个路由器,相邻路由器之间不得有中间路由器,并且所经过的路由器的顺序不可更改。如果一个路由器发送源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源路由失败”的ICMP差错报文。严格源路由选择选项格式如下:

选项码字段为100 01001(0x89),即为0类9号选项。选项长度最大为39,可存放9个IP地址。因为IP头部长度字段只有4位二进制数,所以整个IP头部最长只能包括15(<24)个32位长的字(即60个字节)。由于IP头部固定长度为20字节,选项码、选项长度和指针共用去3个字节,因此剩下60-20-3=37个字节来存放IP地址清单,因而只能存放9个IP地址。

(2)—宽松源路由选择:由发送方指明一个数据报经过的IP地址清单,但是在数据报传输的路径上,在选项中指定的两个IP地址之间可以有其他IP地址的路由器。格式与严格的相同,只是选项码字段值为0x83。

2)记录路由:通过设置记录路由选项,IP数据报就可以记录数据报从源主机传输到目标主机时,所经过路径上的各个路由器的IP地址。记录路由选项的数据格式和严格源路由选择格式相同,但选项码字段值为0x87,指针初值为4,指向存放第一个IP地址的位置。每个路由器的IP地址存入选项的数据区中,指针字段的值也随着增加(从4开始到8,12,16,最大到36),它始终指向下一个存放IP地址的位置。当记录了9个IP地址后,指针字段的值为40,表示数据区已满。

3)记录时间戳:就是IP数据报每经过一个路由器都记下它的IP地址和时间。时间戳中的时间以ms为单位,时间戳取值一般为格林威治时间(UT,Universal Time)自午夜开始计时的毫秒数时间戳选项格式如下:

时间戳选项的选项码是0x44。选项长度表示选项的总长度(一般为36或40),指针指向下一个可用空间的指针(值为5、9、13等)。

“溢出OF”字段表示因时间戳选项数据区空间不够而未能记录下来的时间戳个数;

“标志FL”字段用于控制时间戳选项的格式,取值如下:





http://chatgpt.dhexx.cn/article/7pJjW2m4.shtml

相关文章

3.7计算机网络(IP数据报格式,IP数据报分片,IPv4)

目录 &#x1f353;IP &#x1f347;1.IP数据报格式 &#x1f351;2.IP数据报分片 &#x1f966;3.IPv4 1.分类的IP地址 2.网络地址转换NAT &#x1f9ca;个人主页&#xff1a;个人主页 &#x1f31f;系列专栏&#xff1a;计算机网络专栏 &#x1f353;IP &#x1f347;1…

IP数据报的发送和转发过程

本文主要讲述了 IP 数据报的发送和转发过程&#xff0c;参考&#xff1a;计算机网络微课堂 IP 数据报的发送和转发过程包含以下两部分&#xff1a; 主机发送 IP 数据报路由器转发 IP 数据报 说明&#xff1a;后续举例忽略了 ARP 协议获取目的主机或路由器接口的 MAC 地址的过…

IP数据报头部

1.4位版本号&#xff1a;对于ipv4&#xff0c;其值是4 2.4位头部长度&#xff1a;表示ip的头部有多少4字节。4位最大表示15&#xff0c;因此ip数据报头部最长是60字节 3.16位总长度&#xff1a;以字节为单位。最大的位2^16-1,但是由于MUT的限制&#xff0c;超过MUT的都被分片…

IP数据报报头详解

在IP网络中传输的单位称为IP数据包&#xff0c;它包括IP报头与更高层协议的相关数据。IP数据包的报头至少为20个字节&#xff0c;其中包括版本号,报头长度&#xff0c;服务类型&#xff0c;数据报总长度&#xff0c;标识&#xff0c;标志&#xff0c;片偏移&#xff0c;生存时间…

[计算机网络] UDP数据字段 划分 IP数据报

题目 : 一个UDP用户数据报的数据字段为8192字节。在链路层要使用以太网来传送。 试问应当划分为几个IP数据报片?说明每一个IP数据报片的数据字段长度和 片偏移字段的值。 分析 : 首先我们知道 U D P 数 据 报 首 部 8 字 节 数 据 部 分 UDP数据报首部8字节数据部分 UDP数据…

IP 数据报首部分析

来来来, 爷们. 不是一直说纸上得来终觉浅么. 今咱就抓个数据报具体看一看真实网络中的 IP 报首部. 操作方法很简单, 使用wireshark进行抓包. 抓包后随便找个包看一下就行, 毕竟所有通信的包都需要经过网络层.(同时, wireshark会对协议的相关信息给出标识, 更方便我们查看) 其中…

​IP数据报的格式(计算机网络)

目录 一、IP 数据报由首部和数据两部分组成 二、IP 数据报的分片 三、IP数据报分片实例 四、IP 数据报首部的固定部分中的各字段 五、协议字段的作用 一、IP 数据报由首部和数据两部分组成 版本——占 4 位&#xff0c;指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4…

Wireshark分析IP数据报

Wireshark分析IP数据报 1. IP数据报格式 总概 2. IP数据报首部的固定部分各字段 版本【4位】&#xff1a;IPv4或IPv6首部长度【4位】&#xff1a;单位是32bit&#xff08;4字节&#xff09;&#xff0c;比如&#xff1a;首部最小长度为20字节&#xff0c;此时为&#xff1a;…

IP数据报的格式

IP数据报的格式能够说明IP协议具有什么功能&#xff0c;在TCP/IP的标准中&#xff0c;各种数据格式常以32位&#xff08;4字节&#xff09;为单位来描述。 一个IP数据包有首部和数据两部分组成。首部的前一部分是固定长度&#xff0c;占20字节&#xff0c;是所有IP必须有的。在…

图解IP数据报格式

IP数据报格式详解 IP数据报的首部格式及其内容是实现IP协议的主要功能的基础&#xff0c;因此我们有必要搞清楚这部分的内容。 一个IP数据报由20字节的固定部分和最大40字节的可变部分组成。 ■ 固定部分&#xff1a;指每个IP数据报首部都必须包含的部分。 ■ 可变部分&#…

计算机网络---IP数据报

&#xff08;一&#xff09;IP数据报格式 TCP/IP协议栈 IP数据报格式&#xff1a; 版本&#xff1a;IP协议的版本号 IPv4/IPv6 首部长度&#xff1a;单位是4B&#xff0c;最小为5&#xff0c;以4字节为单位 固定部分20B 区分服务&#xff1a;指示期望获得哪种类型的…

【IP协议(一)】——IP数据报格式及其含义,IP数据报的切分

&#x1f482; 个人主页:努力学习的少年&#x1f91f; 版权: 本文由【努力学习的少年】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 &#x1f680; IP数据报格式 版本&#xff1a;占4位&#xff0c;指…

IP数据报的首部

IP数据报的首部 注&#xff1a;IP数据报的格式&#xff0c;能够说明IP协议都具有什么功能。 1. IP数据报首部——固定部分 1.1 版本 占4位&#xff0c;指IP协议的版本。通信双方使用的IP协议的版本必须一致。IP协议版本号为4(即IPv4)&#xff0c;IP协议版本号为6(即IPv6)…

计算机网络——IP数据报分析

目录 &#x1f6f4;一、IP数据报简介 &#x1f6f9;二、Wireshark抓包分析 &#x1f6f4;一、IP数据报简介 版本&#xff1a;占4比特&#xff0c;表示IP协议的版本。通信双发使用的IP版本必须一致 首部长度&#xff1a;占4比特&#xff0c;表示IP数据报首部的长度。该字段的取…

IP数据报格式详解

IP协议提供不可靠无连接的数据报传输服务&#xff0c;IP层提供的服务是通过IP层对数据报的封装与拆封来实现的。IP数据报的格式分为报头区和数据区两大部分&#xff0c;其中报头区是为了正确传输高层数据而加的各种控制信息&#xff0c;数据区包括高层协议需要传输的数据。 IP…

网络层——IP数据报详解

IP数据报格式 各个字段的分析&#xff1a; 版本 4位    指IP协议的版本&#xff0c;通信双方使用的IP协议版本必须保持一致。主要用两个版本IPV4、IPV6首部长度 4位   4位表示的最大十进制数是15。注意&#xff0c;首部长度字段所表示数的单位是32位&#xff08;也就是4个…

IP数据报

文章目录 前言一、IP数据报的格式1.IP数据报2.数据报中各个字段的意义 二、ICMP&#xff08;Internet控制报文协议&#xff09;1.报文格式2.常见应用 三、ARP协议四、路由表 前言 在前面的学习中我们学习了数据的封装和解封装&#xff0c;了解了封装是从发送端由上向下一层一层…

IPv4数据报的首部格式

版本&#xff1a;占4比特&#xff0c;表示IP协议的版本&#xff0c;通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4 首部长度占4比特&#xff0c;表示IP数据报首部的长度。该字段的取值以4字节为单位。最小十进制取值为5&#xff0c;表示IP数据报首部只有…

EXE4J 错误提醒 Pleasedefine EXE4J_JAVA_HOME to point to an installes 64-bit JDK or JRE

EXE4J 错误提醒 Please define EXE4J_JAVA_HOME to point to an installed 64-bit JDK or JRE 首先查看上一步的提醒&#xff0c;这里显示支持的版本为最小1.8到最大11&#xff0c;而我环境变量配置为13&#xff0c;版本过高 解决办法 1、添加符合版本的jdk 2、升级exe4j …

首次使用exe4j遇见的问题

exe4j安装注册&#xff1a; https://www.cnblogs.com/jepson6669/p/9211208.html 问题一、安装exe4j 问题和解决方法描述&#xff1a; 大概是这个意思&#xff0c;安装这个exe4j需要jvm&#xff0c;你的电脑上要有jdk和jre&#xff0c;并且这个jdk版本必须是1.8~11之间的64…