校验和
- 用来检测传输的数据是否出错
校验和过程:
-
发送方:
- 将应用层的报文段按16bit为单位求和,如进位就回滚,最后取反(和数据一起发给接收方)
-
接收方
- 将在接收方求得的校验和 与 接受的报文段按16bit求和的结果 相加,如果=1111 1111 1111 1111则正确,反之出错
例子:
应用层报文按16bit求和
1110 0110 0110 0110
+ 1101 0101 0101 0101
= 11011 1011 1011 1011 (回滚就是把多出的最高位单独拿出来与结果相加)
1011 1011 1011 1011
+ 1
= 1011 1011 1011 1100
最后取反
= 0100 0100 0100 0011 (此为校验和,发送方也会传给接收方)
接收方接收到数据和校验和后相加,因为校验和在发送方取反了,所以如果传输过程没有出错的话,相加应该= 1111 1111 1111 1111