外观
网线被一脚踢断了,TCP 连接会发生什么事情
物理层中断:网线被踢断后,物理链路立即中断。这意味着数据包无法在物理层传输,网络接口(如网卡)会检测到链路状态的变化。
链路层检测:网络接口(如以太网卡)会检测到链路状态的变化,并通知操作系统。操作系统会标记该网络接口为“不可用”状态。
TCP
重传机制启动:对于已经建立的TCP
连接,发送方会定期检查是否收到对方的确认(ACK
)。如果在规定的时间内没有收到确认,TCP
会启动重传机制:重传超时(
RTO
):TCP
会根据往返时间动态计算重传超时时间。如果在RTO
时间内没有收到ACK
,TCP
会重传丢失的数据包。指数退避:如果多次重传仍未收到
ACK
,TCP
会采用指数退避策略,逐渐增加重传间隔时间。
TCP
状态变化发送方:如果连续多次重传失败,
TCP
会进入TIME_WAIT
状态,表示连接已经不可用,但仍在等待最终确认。接收方:如果接收方检测到链路中断,它也会停止发送
ACK
,并进入CLOSE_WAIT
状态,等待上层应用关闭连接。
应用层检测:如果
TCP
连接在多次重传后仍未恢复,操作系统会通知应用程序连接异常。应用程序可以通过以下方式检测到连接中断:读取操作返回错误:如果应用程序尝试从连接中读取数据,操作系统会返回错误(如
ECONNRESET
或ETIMEDOUT
)。写入操作失败:如果应用程序尝试向连接写入数据,
TCP
会返回错误(如EPIPE
或ECONNRESET
)。
连接关闭:最终,
TCP
连接会被关闭。操作系统会清理相关资源,并通知应用程序连接已中断。应用程序需要根据逻辑重新建立连接或采取其他措施。
总结
网线被踢断后,TCP
连接会经历以下过程:
- 物理链路中断。
TCP
重传机制启动,尝试恢复连接。- 如果多次重传失败,
TCP
连接进入等待状态。 - 应用层检测到连接异常。
- 最终,
TCP
连接被关闭。