正在计算TCP标头长度



有人能在以下方面指导我吗?

我正试图找出博客malwarejake[.]blogspot.com/2015/05/packet-analysis-practive-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个字节是如何从上面的数据包中派生出来的呢?我不明白。

谢谢!

这是直接来自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字节。

最新更新