首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

TCP中校验和的计算有关问题

2013-06-25 
TCP中校验和的计算问题第一步:cksum(cksum16)+(cksum & 0xffff)第二步:cksum+(cksum16)第一步里面ck

TCP中校验和的计算问题
第一步:cksum=(cksum>>16)+(cksum & 0xffff)
第二步:cksum+=(cksum>>16)

第一步里面cksum>>16 表示取高16位,然后
(cksum & 0xffff)好像没做什么,1还是1,0还是0

第二步里面,chsum已经变了,在左移16位这是要干嘛?

[解决办法]
第一步没做什么?
cksum=0x12345678;
cksum=(cksum>>16)+(cksum & 0xffff)
printf("cksum==%08x\n",cksum);//运行看看输出什么
[解决办法]
cksum=(cksum>>16)+(cksum & 0xffff)
将高16bit与低16bit相加
//
第一步里面cksum>>16 表示取高16位,然后
(cksum & 0xffff)好像没做什么,1还是1,0还是0
楼主的意思是cksum>>16以后不执行cksum & 0xffff时cksum的值就变了,如果是这样理解就错了,
cksum+=(cksum>>16)
将进位到高位的16bit与低16bit再相加

热点排行