计算TCP标头长度?

时间:2018-11-27 14:33:53

标签: networking tcp frame wireshark network-protocols

有人可以指导我以下内容吗?

我正在尝试找出答案,如在Blog恶意软件jake [。] blogspot.com/2015/05/packet-analysis-practice-part-3.html中的第一个问题中所示。

根据找到的样本包

什么是嵌入式协议,目标端口以及不包括协议头的数据量?

    0x0000:  4500 004c 1986 4000 4006 9cba c0a8 0165
    0x0010:  c0a8 01b6 0015 bf3c dad0 5039 2a8c 25be
    0x0020:  8018 0072 06ec 0000 0101 080a 008a 70ac

以上问题的答案如上所述。

    Embedded protocol: TCP
    Total packet length:  76
    IP Header length:  20
    Protocol header length: 32
    Data length: 24
    Dest Port: 0xbf3c (48956)

除了协议头长度数据长度外,我设法获得了所有其他答案。

TCP标头长度通常不是20个字节,扩展名最多为40个字节吗?但是如何从上述数据包中导出32个字节?我不明白

谢谢!

1 个答案:

答案 0 :(得分:1)

这是直接来自RFC的TCP标头:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Source Port          |       Destination Port        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Sequence Number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Acknowledgment Number                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Data |           |U|A|P|R|S|F|                               |
   | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
   |       |           |G|K|H|T|N|N|                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Checksum            |         Urgent Pointer        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

0015bf3c是端口。 值dad0 50392a8c 25be是序列号/确认号。

现在看看接下来的4位。偏移为0x20的那些。字节的值为0x80,这意味着最高的4位为1000。它们对应于“数据偏移量”字段:

  

数据偏移:4位

     

TCP头中的32位字的数量。这表明在哪里     数据开始。 TCP标头(甚至包括选项在内)是一个     整数的32位长。

所以1000意味着标题由8 x 32位字组成,这意味着8 x 4字节= 32字节。