当前位置:网站首页>TCP连接过程中如果拔掉网线会发生什么?
TCP连接过程中如果拔掉网线会发生什么?
2022-08-10 21:48:00 【TABE_】
TCP连接过程中如果拔掉网线会发生什么?
针对这个问题,要分场景来讨论:
- 拔掉网线后,有数据传输;
- 拔掉网线后,没有数据传输;
拔掉网线后,有数据传输
在客户端拔掉网线后,服务端向客户端发送的数据报文会得不到任何的响应,在等待一定时长后,服务端就会触发超时重传机制,重传未得到响应的数据报文。
如果在服务端重传报文的过程中,客户端刚好把网线插回去了。由于拔掉网线并不会改变客户端的 TCP 连接状态,并且还是处于 ESTABLISHED 状态,所以这时客户端是可以正常接收服务端发来的数据报文的,然后客户端就会回 ACK 响应报文。此时,客户端和服务端的 TCP 连接依然存在的,就感觉什么事情都没有发生。
但如果如果在服务端重传报文的过程中,客户端一直没有将网线插回去。服务端超时重传报文的次数达到一定阈值后,内核就会判定出该 TCP 有问题,然后通过 Socket 接口告诉应用程序该 TCP 连接出问题了,于是服务端的 TCP 连接就会断开。等客户端插回网线后,如果客户端向服务端发送了数据,由于服务端已经没有与客户端相同四元祖的 TCP 连接了,因此服务端内核就会回复 RST 报文,客户端收到后就会释放该 TCP 连接。此时,客户端和服务端的 TCP 连接都已经断开了。
拔掉网线后,没有数据传输
- 如果双方都没有开启 TCP keepalive 机制,那么在客户端拔掉网线后,如果客户端一直不插回网线,那么客户端和服务端的 TCP 连接状态将会一直保持存在。
- 如果双方都开启了 TCP keepalive 机制,那么在客户端拔掉网线后,如果客户端一直不插回网线,TCP keepalive 机制会探测到对方的 TCP 连接没有存活,于是就会断开 TCP 连接。而如果在 TCP 探测期间,客户端插回了网线,那么双方原本的TCP 连接还是能正常存在。
KeepAlive机制:当连接超过一段时间没有数据传输之后,TCP自动发送一个数据为空的报文给对方,如果对方回应了这个报文,说明对方还在线,连接可以继续保持,如果对方没有报文返回,并且重试了多次之后则认为连接丢失,没有必要保持连接。
边栏推荐
- Live Classroom System 08 Supplement - Tencent Cloud Object Storage and Course Classification Management
- LeetCode-402-移掉K位数字
- PPT的两个实用技巧
- 2022年8月的10篇论文推荐
- shell编程之正则表达式与文本处理器
- shell (text printing tool awk)
- Live Classroom System 08-Tencent Cloud Object Storage and Course Classification Management
- xshell (sed command)
- QT笔记——QT工具uic,rcc,moc,qmake的使用和介绍
- Interpretation of the paper (g-U-Nets) "Graph U-Nets"
猜你喜欢

uni-app微信小程序——下拉多选框

阿里巴巴、蚂蚁集团推出分布式数据库 OceanBase 4.0,单机部署性能超 MySQL

String类的常用方法

These must-know JVM knowledge, I have sorted it out with a mind map

RADIUS Authentication Server Deployment Costs That Administrators Must Know

这些不可不知的JVM知识,我都用思维导图整理好了

What is Jmeter? What are the principle steps used by Jmeter?

Alibaba and Ant Group launched OceanBase 4.0, a distributed database, with single-machine deployment performance exceeding MySQL

Live Classroom System 09--Tencent Cloud VOD Management Module (1)

QT笔记——QT工具uic,rcc,moc,qmake的使用和介绍
随机推荐
The Thread State,
美创科技勒索病毒“零信任”防护和数据安全治理体系的探索实践
RTL8721DM 双频WIFI + 蓝牙5.0 物联网(IoT)应用
PPT的两个实用技巧
[Maui official version] Create a cross-platform Maui program, as well as the implementation and demonstration of dependency injection and MVVM two-way binding
测试4年感觉和1、2年时没什么不同?这和应届生有什么区别?
These must-know JVM knowledge, I have sorted it out with a mind map
一篇文章教你Pytest快速入门和基础讲解,一定要看
华为路由器旁挂引流实验(使用流策略)
ENVI自动生成地面控制点实现栅格影像的自动地理配准
Translating scientific and technological papers, how to translate from Russian to Chinese
论文解读(g-U-Nets)《Graph U-Nets》
FPGA - 7系列 FPGA内部结构之Memory Resources -03- 内置纠错功能
LeetCode Daily Question (1573. Number of Ways to Split a String)
【PCBA方案】电子握力测试仪方案she‘ji
水果沙拉酱
艺术与科技的狂欢,阿那亚2022砂之盒沉浸艺术季
Use Cloudreve to build a private cloud disk
Conditional Statements of Shell Programming (2)
LeetCode-36-二叉搜索树与双向链表