当前位置:网站首页>关于TCP连接四次握手(或者叫四次挥手)的详细总结
关于TCP连接四次握手(或者叫四次挥手)的详细总结
2022-06-25 03:58:00 【生活甜甜好运连连】
四次挥手的过程:
(客户端 || 服务器均可主动发起挥手动作。 假设客户端先发起挥手动作(关闭请求)。假设将客户端视为主动方,服务器视为被动方。)
| 第一次挥手 | 第二次挥手 | 第三次挥手 | 第四次挥手 |
From A to B | 客户端 → 服务器 | 服务器 → 客户端 | 服务器 → 客户端 | 客户端 → 服务器 |
状态 | 客户端: ESTABLISHED→ FIN_WAIT1 | 服务器: ESTABLISHED→ CLOSE_WAIT 客户端: FIN_WAIT1→ FIN_WAIT2 | 服务器: CLOSE_WAIT→ LAST_ACK
| 客户端: FIN_WAIT2→ TIME_WAIT(经过时间等待计时器设计的时间之后)→CLOSED 服务器: LAST_ACK→ CLOSED
|
报文名字 | FIN 报文 (连接释放报文段) | ACK 报文 (确认报文段) | FIN 报文 (连接释放报文段) | ACK 报文 (确认报文段) |
发的啥 | FIN = 1 序号:seq = u | ACK = 1 确认号=客户端初始序列号(ISN)+ 1: ack = u + 1, seq = v | FIN = 1, ACK = 1 确认号ack = u + 1, seq = w | ACK = 1 确认号ack = w + 1, seq = u + 1 |
啥意思 | FIN == Finish 表示它(客户端)不再发送任何数据 | ACK == Acknowledge 通知对方(客户端):你方的发送通道已经关闭 | FIN == Finish 表示它(客户端)不再发送任何数据 | ACK == Acknowledge 通知对方(客户端):你方的发送通道已经关闭 |
发送通道是否关闭 |
| 主动方收到ACK报文,状态由FIN_WAIT1→ FIN_WAIT2,主动方的发送通道关闭。 | 主动方收到FIN报文,内核自动回复ACK报文,连接状态由FIN_WAIT2→ TIME_WAIT,Linux系统下大约1min后TIME_WAIT状态的连接才会彻底关闭。 | 被动方收到ACK报文,连接关闭。 |

关于TIME_WAIT状态的几个问题:
为什么主动方要TIME_WAIT(经过时间等待计时器设计的时间之后)→ CLOSED ?
因为主动方向被动方发送ACK报文,被动方在没有收到ACK报文之前还处于LAST_ACK状态,如果主动方发送的此ACK报文没有到达被动方,被动方会重发FIN报文。
如果主动方不保留TIME_WAIT状态,直接从TIME_WAIT到CLOSED状态,此时主动方连接的端口恢复自由身,可以创建新的连接了。然而被动方的FIN报文可能再次到达(网络中的路由器重复发送的 || 被动方未收到tcp_orphan_retries参数重发的),这样正常通讯的新连接就可能被重复发送的FIN报文误关闭。因此,保留TIME_WAIT状态可以应付重发的FIN报文。
TIME_WAIT状态过多怎么办?
TIME_WAIT状态如果过多就会占用系统资源。
解决办法?
• 修改TIME_WAIT连接状态的上限值
• 启动快速回收机制
• 开启复用机制
• 修改短连接为长连接方式
• 由客户端来主动断开连接
边栏推荐
- 驻波比计算方法
- Mathematical analysis_ Notes_ Chapter 3: limits
- BSC smart contract dividend mainstream currency | including marketing wallet | deflation | reflow | dividend free token | available for direct deployment
- @RequestBody解决获取参数为null
- LeetCode 剑指Offer II 091 粉刷房子[动态规划] HERODING的LeetCode之路
- Development of trading system (VIII) -- Construction of low delay network
- Hello CTP (IV) - CTP transaction API
- NFT Insider #63:The Sandbox与时代杂志达成合作,YGG成立西班牙subDAO
- WMS仓储管理系统的使用价值,你知道多少
- Cesium loading display thermal diagram
猜你喜欢

Nodejs 通过Heidisql连接mysql出现ER_BAD_DB_ERROR: Unknown database 'my_db_books'

WMS仓储管理系统的使用价值,你知道多少

数字时代的“文艺复兴”?起底数字藏品,让人欢喜让人愁

Cesium graphic annotation circle, square, polygon, ellipse, etc

Vigilance against over range collection of privacy - ten mobile app violations

Hello CTP (III) - CTP quotation API
![LeetCode 剑指Offer II 091 粉刷房子[动态规划] HERODING的LeetCode之路](/img/ad/69fce7cf064479a0ddd477fb935de2.png)
LeetCode 剑指Offer II 091 粉刷房子[动态规划] HERODING的LeetCode之路

Read lsd-slam: large scale direct monolithic slam

How to install opencv? Opencv download installation tutorial
![LeetCode 劍指Offer II 091 粉刷房子[動態規劃] HERODING的LeetCode之路](/img/ad/69fce7cf064479a0ddd477fb935de2.png)
LeetCode 劍指Offer II 091 粉刷房子[動態規劃] HERODING的LeetCode之路
随机推荐
Development of trading system (VII) -- Analysis of trading delay
【LeetCode】22. bracket-generating
[proteus simulation] Arduino uno key controls the flashing increase / decrease display of nixie tube
Where is the red area of OpenCV?
【Proteus仿真】Arduino UNO按键控制数码管闪烁增/减显示
@RequestBody解决获取参数为null
Text keyword extraction: ansj
Mysql的order by
Smart contract learning materials
Trading system development (IV) - trading counter system
AI quantitative transaction (II) -- tushare financial data framework
Coinlist how to operate the middle lot number security tutorial
如何绘制产业招商地图
Changsha's "talent seeking": "making efforts" and "making practical moves" go hand in hand, "rapid development" and "slow life" go hand in hand
Mathematical analysis_ Notes_ Chapter 3: limits
Laravel document sorting 6. Response
2020.3.3 notes async/await and promise and Then processes and threads
"Renaissance" in the digital age? The bottom digital collection makes people happy and sad
Upgrade cmake
MySQL插入过程报错1062,但是我没有该字段。