为什么三手鲨的ack packed没有sequence number?

why ack packed don't have sequence number when three hand shark?

我用tcpdump 来观察三次握手。 客户端端口是51484,服务器端口是9501

 //connect to server
//three-way handshake
51484 > 9501 : Flags [S], seq 2969626801
9501  > 51484: Flags [S.], seq 587835665, ack 2969626802,
51484 > 9501 : Flags [.], ack 587835666     // <-  why the ack don't 
                                            //    have sequence number ?

//close the connect 
51484 > 9501 : Flags [F.], seq 2969626802, ack 587835666
9501  > 51484: Flags [F.], seq 587835666, ack 2969626803
51484 > 9501 : Flags [.], ack 587835667

我知道:如果条件允许,ack包将包含在其他包中,其中包含一些payload.But为什么在第三步的第三步有效负载为空时,ack包没有序列号- 方式握手?

我的问题是:为什么在三次握手的第三步中ack包没有序列号?

成功的握手通信总是有一个序列号,但实际上,在这种情况下,tcpdump默认不显示相同的。

您可以通过在命令中添加 -vv 或 -vvv 来启用相同功能,以便从可用选项中获得更详细的输出。以下是包含 tcpdump 手册中相关详细部分描述的屏幕截图:

序列号并没有丢失,只是默认情况下,tcpdump 不会在所有数据包中显示它。

如果您使用 tcpdump -S -vvv 或 hexdump 之类的东西,您将看到预期的序列号出现在所有段中。