为什么在 TCP 三次握手过程中,SYN 和 SYN-ACK 之间的时间间隔相差很大,而 SYN-ACK 和最后一个 ACK 之间的时间间隔相差却很小?
答案1
这是因为您是从发起方进行捕获的。发起方是发出第一个和第三个数据包的设备。因此,第二个和第三个数据包之间的时间差应该是亚毫秒级的。第一个和第二个数据包之间的时间将由网络延迟决定。
更好的比较方法是 1/2 和 3/4 时间增量。它们测量的是同一件事。
答案2
出现这种情况的原因有很多。您测量的差异有多大?您测量的是哪些设备?一个原因可能是第一个数据包触发了网络中 VPN 隧道的建立。另一个原因可能是接收应用程序处理初始 SYN 的时间比处理后续数据包的时间更长。
虽然以上是可能出现这种情况的原因,但根据您评论中的答案,@sysadmin1138 的答案在这种情况下是正确的:您正在捕获发起方,这会将测量结果偏向该方向。如果您要在接收方捕获,则会看到不同的结果:主要是 SYN-ACK 和 ACK 之间的时间会很长。