IP数据报首部检验和的生成与例证
2010-12-13刘烨
刘 烨
(黄冈职业技术学院计算机科学与技术系,湖北黄冈438002)
IP数据报首部检验和的生成与例证
刘 烨
(黄冈职业技术学院计算机科学与技术系,湖北黄冈438002)
IP数据报在经过路由器进行转发时一般要进行三个方面的处理:首部检验、路由选择和数据分片。先前在讲到IP数据报的首部检验时都是一带而过,笔者通过对IP数据报首部检验机制的分析和研究,用案例剖析其原理,便于深入理解和掌握。
IP数据报;首部检验和;原理;例证
1 引言
IP数据报在经过路由器进行转发时一般要进行三个方面的处理:首部检验、路由选择和数据分片。过去我们在讲到IP数据报的首部检验时都是一带而过,笔者通过对IP数据报首部检验机制的分析和研究,用案例剖析其原理,便于深入理解和掌握。
2 IP数据报首部检验的意义
IP数据报在传输过程中并不对其数据区进行校验,这样做的原因有以下两点:
(1)lP协议是一个点对点协议,如果在传输过程中每个点都对数据进行校验操作,势必增加很大的费用,这与IP的“尽力传输”的思想不相符。
(2)将可靠性留给更高的层次去解决,这既可以保证数据的可靠性,又可以得到更大的灵活性和效率。因为IP层的上层传输层是端到端的协议,进行端到端的校验比进行点对点的校验的开销要小得多,在通信线路较好的情况下尤其如此。另外,上层协议可以根据对于数据可靠性的要求,选择是否进行校验,甚至可以考虑采用不同的校验方法,这给系统带来很大的灵活性。
那么IP协议为什么要提供对IP数据报首部的校验功能呢?一方面,IP首部属于IP层协议的内容,不可能由上层协议处理,另一方面,IP首部中的部分字段在点对点的传递过程中是不断变化的,只能在每个中间点重新形成校验数据,在相邻点之间完成校验。
点到点和端到端的校验区间如下图一。
图一 点到点和端到端的校验区间
3 IP数据报首部检验原理
IP数据报的首部通过检验和来保证其正确性。
发送方将IP数据报的首部按顺序分为多个16比特的小数据块,首部检验和字段的初始值设置为0,用1的补码算法对16比特的小数据块进行求和,最后再对结果求补码,便得到了首部检验和。
将经过计算得到的首部检验和填回到数据报的首部检验和字段,封装成帧后发给通往信宿的下一跳设备。
下一跳设备作为接收方将收到的IP数据报的首部再分为多个16比特的小数据块,用1的补码算法对16比特的小数据块进行求和,最后再对结果求补码,若得到的结果为0,就验证了数据报首部的正确性。
发送方用1的补码计算和数时,首部检验和字段被设置为O,等于没有参加计算,求补码后的检验和与原检验和各位正好相反。接收方用1的补码计算和数时,由于新的首部检验和字段已经被加入,在首部未发生变化的情况下所得的和数应该为0xffff,因此,求补码后的结果应该为0x0000。
IP数据报首部检验和的生成与校验过程如下图二。
图二 Ip数据报首部检验和的生成与校验原理
4 Ip数据报首部检验原理的案例分析
下面通过一个具体的案例来剖析IP数据报的首部检验原理。在本例中没有IP选项,所以首部长度为5,数据总长度为128字节,数据报的标识为1,未分片,TTL值为4,封装的是TCP协议数据,源地址和目的地址分别为:192.168.20.86和192.168.2l.20。
图三给出了数据报首部检验和的生成过程,计算中要注意加上进位。生成的检验和为3005。
图三 生成检验和
图四给出了接收方对同一数据报首部进行校验的过程。求补后得到的检验和值为O,表明IP数据报首部在传输过程中没有出现差错。
图四 校验过程
如果接收该数据报的设备不是信宿,它就会将TTL值减1,然后判断TTL是否超时,若未超时,则应根据路由表寻找下一跳路由器,并判断数据报是否需要分片以及是否分片。每次转发数据报时,其TTL值都会发生变化,如果出现分片,数据报总长度、标志和片偏移等字段也会发生变化,因此,对新形成的数据报需要重新计算首部检验和。然后向下一跳转发。
[1]谢希仁.计算机网络(第4版)[M].北京:电子工业出版社,2006:165-168.
[2]史创明,王立新.计算机网络原理与实践[M].北京:清华大学出版社,2006:165-168.
[3]姚永翘.网络基础与Internet应用[M].北京:清华大学出版社,2006:104-108.
A
1672-1047(2010)06-0015-02
10.3969/j.issn.1672-1047.2010.06.04
2010-10-04
刘 烨,男,副教授。E-mail:liuye@hgpu.edu.cn.
[责任审校:金为民]