TCP 连接建立三次握手持续时间 => 与 Ping 时间关系?

TCP 连接建立三次握手持续时间 => 与 Ping 时间关系?

根据:http://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Tcp-handshake.svg/250px-Tcp-handshake.svg.png

1.) 存在 3 种方式的 TCP 建立握手。假设我的 Ping 时间为 100 毫秒,我可以使用 Ping 时间来计算(平均)建立 TCP 连接需要多长时间吗?

2.) 假设我的 Ping 时间为 100 毫秒,那么至少需要 150 毫秒,这样对吗?还是需要 100 毫秒 + 1 微秒(1 微秒用于发送第三个 ACK​​)?或者 ACK 是否已经包含数据?

3.) 我不明白的是(在上图中)客户端何时知道他的第三个 ACK​​ 成功并且他现在可以开始发送常规数据。我完全理解 SYN (1) 然后是 SYN ACK (2) 然后是 ACK (3),但客户端如何知道第三个 ACK​​ 已发送给服务器并且客户端可以开始发送更多信息?还是如上文所假设的那样,第三个 ACK​​ 已经可以包含数据?

非常感谢!Jens

答案1

回答您的第一个问题。

是的,ping 时间可以让您了解建立 TCP 连接所需的时间。

第二个问题。你说得对。如果延迟为 100 毫秒,你的连接时间大约为 300 毫秒。以下是计算结果

  1. 客户端(SYN)-->服务器 = 50ms
  2. 服务器(SYN + ACK)--->客户端 = 50ms
  3. 客户端(ACK +数据)--->服务器 = 50ms

第三个问题。通常客户端发送的 ACK 也包含数据。TCP 具有与之关联的超时值。如果在这段时间内客户端没有收到来自服务器的任何 ACK,它将重新传输数据。第二种情况是客户端正在进行传输。假设客户端发送了 1-10 个数据包,但只收到了 1-7 个数据包的 ACK,那么客户端将从第 8 个数据包开始重新传输。

第二个问题。应该由第一个问题回答

答案2

您可以使用 ping 时间来监控基本连接和链接延迟,但我不会将 ping 与 TCP 连接速度关联起来,因为它使用不同的协议 (ICMP)。特别是一些上游提供商会给予 ICMP 数据包比 TCP 更高的优先级,以产生有利的 ping 时间。

答案3

看一下这一页。三次握手结束后,客户端和服务器都收到了连接的确认。可以开始数据交换了。

相关内容