一、协议栈中的校验和
在IP协议及UDP/TCP协议中都是用了校验和字段,这个字段通常没有人会关注,就好像现在已经没有人知道当时的一个字节中保留的一个校验bit一样。我也是偶尔看我们常用的traceroute功能的时候间接看到了这个字段。traceroute的流程大致是这样的:从1不断的增加IP协议头中TTL字段的数值,期待中间的路由节点发送一个报文过期的ICMP报文,这个流程也是大部分计算机网络资料讲到ICMP协议时都会提到的功能实例。这里其实隐含着一个实现,那就是在IP报文在经过中间的每一跳(hop)时要递减TTL的数值,而这个数值的递减将会导致IP header中校验和字段需要对应的进行调整。这个操作在之前看内核代码的时候通常是直接跳过的,就像开始看代码的时候大部分人会自动跳过引用计数,锁之类的看似不重要但是事实上非常重要、包涵了整个系统重要复杂性的代码。这其实也无可厚非,刚开始看待的时候,大家主要看的就是功能或者是流程性的东西,对于这些周边的功能会自动过滤掉。其中
在IP协议及UDP/TCP协议中都是用了校验和字段,