求助:tcp首部校验和问题
我用的算法是网上拷贝来的,计算ip首部校验和没有问题,但是计算tcp首部校验和总出错,请各位大侠援手!tcp伪头的结构中:
代码:
uint8 vtcp_hdr[12] = {0x0A, 0x00, 0x00, 0x02, /*src ip*/
0xD8, 0xEF, 0x35, 0x63, /*dst ip*/
0x00, /*mbz*/
0x06, /*protocol type*/
0x00, 0x00/*tcp len*/};
src/dst ip是否就是ip首部中的ip?
mbz这个字段是做什么用的,是不是总是0?
protocol应该就是6吧,
最后一个长度,我是这样理解的:ip首部中的总长度字段值 - 20(ip首部长度,无选项) + 12(tcp伪首部长度),不知道对不对? 帮不上忙,但我知道一个地方肯定有:《TCP/IP详解》第二卷。
我看过,但不用就忘记了。
Re: 求助:tcp首部校验和问题
uint8 vtcp_hdr = {0x0A, 0x00, 0x00, 0x02, /*src ip*/
0xD8, 0xEF, 0x35, 0x63, /*dst ip*/
0x00, /*mbz*/
0x06, /*protocol type*/
0x00, 0x00/*tcp len*/};
src/dst ip是否就是ip首部中的ip? //是
mbz这个字段是做什么用的,是不是总是0?//总为0,没什么原因
protocol应该就是6吧, // 代表携带tcp的协议, 为0x06
最后一个长度,我是这样理解的:ip首部中的总长度字段值 - 20(ip首部长度,无选项) + 12(tcp伪首部长度),不知道对不对?应该是tcp头部+tcp数据的长度,不含伪首部,即去掉那个+12
不对之处再探讨啊 :-D
页:
[1]