IPv4数据报格式及其语义

一、IP数据报的格式如下图所示


版本


首部长度


服务类型


数据报长度


16比特标识


标志


13比特片偏移


寿命


上层协议


首部检验和


32比特源IP地址


32比特目的IP地址


选项(如果有的话)


数据

IPv4数据报格式

二、各部分语义

1)版本(号):4bit,规定了数据包的IP协议版本;通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分

2)首部长度:因为IPV4数据报可包含一些可变数量的选项,所以需要用这4bit来确定首部的长度,以确定IP数据报的数据部分实际从哪里开始。大多数IP数据报不包含选项,所以一般IP数据报具有20字节的首部

3)服务类型:8bit,服务类型包含在首部中以使不同类型的IP数据报能相互区分开来,例如,将实时数据报(如用于IP电话应用)与非实时流量(如FTP)区分开来也许是有用,提供特定等级的服务是一个由路由器管理员决定的策略问题

4)数据报长度:这是IP数据报的总长度(首部加上数据),以字节计,因为该字段长为16bit,所以IP数据报的理论最大长度为65535字节,然而数据报很少有超过1500字节的(因为IP数据还要靠数据链路层运输的,而链路层帧能承载的最大数据量为叫做最大运输单元(Maximum Transmission Unit,MTU))

5)标识、标志、片偏移:

  要理解这三个内容,要先理解一些其他知识

  (1)分片:把IP数据报中的数据分成两个或者更多个较小的IP数据报,用单独的链路层帧封装成较小的IP数据报,每个这些较小的数据报称为片

  (2)为什么要分片:因为每个IP数据报封装在链路层帧中从一台路由器传输到下一台路由器,而链路层帧能承载的最大数据量(最大运输单  元(Maximum Transmission Unit,MTU)是一定的,故链路层帧严格限制着IP数据报的长度;而且发送方和与目的路径上的每段链路可能使用不同的链路层协议,且每种协议可能具有不同的MTU,所以就更有可能需要分片了,以便能够使得数据报能够顺利的传递数据报

  (3)组装:目的主机从相同源收到一系列数据报时,需要确定哪些数据报是分片,如果是分片的话,还要进一步指导何时收到最后一个分片,如何将接收到的分片拼接起来以形成初始的数据报,故IPV4的设计者将标识、标志和片偏移字段放在IP数据报首部中,当生成一个数据报时,发送主机为该数据报设置源和目的地址的同时,再填上标识号

标识:16bit,源主机发送IP数据报的时候,通常为它发送的每个数据报的标识号加1,所以当某个路由器需要对某一个数据报分片时,形成的每个数据报(分片)具有初始数据报的源地址、目的地址、与标识号,这样目的主机就可以判别哪些分片是属于一个初始数据报的

标志:3bit,由于IP是一种不可靠服务,一个或者多个片可能永远到不了目的地,所以为了让目的主机绝对的相信它已经收到了初始数据报的最后一个片,最后一个片的标志比特被设置为0,而所有其他片的标志比特被设置为1

片偏移:13bit,标示数据相对于初始数据报的偏移值,并且偏移值应当被规定以8字节块为单位。所以除了最后一个片的所有初始有效载荷数据的数量应当是8字节的倍数

6)寿命:8bit,寿命(Time-To_Live ,TTL )字段是用来确保数据报不会永远(如由于长时间的路由选择环路)在网络中循环,每当数据报由一台路由器处理时,该字段的值减1。若TTL字段减为0,则该数据报必须丢弃。

7)协议:8 bit,该字段仅当一个IP数据报到达其最终目的地才会有用,改字段指示了IP数据报的数据部分应交给哪个特定的运输层协议,如:值为6应该交给TCP,而值为17表示数据部分要交给UDP ,其他可能值查看   https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml

