对于 TCP 连接,当我拔下电缆并在 30-40 秒后重新连接时,没有数据包丢失问题。但是当重新连接时间超过几分钟时,所有数据包都会丢失。我知道它在重新传输计时器用完时可以正常工作,但我想知道当网线拔掉时到底会发生什么。
答案1
根据分层模型的定义开放系统互连或者TCP/IP每一层都独立工作,并且不知道下层的情况。
当你拔掉电缆时,这是一种物理破坏(第一层),因此几乎立即以太网(第 2 层)检测到信号丢失(如果你使用的是 Windows,你会看到非常可怕的弹出窗口,告知网络断开)
IP(第 3 层) 和 TCP (第 4 层) 不会注意到这一点,所以他们会尽力继续工作。
TCP 不会在一段时间内中断已建立的 TCP 连接,因为当 TCP 发送数据时,它会期待 ACK 回复,如果 ACK 在一段时间内没有到达,它会重新传输数据。
TCP 将会重新传输数据,将其传递给 IP,IP 再将其传递给以太网,以太网无法发送它,因此只能将其丢弃。
TCP 将再次等待并重复此过程,直到发生超时,并宣告连接已结束。TCP 将重置段序列号,丢弃尝试发送的信息,并释放为该连接分配的缓冲区和内存资源。
在发生这种情况之前插入电缆,一切将继续运行。这就是 TCP 可靠但同时又容易受到 DDos 攻击的原因。
如果操作系统有多个接口(例如以太网和 Wi-Fi),则当以太网出现故障时,可能会尝试通过 Wi-Fi。这取决于路由的配置方式,但一般来说“TCP 不会意识到这一点“。
DDoS 攻击的基本结构是:数千个客户端每隔几秒打开一个 TCP 连接,然后断开连接。每个 TCP 连接在服务器上保持打开状态很长时间(浪费宝贵的资产,如 TCP 端口、分配的内存、带宽等),从而阻塞服务器资源,使合法用户无法访问。