在讲UDP的校验和计算之前,先需要明确一件事情:在计算UDP报文的Checksum之前,我们需要在UDP报文段的头部之前,加入一个“伪头部”。
UDP报文段伪头部+头部+数据段
如上图所示,对于运行在IPV4协议之上的UDP协议,其伪头部为红色部分所示。
为何称之为“伪头部”?原因是,UDP协议只使用它来辅助计算校验和,它并不是发送IP数据包时使用的IP数据包的头部。
在《计算机网络:自顶向下方法》这本书的中译版本中,对于UDP校验和的计算讲解不算很清楚。其实,计算方法很简单:
当接收到UDP报文时,需要如何检验其正确性?方法就是将UDP报文中包括校验和在内的,所有的16位的数相加,如果低16位全为1,则没有出错。否则表明该分组中出现了错误。
需要注意,UDP对差错具有一定的校验能力,但缺少差错恢复的能力。