Skip to content

Latest commit

 

History

History
26 lines (14 loc) · 1.24 KB

关于ip报文校验和一些思考.md

File metadata and controls

26 lines (14 loc) · 1.24 KB

#关于IP报文校验和一些思考

首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算

##IP报文校验和的计算方式

  1. 为了计算一份数据报的IP检验和,首先需要把检验和字段置为0
  2. 对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16bit的字组成)

##IP报文校验和的校验方式

  1. 收到一份IP数据报后,同样对首部中每个16bit进行二进制反码求和。
  2. 由于接收方在计算中包含了发送方存在首部中的校验和,所以首部在传输过程中没有发生错误的话,那么计算结果将全为1
  3. 如果结果不全为1,那么则说明检验和错误

##路由器对于IP报文的操作

路由器收到IP报文,然后转发之后,是需要对TTL(Time to Live)字段减一,那么这样的话IP报文校验和数值也需要进行相应改变

由前面IP报文校验和的计算方式可以知道,TTL减一,那么为了保证最后校验结果依然正确,所以只需要对校验和加1即可

##补充

ICMP/UDP/TCP都采用和IP校验和相同的检验和算法,虽然TCP和UDP除了本身的首部之外,还会使用IP头部字段的源地址和目标地址