8)首部检验和: 16bit,首部检验和用于帮助路由器检测收到的IP数据报中的比特错误。首部检验和是这样计算的:将首部中的每2个字节当做一个数,用反码运算对这些数求和;具体到发送方或接收方计算如下:

  在发送数据时,为了计算IP数据包的校验和。应该按如下步骤:
  (1)把IP数据包的校验和字段置为0;
  (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和;
  (3)把得到的结果存入校验和字段中。
     在接收数据时,计算数据包的校验和相对简单,按如下步骤:
  (1)把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段;
  (2)检查计算出的校验和的结果是否等于零(反码应为16个0);
  (3)如果等于零,说明被整除,校验和正确。否则,校验和就是错误的,协议栈要抛弃这个数据包。

路由器要对每个收到的IP数据报计算其首部检验和,如果数据报首部中携带的检验和与计算得到的检验和不一致,则检验出是个差错,路由器一般会丢弃检测出错误的数据报

9)源和目的IP地址:32bit,当某源生成一个数据报时,在这两个字段中插入发送主机的IP地址和目的地的IP地址,通常源主机DNS查找来决定目的地址

10)选项:32bit,选项字段允许IP首部被扩展。首部选项意味着很少使用,因此决定对每个数据报首部不包括选项字段的信息,这样能够节约开销,但是因为有些数据报有选项,有些数据报没有选项,故导致一台路由器处理一个IP数据报所需的时间变化很大。

11)数据(有效荷载):32bit,这是数据报存在的首要理由!大多数情况下,IP数据报中的数据字段包含要交付给目的地运输层报文段(UDP或TCP)

注:注意到一个IP数据报有总长为20字节的首部(假设无选项)如果一个数据报承载一个TCP报文,则每个(无分片的)数据报共承载了总长40字节的首部(20字节的IP数据报加上20字节的TCP首部)以及应用文报文

三、关于标识、标志、片偏移的例子

  假设一个4000字节的数据报(20字节加上3980字节IP数据有效荷载)到达路由器,且必须被转发到一条MTU为1500字节链路上,该如何进行分片?

  答:初始数据报会被分为3个片,其中的每个片也是一个IP数据报,假定该数据报的发送时,主机给予的标识号为777,三个片的特点如下:



字节


ID


偏移


标志


第一片


1480


ID=777


Offset=0


Flag=1


第二片


1480


ID=777


Offset=185


Flag=1


第三片


1020(3980-1480*2)


ID=777


Offset=370


Flag=0

注:此时就需要4040个字节来运输初始数据报,所以分片是需要开销的

原文地址:https://www.cnblogs.com/alphabetical/p/11079902.html

时间: 2024-10-10 21:23:45

IPv4数据报格式及其语义的相关文章

IPv4数据报格式

网络层的分组为数据报,数据报为首部和数据两部分组成,如下图所示. 首部的长度是以4个字节为单位,长度可以是20-60字节,这跟首部的HLEN字段有关. 版本: 这个4位字段定义了IP协议的版本,目前主流的版本是4. 首部长度: 这个4位字段定义了数据报首部的长度,以4字节的字为单位. 当首部没有选项时,首部长度位20字节:当这个字段值位最大值F时,首部长度最大为60字节. 服务类型: 在最初这个字段有一部分用于定义数据报的优先级,剩下的一部分定义了服务类型.IETF已经改变了这个8位字段的解释,

IPv4与IPv6数据报格式

IPv4: IPv4数据报中的字段: 版本号:规定了数据报的IP协议版本,通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分,因为不同IP版本使用不同的数据报格式. 首部长度:IPv4数据报可能包含一些可变数量的选项,这些选项包括在数据报的首部,所以需要用这 4比特来确定IP数据报中数据部分实际从哪里开始.由于大多数IPv4数据报不包含选项,所以一般的IPv4数据报具有20字节的首部. 服务类型TOS:用于区别不同类型的IPv4数据报,它们可能要求低时延.高吞吐量或可靠性. 总长度:这是

