【问题标题】:How TCP handle packet loss during three-way handshake?TCP如何处理三次握手期间的数据包丢失?
【发布时间】:2020-04-09 22:48:11
【问题描述】:

建立连接时,TCP 使用三次握手。

step 1: client send SYN to server
step 2: server send SYN/ACK to client
step 3: client send ACK to server

但是,在步骤 1、2 或 3 中,数据包可能会丢失。
我有 3 个问题,请帮助我。

  1. TCP 如何处理三次握手期间的数据包丢失?
  2. 有没有办法模拟丢包问题?
  3. TCP 自动处理问题还是开发者也必须处理?

感谢您的建议。

【问题讨论】:

  • 堆栈如何应对这种损失并不重要。它要么执行重新传输,要么什么都不做。您无法控制它,因此堆栈的工作方式无关紧要。您将连接或获取连接超时。这就是你应该关心的全部。

标签: networking tcp network-programming


【解决方案1】:

三次握手期间TCP如何处理丢包?

重传,与任何其他类型的丢包一样。这就是为什么你在握手中有 ACK。

有没有办法模拟丢包问题?

当然可以,但这取决于您的知识。例如,在 Linux 中,可以创建 iptables(防火墙)规则来丢弃一些但不是所有的 SYN 数据包。另见Simulate delayed and dropped packets on Linux

TCP 自动处理问题还是开发者也必须处理?

这对开发者来说是透明的。最多应用程序连接失败(超时)。

【讨论】:

    猜你喜欢
    • 2012-04-04
    • 2011-10-11
    • 1970-01-01
    • 2013-04-22
    • 2017-07-08
    • 2016-05-24
    • 1970-01-01
    • 2016-10-04
    • 2014-12-14
    相关资源
    最近更新 更多