TCP 连接和确认号
TCP connexion and ack number
TCP协议中有些东西我不明白。如果我执行以下操作,只是一个简单的 tcp 连接,使用 tcpdump 捕获:
22:29:20.185032 IP 172.10.10.11.43086 > 172.10.10.21.http: Flags [S],
seq 2173271328, win 29200, options [mss 1460,sackOK,TS val 3615590 ecr
0,nop,wscale 7], length 0
22:29:20.185090 IP 172.10.10.21.http > 172.10.10.11.43086: Flags [S.],
seq 3246536796, ack 2173271329, win 28960, options [mss 1460,sackOK,TS
val 3598763 ecr 3615590,nop,wscale 6], length 0
22:29:20.186088 IP 172.10.10.11.43086 > 172.10.10.21.http: Flags [.],
ack 1, win 229, options [nop,nop,TS val 3615590 ecr 3598763], length 0
为什么最后一个ack是1?不应该是 (3246536796+1) 吗?
它实际上 是 3246536797。TCPDump 支持 -S
选项来使用绝对数字而不是相对数字。您可以通过使用 -x
或 -X
选项查看原始数据包数据来验证这一点。
默认情况下在显示中使用相对数字,以便更容易看到两个节点之间传输了多少字节。在此配置中,在 TCPDump 识别了两个主机和序列号后,它开始仅显示偏移量而不是 header.
中的绝对数字。
TCP协议中有些东西我不明白。如果我执行以下操作,只是一个简单的 tcp 连接,使用 tcpdump 捕获:
22:29:20.185032 IP 172.10.10.11.43086 > 172.10.10.21.http: Flags [S], seq 2173271328, win 29200, options [mss 1460,sackOK,TS val 3615590 ecr 0,nop,wscale 7], length 0
22:29:20.185090 IP 172.10.10.21.http > 172.10.10.11.43086: Flags [S.], seq 3246536796, ack 2173271329, win 28960, options [mss 1460,sackOK,TS val 3598763 ecr 3615590,nop,wscale 6], length 0
22:29:20.186088 IP 172.10.10.11.43086 > 172.10.10.21.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 3615590 ecr 3598763], length 0
为什么最后一个ack是1?不应该是 (3246536796+1) 吗?
它实际上 是 3246536797。TCPDump 支持 -S
选项来使用绝对数字而不是相对数字。您可以通过使用 -x
或 -X
选项查看原始数据包数据来验证这一点。
默认情况下在显示中使用相对数字,以便更容易看到两个节点之间传输了多少字节。在此配置中,在 TCPDump 识别了两个主机和序列号后,它开始仅显示偏移量而不是 header.
中的绝对数字。