这是一家公司出的面试题, 对其中接收数据包时的校验和部分的计算不太明白, 怎么计算这部分。
-------------------------------------
0 4 8 12
+--------+--------+------+=============+
|SEQUENCE|CHECKSUM|LENGTH| DATA |
+--------+--------+------+=============+
SEQUENCE
数据包序号(大端序)
CHECKSUM (校验和)
32位校验和,计算方式如下:首先将序号和数据拼接在一块,然后以32位为块,进行迭代异或操作。
第一次迭代时,将第一块(数据包序号)与第二块进行异或,第二次迭代时,将第三块与上次迭代的结果进行异或,以此反复。
如果 LENGTH 不是4的整数倍,需要用 0xAB 填充。
LENGTH
数据片段长度(大端序)
DATA
长度为 LENGTH 数据片段
有疑问加站长微信联系(非本文作者)