• IP数据报格式


    在这里插入图片描述

    每一行都由32位比特,即4个字节组成,每个格子称为字段或者域。IP数据报由20字节的固定部分和最大40字节的可变部分组成。

    总长度
    总长度为16个比特,该字段的取值以字节为单位,用来表示IPv4数据报的长度(首部长度+数据载荷长度)最大取值为二进制的16个比特1,即十进制的65535。
    在这里插入图片描述
    tip:IP数据报的分片概念
    在这里插入图片描述

    为了让不同分片知道自己属于同一个IPv4数据报,因此需要
    标识
    标识长度为16个比特,属于同一个IPv4数据报的各分片数据报应该具有相同的标识。IP软件会维持一个计数器,每产生一个IPv4数据报,计数器值就加1,并将此值赋给标识字段。

    标志
    最低位(More Fragment,MF)
    MF=1表示本分片后面还有分片
    MF=0表示本分片后面没有分片
    中间位(Don’t Fragment, DF)
    DF=1表示不允许分片
    DF=0表示允许分片
    最高位为保留位,必须设置为0

    片偏移
    片偏移长度为13个比特,该字段的取值以8字节为单位,用来指出分片IPv4数据报的数据载荷偏移其在原IPv4数据报的位置有多远

    举例:
    在这里插入图片描述

    在这里插入图片描述
    特殊举例:
    在这里插入图片描述
    在这里插入图片描述

    生存时间(Time To Live,TTL)
    长度为8个比特,最大取值为二进制的11111111,即十进制的255。
    生存时间字段后来改为以“跳数”为单位,路由器收到待转发的IPv4数据报时,将其首部中的该字段的值减1,若结果不为0就转发,否则就丢弃。

    在这里插入图片描述
    协议
    长度为8个比特,用来指明IPv4数据报的数据载荷是何种协议数据单元PDU。
    常用的一些协议和相应的协议字段值
    |
    ------|------|—|-||

    协议名称ICMPIGMPTCPUDPIPv6
    协议字段值1261741

    首部校验和
    在这里插入图片描述
    首部检验和
    长度为16个比特,用于检测IPv4数据报在传输过程中其首部是否出现了差错
    IPv4数据报每经过一个路由器,其首部中的某些字段的值(例如生存时间TTL、标志以及片偏移等)都可能发生变化,因此路由器都要重新计算一下首部检验和
    由于网际层并不向其高层提供可靠传输的服务,并且计算首部检验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部检验和,从而更快转发IP数据报。
    两数进行二进制反码求和运算规则:
    从低位到高位逐列计算
    00相加为0
    01相加为1
    11相加为0,进1到下一位
    若最高位相加后产生进位,最后得到的结果要加1

    可选字段
    长度从1字节到40字节不等,用来支持排错、测量以及安全措施等功能。虽然可选字段增加了IPv4数据报的功能,但这同时也使得IPv4数据报的首部长度成为可变的,这就增加了因特网中每一个路由器处理IPv4数据报的开销。
    实际上,可选字段很少被使用

    填充
    当首部长度(20字节固定部分+可变部分)的长度不是4字节整数倍时,填充相应数量的全0字节,以确保IPv4数据报的首部长度是4字节的整数倍。

  • 相关阅读:
    Leetcode(34)——在排序数组中查找元素的第一个和最后一个位置
    JVM内存和垃圾回收-09.对象的实例化内存布局与访问定位
    2023年中国汽车铸造模具竞争现状及行业市场规模前景分析[图]
    一招搞定,终止端口号进程
    【Go入门】struct类型
    深入解析LLaMA如何改进Transformer的底层结构
    教培机构如何线上抢客招生?
    资本视角下的Web3全家桶与Web3语境下的元宇宙
    嵌入式学习的第二天
    前端缓存汇总
  • 原文地址:https://blog.csdn.net/cabbage_hhh/article/details/136603606