IP首部的校验和字段是怎么计算的?

为了计算一份数据包的IP校验和,首先将校验和字段设置为0。然后,对首部中的每16 bit 进行二进制反码求和(整个首部看成由一串16 bit 的字组成)。结果存在校验和字段中。

当收到一份IP数据报后,同样对首部中每个16 bit 进行二进制反码求和。由于接收方在计算过程中包含了发送方存在首部中的校验和,所以,如果首部在传输过程中没有发生任何差错,那么接收方计算得到的结果应该全为1,否则就是校验和发生错误,该数据报将被丢弃。但不生成差错报文,由上层去发现丢失的数据包并进行重传。

ICMP、IGMP、TCP和UDP都采用这种校验和算法。

还有一个问题就是数据报每经过一个路由器,TTL字段将减1。因此,路由器每次转发数据报的时候还需要将校验和加1。没有对IP首部进行重新计算得到新的校验和。

例:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IP报文首部包含了20字节的固定长度,它包括以下字段: 1. 版本号(Version):4位,表示IP协议的版本号,IPv4为4,IPv6为6。 2. 首部长度(Header Length):4位,表示IP首部长度,由于IP首部包含的选项不确定,该字段用于指示IP首部的长度,单位为4字节,因此该字段的值最小为5,表示首部长度为20字节。 3. 区分服务(Type of Service):8位,用于给IP数据包分类,以便网络设备对不同类别的数据包进行不同的处理。 4. 总长度(Total Length):16位,指示整个IP数据报文的长度,包括首部和数据部分。 5. 标识(Identification):16位,用于标识由源主机发送的数据报文,主要用于分片和重组。 6. 标志(Flags):3位,分别为DF、MF和未使用位。DF表示“不分片”,MF表示“更多分片”,未使用位保留。 7. 分片偏移(Fragment Offset):13位,指示当前分片相对于整个数据报文的偏移量。 8. 生存时间(Time to Live):8位,指示IP数据报文在网络中可以经过的最大路由跳数。 9. 协议(Protocol):8位,指示上层数据报文的协议类型,如TCP、UDP或ICMP等。 10. 首部校验和(Header Checksum):16位,用于检验IP首部的完整性。 11. 源地址(Source Address):32位,指示发送方的IP地址。 12. 目的地址(Destination Address):32位,指示接收方的IP地址。 IP数据报文的首部包含了上述12个字段,其中有些字段是必需的,有些字段是可选的。这些字段的值通过网络传输到目的主机,接收方主机根据这些字段的值来对IP数据报文进行解析和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值