做啤酒行业的网站,国家住房和城乡建设局网站首页,加工平台搭设规范要求,青海住房与城乡建设厅网站文章目录 IPv4数据报的首部格式IPv4数据报分片生存时间 TTL字段协议字段首部检验和字段 IPv4数据报的首部格式
IPv4 数据报的首部格式及其内容是实现 IPv4 协议各种功能的基础。
在 TCP/IP 标准中#xff0c;各种数据格式常常以32比特(即4字节)为单位来描述 固定部分#x… 文章目录 IPv4数据报的首部格式IPv4数据报分片生存时间 TTL字段协议字段首部检验和字段 IPv4数据报的首部格式
IPv4 数据报的首部格式及其内容是实现 IPv4 协议各种功能的基础。
在 TCP/IP 标准中各种数据格式常常以32比特(即4字节)为单位来描述 固定部分每个 IPv4 数据报都必须要包含的部分 某些 IPv4 数据报的首部除了包含 20 字节的固定部分还包含一些可选的字段来增加 IPv4 数据报的功能 版本长度为 4 个比特用来表示 IP 协议的版本通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议的版本号为4(即IPv4) 首部长度长度为4个比特该字段的取值以4字节为单位用来表示IPv4数据报的首部长度总是4的整数倍。 最小取值为二进制的 0101即十进制的5再乘以4字节单位表示IPv4数据报首部只有20字节固定部分。 最大取值为二进制的 1111即十进制的15再乘以4字节单位表示IPv4数据报首部包含20字节固定部分和最大40字节可变部分。 可选字段长度从1字节到40字节不等用来支持排错测量以及安全措施等功能。虽然可选字段增加了 IPv4 数据报的功能但这同时也使得 IPv4 数据报的首部长度成为可变的这就增加了因特网中每一个路由器处理 IPv4 数据报的开销。实际上可选字段很少被使用。 填充用来确保 IPv4 数据报的首部长度是4字节的整数倍使用全0进行填充。当首部长度20字节固定部分可变部分的长度不是 4字节 整数倍时填充相应数量的全0字节以确保 IPv4 数据报的首部长度是 4字节 的整数倍。 区分服务长度为 8 个比特用来获得更好的服务该字段在旧标准中叫作服务类型但实际上一直没有被使用过。1998年因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同取值可提供不同等级的服务质量。只有在使用区分服务时该字段才起作用一般情况下都不使用该字段。 总长度长度为16个比特该字段的取值以字节为单位用来表示IPv4数据报的长度首部长度数据载荷长度。最大取值为二进制的 16 个比特1即十进制的65535很少传输这么长的IPv4数据报) 源IP地址长度为32比特用来填写发送 IPv4 数据报的源主机的 IPv4 地址。 目的IP地址长度为32比特用来填写接收 IPv4 数据报的目的主机的 IPv4 地址。
IPv4数据报分片
IPv4 数据报中的标识、标志、片偏移部分共同用于IPv4数据报分片 当 IPv4 数据报长度超过 MTU最大传输单元Maximum Transmission Unit 时无法封装成帧需要将原 IPv4 数据报分片为若干个更小的IPv4数据报再将分片后的IPv4数据报封装成帧。 标识长度为 16 个比特属于同一个IPv4数据报的各分片数据报应该具有相同的标识。IP 软件会维持一个计数器每产生一个 IPv4 数据报计数器值就加1并将此值赋给标识字段。 标志 最低位(More FragmentMF) MF 1表示本分片后面还有分片MF 0表示本分片后面没有分片 中间位(Don’t FragmentDF) DF 1表示不允许分片DF 0表示允许分片 最高位为保留位必须设置为0 片偏移长度为13个比特该字段的取值以8字节为单位用来指出分片IPv4数据报的数据载荷偏移其在原IPv4数据报的位置有多远。
某个 IPv4 数据报总长度为 3820 字节采用 20 字节固定首部根据数据链路层要求需要将该 IPv4 数据报分片为长度不超过 1420 字节的数据报片 确定原始数据报的大小原始 IPv4 数据报的总长度是 3820 字节。其中包括 20 字节的 IP 首部。 计算有效载荷的大小有效载荷的大小 总长度 - IP首部长度 3820 - 20 3800 字节。 确定每个分片的最大大小根据题目要求每个分片的大小不能超过 1420 字节。每个分片包含 20 字节的 IP 首部和最多 1400 字节的有效载荷。 计算所需的分片数量 第一分片从第 0 到第 1399 字节共1400字节第二分片从第 1400 到第 2799 字节共1400字节第三分片从第 2800 到第 3799 字节共1000字节 设置分片信息 分片标识 (Identification)保持不变设为 23333。 MF标志位 (More Fragments)除最后一个分片外的所有分片都设为1表示还有更多分片。最后一个分片设为0。 DF标志位 (Don’t Fragment)所有分片都设为0因为已经进行了分片操作。 片偏移 (Fragment Offset)以8字节为单位第一个分片为0第二个分片为 1400 8 175 \frac{1400}8 175 81400175 第三个分片为 2800 8 350 \frac{2800}8 350 82800350。 总结分片信息
分片编号总长度字节标识MFDF片偏移120 140023333100220 14002333310175320 10002333300350
通过以上步骤我们可以将原始的 3820 字节 IPv4 数据报成功地分成三个符合要求的分片。
生存时间 TTL字段
生存时间Time To LiveTTL长度为 8 个比特最大取值为二进制的11111111即十进制的 255。该字段的取值最初以秒为单位。因此IPv4 数据报的最大生存时间最初为 255 秒。路由器转发 IPv4 数据报时将其首部中该字段的值减去该数据报在路由器上所耗费的时间若结果不为 0 就转发否则就丢弃。
生存时间字段后来改为以“跳数”为单位路由器收到待转发的IPv4数据报时将其首部中的该字段的值减1若结果不为0就转发否则就丢弃。
生存时间字段可以防止被错误路由的IPv4数据报无限制地在因特网中兜圈。 协议字段
协议长度为8个比特用来指明 IPv4 数据报的数据载荷是何种协议数据单元PDU。
常用的一些协议和相应的协议字段值
协议名称协议字段值ICMP1IGMP2TCP6UDP17IPv641OSPF89
首部检验和字段
首部检验和长度为16个比特用于检测 IPv4 数据报在传输过程中其首部是否出现了差错。IPv4数据报每经过一个路由器其首部中的某些字段的值(例如生存时间 TTL、标志以及片偏移等)都可能发生变化因此路由器都要重新计算一下首部检验和。
首部检验和的计算方法 上述检验和的计算方法不仅用于IP协议还用于运输层的用户数据报协议 UDP 和传输控制协议 TCP常被称为因特网检验和(Internet Checksum)。这种检验和的检错性能虽然不如 CRC 循环冗余校验但更易用软件实现。
首部检验和计算的重点在于二进制反码求和的运算两个数进行二进制反码求和的运算规则是从低位到高位逐列进行计算
0 和 0 相加是 00 和 1 相加是 11 和 1 相加是 0但要产生一个进位 1加到下一列若最高位相加后产生进位则最后得到的结果要加 1将最终结果取反码得到检验和。
由于网际层并不向其高层提供可靠传输的服务并且计算首部检验和是一项耗时的操作因此在 IPv6 中路由器不再计算首部检验和从而更快转发IP数据报。