当我移除以太网电缆时,TCP 连接会发生什么情况?

Inp*_*t J 45 networking connection tcp

对于 TCP 连接,当我移除电缆并在 30-40 秒后重新连接时,没有丢包问题。但是当重新连接时间超过几分钟时,所有数据包都丢失了。我知道它可以在重传计时器用完的情况下工作,但我想知道拔掉网络电缆时到底发生了什么。

jcb*_*rmu 65

根据OSITCP/IP等分层模型的定义,每一层独立工作并且不知道较低层。

当您移除电缆时,这是物理中断(第 1 层),因此以太网(第 2 层)几乎立即检测到信号丢失(如果您使用的是 Windows,您会看到非常可怕的弹出窗口,通知网络已断开连接

IP(第 3 层)和 TCP(第 4 层)不会注意到它,因此它们会尝试继续工作。

TCP 不会在一段时间内中断已建立的 TCP 连接,因为当 TCP 发送数据时,它期待一个 ACK​​ 回复,如果它在一段时间内没有到达,它会重新传输数据。

TCP 将重新传输数据,将它传递给 IP,谁将它传递给以太网,谁无法发送它并简单地丢弃它。

TCP 将再次等待并重复这个过程,直到超时发生,让它声明连接结束。TCP 重置段序列号,丢弃试图发送的信息,并释放为该连接分配的缓冲区和内存资源。

在它发生之前插入电缆,一切都会继续进行。这就是 TCP 可靠且同时容易受到 DDos 攻击的原因。

如果操作系统有多个接口(例如,以太网和 wi-fi),当以太网出现故障时,它可能会尝试通过 wifi。这取决于路由的配置方式,但一般来说“ TCP 不会意识到这一点”。

DDoS 攻击的基本结构是:数千个客户端每隔几秒钟打开一个 TCP 连接到服务器,然后放弃连接。在很长一段时间内,每个 TCP 连接在服务器上保持打开状态(浪费宝贵的资产,如 TCP 端口、分配的内存、带宽等),从而堵塞服务器资源以访问合法用户。

  • @usr 不遵循标准是一个非常糟糕的实现选择。TCP 连接可以在暂时的网络中断中幸存下来。它旨在这样做。事实上,过去您甚至可以重新启动计算机并仍然具有 TCP 连接,但这并不总是可行的。您认为当电缆被拔出时每个人都希望断开连接的假设是错误的,这不是系统的设计方式。 (11认同)
  • @usr 通过操作系统的管理界面禁用网卡与物理拔下电缆或以其他方式断开物理层链接相比,是完全不同的操作。请不要混淆两者。 (10认同)
  • 此外,如果您在电缆断开连接时实际上没有发送任何 TCP 数据,它*永远*不会注意到。这就是为什么您需要不断发送保持活动的消息 - 只听过的应用程序永远不会知道连接是否“死亡”。从好的方面来说,这也意味着如果在拔下电缆时双方都没有尝试发送任何内容,则在重新插入电缆后连接将正常工作。 TCP 的使用方式与其设计方式大不相同:) 记住TCP-over-Pigeon-mail 实验 :)) (9认同)
  • @usr 为什么仅仅因为有人对我的 PC 所连接的以太网交换机重新通电而终止每个连接会有用? (8认同)
  • 这就是模型所说的,但我相信真正的操作系统会检测到*一些*故障并立即终止连接。这只是一件有用的事情。 (7认同)