ipv4协议规定的ip地址(报头结构)

 

IP 协议(Internet Protocol 网际协议)是 TCP/IP 协议族中的核心协议,传输层的 TCP、UDP 等协议数据都通过 IP 数据报封装并传输

IP 协议提供尽力而为无连接的数据报交付服务,其中尽力而为指的是数据不一定会送达目标地址,而无连接指的是 IP 协议不维护网络单元(路由器)中数据报相关的任何链接状态信息,这会使每个数据报独立于其它数据报来处理。

作为一个通信协议,以上两点显然会为信息的传输带来数据的完整性可靠性问题,以及数据报间因为相互独立产生的多路径乱序、重复等问题,并且数据报在传输过程中还可能被复制或者改变内容。但以上这些都不是 IP 协议要考虑的,它的主要职责是跨网络边界分组交换(简单来说就是只负责把数据从源地址传递到目标地址),而这些可靠性必须由上层(如传输层的 TCP 协议)协议提供

IPv4 报头结构

一般标准的 IP 数据报头部大小为 20 Byte,少数包含额外选项的情况下 IP 数据报头部最大可以达到 60 Byte。一个报头由多个部分组成,我们在下文来逐一了解

图 1:IP 数据报头部结构
  • • 版本号:版本号在整个报头的头部,共占 4 位,表示 IP 协议版本,IPv4 用 4 表示,IPv6 用 6 表示,IPv4 与 IPv6 的协议头只有此处一样
  • • IHL:IHL(Internet Header Length)报头长度,共占 4 位,用来标识 IP 头部中有多少份 32 bit 的数据。因为只占 4 位,所以只能表示 15 个数,所以 IP 头部中最多包含 15 个 32 bit 的数据(60 Byte),一般情况下为 5(20 Byte)
  • • DS:区分服务,共占 6 位,表示期望获取哪种类型的服务
  • • ENC:显式拥塞通知,共占 2 位,当网络出现拥塞时会在这里进行标记,标记被某些服务检查到后会通知源主机减缓发送速度
  • • 总长度:标识 IP 数据报的总长度(包含数据部分),共占 16 位,所以每个 IP 数据报包含数据部分最大长度为 216 Byte(65535 Byte、64 MB),通过总长度和 IHL 可以计算出数据部分的大小 
  • • 标识:数据报标识,共占 16 位,主机每产生一个数据报 + 1,数据报分片时,把当前标识号复制给所有分片标识
  • • 标志分片标志信息,共占 3 位,目前只使用前两位,第一位为 MF(More Fragment)值为 1 时代表当前不是最后一个分片,为 0 时表示当前是最后一个分片。第二位为 DF(Don’t Fragment)值为 1 时允许分片,为 0 时不允许分片
  • • 分片偏移分片中的数据偏移量,共占 13 位,表示当前分片在原数据中的偏移量(相对位置)

标识、标志、分片偏移都与分片息息相关,在下文我们会详细了解什么是分片

  • • TTL:标识数据报的生存周期,共占 8 位,代表数据报可经过路由器的上限,数据报每经过一个路由器 TTL 的计数就会减一(会修改报头数据,所以后面提到的校验和也会重新计算),TTL 为 0 后数据报会被丢弃,并使用 ICMP 协议消息通知发送方
  • • 协议:标识上层(传输层)数据部分的协议类型,共占 8 位,通常为 17(UDP)或 6(TCP)
  • • 头部校验和:共占 16 位,仅计算头部校验和,不检查数据报有效载荷(TCP 或 UDP 数据)的正确性,TTL 变化时校验和也必须改变,当头部校验和验证错误时,数据报会被丢弃
  • • 源 & 目标 IP 地址:标识数据报的起始地址与目标地址,每段地址占 32 位

IPv4 数据报分片

在前文我们对 IP 数据报头的各个属性有了一个初步的认识,现在我们来着重了解一下数据报的分片与头部校验和