MAC帧格式,IP数据报格式和ARP数据报格式

MAC帧格式: 以太网帧格式由5个字段组成,前两个字段分别是6字节长的目的地址和源地址字段,是指网卡的硬件地址(MAC地址).第三个字段是2字节的类型字段,用来标识上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议.例如,当类型字段的值是0X0800时,就表示上层使用的是IP数据报.第四个字段是数据字段,其长度在46~1500字节之间.最后一个字段是4字节的帧检验序列FCS(CRC检验).最大值1500称为以太网的最大传输单元(MTU),如果数据报长度大于这个长度,需要对数

以太网帧、TCP与UDP段以及IP数据报格式总结

传输层及其以下的机制由内核提供,是操作系统的一部分,应?层由?户进程提供应?层数据通过协议栈发到?络上时,每层协议都要加上?个数据?部(header),称为封装.不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在?络层叫做数据报(datagram),在链路层叫做帧(frame). 1.以太网帧格式 ?源地址和?的地址是指?卡的硬件地址(也叫MAC地址),长度是48位,是在?卡出?时固化的.Linux下可以?ifconfig命令看?下,"HWaddr 00:15:F2:14:9

IP数据报格式,路由表

IP数据报格式 MTU最大传输单元:数据帧中的有效载荷的最大长度,不包括首部的长度,若大于MTU,则需要分片,分片是由IP层完成的.组装也是由IP层自行完成. 在IP分组头中,与分组的分片与组长有关的字段有:16位标识,3位标志,13位片位移 16位标识: 分组可能通过不同的传输路径到达目的主机.属于同一分组的不同片会出现乱序,或者与其他分组混合在一起.若将属于一个分组的所有片分配一个标识值ID,则目的主机可根据标识值将属于同一分组的片挑出来,重新组装.标识ID是片识别的标记. 3位标志: 标志

Linux 网络编程——TCP 和 UDP 数据报格式详解

TCP 报文格式 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. TCP 报文段的报头有 10 个必需的字段和 1 个可选字段.报头至少为 20 字节.报头后面的数据是可选项. 1)源端口(16位) 标识发送报文的计算机端口或进程.一个 TCP 报文段必须包括源端口号,使目的主机知道应该向何处发送确认报文. 2)目的端口(16位) 标识接收报文的目的主机的端口或进程. 3) 序号(也叫序列号)(32位) 用

计算机网络(3)-----IP数据报格式

IP数据报(IP Datagram) 格式 解析 (1)版本 占4位,指IP协议的版本.通信双方使用的IP协议版本必须一致.目前广泛使用的IP协议版本号为4(即IPv4). (2)首部长度 占4位,可表示的最大十进制数值是15.请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节.当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充.因此数据部分永远在4字节的整数倍开始,这样在实现I

ARP数据报格式

ARP协议的作用 怎么做 3. 每台主机都维护一个ARP缓存表,可以用arp -a命令查看. 4. ARP数据报的格式 前14个字节为以太网首部,以太网目的地址和以太网源地址为MAC地址,源地址已知,目的地址未知,用ff ff ff ff ff ff 填充,类型指上层协议类型,有3种--IP(0800).ARP请求/应答(0806).RARP请求/应答(8035) 后28个字节,以ARP请求/应答为例 a. 硬件类型指链路层网络类型,1为以太网 b. 协议类型指要转换的地址类型,0x0800为I

IP数据报格式 及路由转发算法

ip数据报分首部和数据两部分组成: 首部分为固定部分和可变部分 版本——占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 首部长度——占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节) 因此 IP 的首部长度的最大值是 60 字节. 区分服务——占 8 位,用来获得更好的服务 在旧标准中叫做服务类型,但实际上一直未被使用过. 1998 年这个字段改名为区分服务. 只有在使用区分服务(DiffServ)时,这个字段才起作用. 在一般的情况下都不