ip首部校验和
只检验数据报的首部,不包括数据部分
方法:
在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置0,用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。
接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方的检验和的计算结果。
若首部未发生任何变化,则此结果必为0。
UDP校验和
与IP校验和类似,但UDP的检验和是把首部和数据部分一起都检验。
*在计算检验和时,要在UDP用户数据报之前增加12字节的伪首部。
方法:
在发送方,首先是把全零放入检验和字段。再把伪首部以及UDP用户数据报看成是由许多16位的字符串接起来的。(若UDP用户数据报的数据部分不是偶数个字节,则要填入一个全零字节)。然后按二进制反码计算出这些16位字的和。将此和的反码写入检验和,发送出去。
在接收方,把收到的UDP用户数据报连同伪首部一起,按二进制反码求这些16位字的和。当无差错时其结果应为全1.
TCP校验和
与UDP类似。