报文:
03:32:51.745623 IP (tos 0x0, ttl 64, id 65006, offset 0, flags [DF], proto TCP (6), length 94)
10.229.43.200.6471 > 10.229.43.200.55674: Flags [P.], cksum 0x6daa (incorrect -> 0x2e06), seq 1:43, ack 42, win 3635, options [nop,nop,TS val 2699525425 ecr 2699524773], length 42
0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
0x0010: 005e fdee 4000 4006 cf51 0ae5 2bc8 0ae5 .^..@.@..Q..+...
0x0020: 2bc8 1947 d97a 74b5 d8b0 0127 bdc0 8018 +..G.zt....'....
0x0030: 0e33 6daa 0000 0101 080a a0e7 7d31 a0e7 .3m.........}1..
0x0040: 7aa5 0100 6842 0100 0000 0000 0000 2a00 z...hB........*.
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060: 0000 0000 0000 0000 0000 0000
tcpdump -XX
输出的16进制报文各部分的含义:
报文基本信息
03:32:51.745623 IP (tos 0x0, ttl 64, id 65006, offset 0, flags [DF], proto TCP (6), length 94)
10.229.43.200.6471 > 10.229.43.200.55674: Flags [P.], cksum 0x6daa (incorrect -> 0x2e06), seq 1:43, ack 42, win 3635, options [nop,nop,TS val 2699525425 ecr 2699524773], length 42
-
时间戳:
03:32:51.745623
,表示报文捕获的时间。 -
IP头部:
-
tos 0x0
:服务类型字段,值为0,表示常规服务。 -
ttl 64
:生存时间,值为64,表示报文最多可以经过64个路由器。 -
id 65006
:标识字段,用于唯一标识主机发送的每一分组。 -
offset 0
:片偏移字段,值为0,表示该报文不分片。 -
flags [DF]
:不分片标志位,表示该报文不允许分片。 -
proto TCP (6)
:协议字段,值为6,表示上层协议为TCP。 -
length 94
:整个IP报文的长度为94字节。
-
-
TCP头部:
-
Flags [P.]
:标志位,P
表示推送(PSH),.
表示确认(ACK)。 -
cksum 0x6daa (incorrect -> 0x2e06)
:校验和,计算结果为0x6daa,但实际应为0x2e06,表示校验和错误。 -
seq 1:43
:序列号范围,从1到43,表示该报文段包含42字节的数据。 -
ack 42
:确认号,表示期望收到的下一个报文段的序列号为42。 -
win 3635
:窗口大小,值为3635,表示接收方的接收窗口大小。 -
options [nop,nop,TS val 2699525425 ecr 2699524773]
:选项字段,包含两个NOP(无操作)选项和一个时间戳选项,时间戳值为2699525425,时间戳回显值为2699524773。 -
length 42
:TCP数据部分的长度为42字节。
-
16进制报文详细解释
0x0000: 0000 0000 0000 0000 0000 0000 0800 4500 ..............E.
0x0010: 005e fdee 4000 4006 cf51 0ae5 2bc8 0ae5 .^..@.@..Q..+...
0x0020: 2bc8 1947 d97a 74b5 d8b0 0127 bdc0 8018 +..G.zt....'....
0x0030: 0e33 6daa 0000 0101 080a a0e7 7d31 a0e7 .3m.........}1..
0x0040: 7aa5 0100 6842 0100 0000 0000 0000 2a00 z...hB........*.
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060: 0000 0000 0000 0000 0000 0000
0x0000 - 0x000F:以太网头部(如果存在)
-
0000 0000 0000 0000 0000 0000
:目的MAC地址(全0,表示可能是一个原始IP报文,没有以太网封装)。 -
0800
:以太网类型字段,值为0800,表示这是一个IP报文。
0x0010 - 0x001F:IP头部
-
4500
:IP版本和首部长度。4表示IP版本为IPv4,5表示IP头部长度为5个32位字节,即20字节。 -
005e
:总长度,十六进制5e转换为十进制为94,表示整个IP报文长度为94字节。 -
fdee
:标识字段,值为fdee,用于唯一标识主机发送的每一分组。 -
4000
:标志和片偏移字段。4表示不分片(DF位为1),00表示片偏移为0,即该IP报文不分片。 -
4006
:生存时间(TTL)和协议字段。40表示TTL为64,06表示协议为TCP。 -
cf51
:头部校验和,用于检测IP头部在传输过程中是否出现错误。 -
0ae5 2bc8
:源IP地址,转换为点分十进制为10.229.43.200。 -
0ae5 2bc8
:目的IP地址,也是10.229.43.200。
0x0020 - 0x002F:TCP头部
-
1947
:源端口号,十六进制1947转换为十进制为6471。 -
d97a
:目的端口号,十六进制d97a转换为十进制为55674。 -
74b5 d8b0
:序列号,值为74b5d8b0。 -
0127
:确认号,值为0127。 -
bdc0
:数据偏移(高4位)和保留位(中间6位)以及紧急指针字段(低4位)。数据偏移值为b(十进制为11),表示TCP头部长度为11个32位字节,即44字节(包括20字节基本头部和24字节选项部分)。 -
8018
:标志位和窗口大小字段。80表示PSH(推送)和ACK(确认)标志位为1,18表示窗口大小为18(需要乘以2的10次方,即18 * 1024 = 18432,但这里应该是16位的窗口大小字段,直接转换为十进制为20010,可能是表示窗口大小为20010)。
0x0030 - 0x003F:TCP头部(继续)
-
0e33
:检验和,用于检测TCP报文段在传输过程中是否出现错误。 -
6daa
:紧急指针字段,值为6daa,但在这个报文段中紧急指针可能没有实际意义,因为紧急指针字段只有在紧急标志位为1时才有效。 -
0000
:填充字段,用于填充TCP头部,使其长度为整数个32位字节。 -
0101
:选项字段,表示TCP选项的类型和长度。01表示时间戳选项,01表示该选项长度为10字节。 -
080a
:时间戳选项的类型和子类型,08表示时间戳,0a表示时间戳回显。 -
a0e7 7d31
:时间戳值,用于TCP的拥塞控制和往返时间测量等。 -
a0e7 7aa5
:时间戳回显值,用于确认对方发送的时间戳。
0x0040 - 0x004F:TCP数据部分
-
0100
:TCP数据部分的开始,这部分数据的具体含义需要根据上层应用协议来解释。例如,如果这是一个HTTP协议的数据,那么这些字节可能是HTTP请求或响应的一部分内容。 -
6842
:TCP数据部分的继续。 -
0100
:TCP数据部分的继续。 -
0000
:TCP数据部分的继续,后面跟着的多个0000可能是数据的一部分,也可能是填充数据,具体取决于上层协议对数据的格式要求。 -
0000
:TCP数据部分的继续。 -
2a00
:TCP数据部分的继续。
0x0050 - 0x005F:TCP数据部分(继续)
-
0000
:TCP数据部分的继续,后面跟着的多个0000可能是数据的一部分,也可能是填充数据,具体取决于上层协议对数据的格式要求。
0x0060 - 0x006F:TCP数据部分(继续)
-
0000
:TCP数据部分的继续,后面跟着的多个0000可能是数据的一部分,也可能是填充数据,具体取决于上层协议对数据的格式要求。
总结
-
IP头部:20字节,包含IP版本、头部长度、总长度、标识、标志、片偏移、TTL、协议、头部校验和、源IP地址、目的IP地址。
-
TCP头部:20字节基本头部 + 24字节选项部分,包含源端口号、目的端口号、序列号、确认号、数据偏移、标志位、窗口大小、检验和、紧急指针、选项字段。
-
TCP数据部分:42字节,具体内容需要根据上层协议来解释。