对 IP 数据报进行分片的目的是把一份 IP 数据报拆分成体积更小的多份分别进行传输,以满足链路层的 MTU(最大传输单元) 限制。而标识标志分片偏移这三个属性的存在为分片后乱序传输的多个数据报的组合复原提供了支持

MTU 以 Byte 为单位,就像公路或隧道的限高,规定了发送端每次发送报文的最大体积。以太网的 MTU 通常为 1500 Byte,接下来我们以一个数据载荷为 4000 Byte 的 IP 数据报为例,结合图 2 来看一下数据报分片是如何进行的

图 2:IP 数据报分片

首先,既然要进行分片那么我们就要知道每份分多大,以 1500 的 MTU 为例,除去报头的 20 Byte 最多还剩 1480 Byte 的数据载荷空间。因为分片大小以 8 为单位,大小必须是 8 的整数倍,所以经过计算(图 3)最大分片大小 d = 1480 Byt,所有数据报分片按最大分片大小 d 进行拆分,最后剩余的数据大小为(总长度)L % d

知道了每个分片数据报多大我们就能知道原数据报需要分片多少份,设份数为 n, 最大分片大小 d 与分片份数 n 的计算方法如下

图 3:最大分片 d,分片个数 n

经过以上计算我们把总长度为 4020 的数据报拆分为以下三个数据报,它们每一个都符合当前 1500 Byte 的 MTU 的限制

图 4:分片

拆分完毕的三个数据报有着同样的标志位,这个值来自于原数据报,用于在接收时标识分片所属的原数据报

接下来看标识位 MF,它代表当前分片是不是原数据报的最后一个分片,所以分片 A、B 的 MF 位为 1,分片 C 的 MF 位为 0

最后是分片偏移,它以 8 位为一个单位来计算,标识当前分片中的数据载荷在原数据中的开始位置,计算方法为:当前分片顺序 i 减 1(开始位置)乘分片大小 d 然后除 8(8 位为一个偏移单位)

图 5:分片偏移

IPv4 头部校验和

头部校验和用来验证 IP 数据报头部数据,在计算时先把当前校验和置零,然后以 16 位为一个单位对其进行二进制反码求和,图 4 为计算与验证的具体过程

图 6:头部校验和

 

原创文章,作者:速盾高防cdn,如若转载,请注明出处:https://www.sudun.com/ask/14767.html

(0)
速盾高防cdn的头像速盾高防cdn
上一篇 2024年3月21日
下一篇 2024年3月22日

相关推荐

  • 如何使用clean my mac来清理你的电脑?

    你是否经常遇到电脑运行缓慢、存储空间不足的问题?想要解决这些烦恼,一款专业的电脑清理软件是必不可少的。今天,我将为大家介绍一款备受好评的电脑清理软件——Clean My Mac。它…

    问答 2024年4月1日
    0
  • 如何使用最小化快捷键提高工作效率?

    在当今互联网时代,随着网络行业的不断发展,工作效率已经成为了衡量一个人能力的重要标准。而如何提高工作效率则成为了每个从业者都必须面对的问题。快捷键作为一种提高工作效率的利器,已经被…

    问答 2024年4月5日
    0
  • 如何实现GEC直接登录?

    你是否曾经在登录网络平台时感到繁琐的账号密码输入?是否希望能够简单快捷地登录各种网站和应用?那么,GEC直接登录就是你的不二选择!它不仅能够让你摆脱繁琐的账号密码输入,还能够带来更…

    问答 2024年4月2日
    0
  • 如何利用gtc挖矿获取更多收益?

    你是否听说过GTC挖矿?或许这个名词对于大多数人来说还是一个陌生的概念。但是随着数字货币市场的持续火热,越来越多的人开始关注起GTC挖矿这一利润丰厚的行业。那么什么是GTC?它又是…

    问答 2024年3月23日
    0

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注