拔掉以太网电缆时,TCP连接会发生什么?


42

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


9
“到底发生了什么”将很难回答。如今,操作系统可能会做“聪明”的事情,例如检测电缆是否已拔出。从路由表中删除到该网络的路由。通过无线激活新路由,....所有这些都以简单的通用说明的方式进行。
汉尼斯,2015年

5
您是否在位桶中寻找丢失的数据包?
Daniel R Hicks

4
可以肯定发生的一件事是,您的当前通信在as中途中断
ereOn 2015年

这取决于操作系统及其配置。对于MS Windows,请尝试使用google windows mediasense
Zaboj Campula 2015年

Answers:


60

根据在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端口,分配的内存,带宽等),阻塞了服务器资源以供合法用户使用。


7
该模型就是这样说的,但是我相信真正的操作系统会检测到某些故障并立即终止连接。那只是一件有用的事。
usr 2015年

8
@usr为什么仅仅因为有人重启我的PC所连接的以太网交换机,就杀死每个连接有用吗?
CVn 2015年

9
与从物理上拔下电缆或以其他方式断开物理层链接相比,通过OS的管理界面禁用网卡是完全不同的操作。请不要混淆两者。
CVn 2015年

7
此外,如果在断开电缆连接时实际上没有发送任何TCP数据,它将永远不会发出通知。这就是为什么您需要继续发送保持活动消息的原因-仅听过的应用程序永远不会知道连接是否“消失”。从正面来看,这也意味着,如果在拔下电缆时双方都没有尝试发送任何东西,则在重新插入电缆后,连接就可以正常工作。TCP的使用与设计方式有很大不同:)邮件上的TCP-over-Pigeon邮件:))
六安2015年

11
@usr不遵循标准是非常糟糕的实现选择。TCP连接可以在临时网络中断中幸免。它旨在这样做。实际上,过去您甚至可以重新启动计算机,但仍然具有TCP连接,但这并不总是可行的。您认为每个人都想在电缆被拉动时断开连接的假设是错误的,而不是系统的设计方式。
布拉德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.