apache2002 发表于 2004-6-13 16:36:20

求助: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伪首部长度),不知道对不对?

laoa 发表于 2004-6-13 20:31:56

帮不上忙,但我知道一个地方肯定有:《TCP/IP详解》第二卷。
我看过,但不用就忘记了。

sagaeon 发表于 2004-6-13 22:04:42

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]
查看完整版本: 求助:tcp首部校验和问题