首页 > 编程知识 正文

画图说明ip数据报的格式,ip数据包和数据报一样吗

时间:2023-05-06 21:15:07 阅读:137608 作者:3375

互联网协议(IP )是TCP/IP协议家族中的核心协议,所有TCP、UDP、ICMP和IGMP数据都通过IP数据报传输。 internet是一组允许所有连接到网络的设备相互通信的规则,它提供了提供无连接数据报的最佳服务。 “尽最大努力”意味着不保证IP数据报正常到达目的地,任何可靠性必须由高层(例如TCP )提供; “无连接”意味着IP不维护与网络单元或路由器中的数据报相关的链路状态信息。

IP数据报的报头中的正常IPv4数据报报头大小是20字节,除非有选项存在。 另一方面,IPv6数据报的报头长度被固定为40字节,虽然不存在选项,但IPv6数据报具有扩展报头,可以提供同样的功能。 也称为网络字节序,因为IP数据报是以最高优先级字节序传输的,也是在通过网络传输TCP/IP报头中的所有二进制整数时遵循的字节序。

IP标头字段

IPv4和IPv6的第一个字段是4比特版本字段,包含IP数据报的版本号IPv4为4,IPv6为6。 IPv4标头和IPv6标头相同,除了版本字段的位置相同外。 因此,这两种协议不能直接互操作,主机和/或路由器必须分别处理IPv4和/或IPv6。

IPv4的互联网报头长度(IHL )字段存储IPv4报头中的32位字数。 由于这是一个4位字段,因此IPv4报头限制为最多15个32位字,即60字节。 IPv6中不存在此字段,头部长度固定为40字节。 最初的规范指定了8位服务类型(ToS )字段。 由于它们没有得到广泛使用,因此最终会划分为6位区分服务字段(DS )和2位显式拥塞通知(ECN )字段,这些字段用于数据报传输中的特殊处理。

IPv4总长度字段以字节为单位表示IPv4数据报的总长度。 使用此字段和IHL字段可以了解数据报中的数据部分从何处开始及其长度。 必须指定总长度字段,因为某些具有IPv4数据报的下层协议无法准确表示自己封装的数据报的大小。 由于这是一个16位字段,IPv4数据报的最大长度(包括报头)为65536字节。 可以发送65536字节的IP数据报,但大多数链路层只有将其分割为更小的片才能承载这么大的数据。 如果一个IPv4数据报被划分为多个更小的分片,则每个分片本身仍然是独立的IP数据报,并且总长度字段反映特定的分片长度。 IPv6标头不支持分片。 长度可以从负载长度字段中获取。 此字段提供IPv6数据报长度(标头长度除外),但由于包含扩展标头,因此IPv6的负载长度限制为64KB。

IPv4标识字段有助于标识由IPv4主机发送的数据报。 为了避免混淆一个数据报分片和其他数据报分片,发送主机通常在每次从一个IP地址发送数据时向内部计数器加1,然后将该计数器值复制到标识字段中。 在IPv6中,此字段位于分片扩展标头中。

生存期(TTL )字段用于设置数据报可以通过的路由器数量的上限。 每个路由器在转发数据报时将此值减1,当此字段中的值达到0时,数据报将被丢弃,并通过ICMP消息通知发送方。 这样可以防止出现意外的路由组,使数据报在网络中永远循环。

IPv4报头中的协议字段包含一个数字,用于指示数据报的有效载荷部分的数据类型。 最常用的是17(UDP )和6 ) TCP )。 它提供了多路分解功能,以便IP协议可以用于承载多种协议类型的有效载荷。 IPv6报头的“下一个报头”字段包含IPv4协议字段。 这指示IPv6标头之后的标头类型。

标头校验和字段只存在于IPv4标头中,并且只计算标头。 这意味着IP协议不会检查有效载荷的正确性。 为了确保正确传输了IP数据报的有效载荷部分,其他协议必须使用自己的数据完整性检查机制检查重要数据。 封装在IP中的几乎所有协议(ICMP、IGMP、TCP、UDP )都在其头部包含校验和,以复盖头部和数据,以及IP头部的一部分(“分层违规”的形式) (可能很重要)

每个IP数据报包含发件人的源IP地址和收件人的目标IP地址。 这些用于IPv4的32位地址和用于IPv6的128位地址通常标识计算机的接口,但多播和广播地址不符合此规则。

互联网校验和

IPv4报头校验和算法有时也称为互联网校验和或互联网校验和(Internet CheckSum ),因为大多数其他与互联网相关的协议都使用它。 可以以相当高的概率判断接收到的信息或其一部分是否与发送的信息一致。 与CRC不同,internet校验和算法提供了更强的保护功能。

要为输出的数据报计算IPv4标头校验和,请首先将数据报校验和字段中的值设置为0。 然后为头部计算16位二进制代码。 这16位二进制代码存储在校验和字段中。 具体的步骤是将头部分成几个16比特组,在数据的字节长度为奇数的情况下,在数据末尾追加1字节的0并对齐为偶数,将这些字节串进行逆编码和逆编码计算。 一种实现首先将字节顺序加总并对结果加1,得到可逆编码和。

接收到一个IPv4数据报后,为整个头部计算

一个校验和,包括校验和字段自身的值。即~(消息+校验和)。假设这里没有错误,计算出的校验和值为0(值FFFF的反码)。对于任何不正常的分组或头部,分组中的校验和字段值不为FFFF。因此通过反码加法得到的和不可能为0,除非所有字节都是0,这在任何合法IPv4头部中都不可能出现。

 

DS字段和ECN

 

       区分服务(DS)字段又叫差分服务字段,标识了不同类型的服务(不只是尽力而为的服务)。区分服务(DiffServ)是一个框架和一组标准。IP数据报以某种方式(通过预定义模式设置某些位)被标记,使它们的转发不同于其他数据报,这体现在优先级和服务类型上。这样做可能导致网络中排队延时的增加或减少,以及出现其他特殊效果。DS字段中的数字称为区分服务代码点(DSCP),“代码点”指的是预定义的具有特定含义的位。
       当通过一台具有内部排队流量的路由器时,头部中的2位用于为数据报标记拥塞标识符。当一个被标记的分组被目的节点接收时,有些协议(如TCP)会发现分组被标记并将这种情况通知发送方,发送方随后会降低发送速度,这样可在路由器因过载而被迫丢弃流量之前缓解拥塞。这种机制是避免或处理网络拥塞的方法之一。

 

       DS字段的结构定义如下,前3位DSCP表示类别,接下来2位DSCP表示丢弃概率,这是为了与之前的服务类型(Type of Service,ToS)字段兼容。类别部分基于较早定义的服务类型的优先级子字段,路由器通常先将流量分为不同类别,相同类别还可能有不同的丢弃概率。不同类别的数据报其转发优先级也不同,另外对于相同类型不同丢弃概率的流量,丢弃概率部分的值越高则越先处理(即以较高优先级转发)。

DS字段 DS5DS4DS3DS2DS1DS0(0)ECN (2位)

 

                                                                                        本文内容摘自《TCP/IP详解 卷1:协议(中文版)第2版》

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。