网站首页 > 博客文章 正文
TCP连接的建立和释放分别通过“三次握手”和“四次挥手”来完成。
三次握手过程
TCP三次握手是建立可靠网络连接的关键过程,它用于确保通信双方能够正常发送和接收数据,并提供可靠的数据传输机制。三次握手的主要目标包括:
o 同步双方的序列号
o 确认双方的接收和发送能力
o 防止因为过期报文导致的误连接
第一次握手
o 客户端发送一个SYN(同步)请求报文,表示希望建立连接,并附带初始序列号(Sequence Number)。
< 客户端拨通服务器的电话,说“喂?听得到吗?”>
o 客户端进入 SYN_SENT 状态,等待服务器的响应。
第二次握手
o 服务器收到请求后,回复一个SYN+ACK(同步+确认)报文。
< “听得到!你那边OK吗?”>
o ACK字段确认客户端的序列号,同时服务器生成自己的初始序列号。
o 服务器进入 SYN_RCVD 状态,等待客户端的确认。
第三次握手
o 客户端收到服务器的确认后,再发送一个ACK(确认)报文,确认服务器的响应。
<客户端确认:“没问题,开始聊吧!”>
o 客户端进入 ESTABLISHED 状态,服务器也进入 ESTABLISHED 状态,连接正式建立。
下面是TCP头部的一个简单介绍:
上述流程中提到:
序列号:
定义:序列号标识数据流中每个字节的唯一编号,用于确保数据的有序传输。
初始值:在连接建立时,序列号由发送方随机生成。
变化规则:每发送一个数据段,序列号会增加该数据段的字节数。例如,发送100字节的数据后,序列号会增加100。
作用:解决网络中数据包乱序问题,确保接收方能够按照正确顺序重组数据。
确认号:
定义:确认号表示接收方期望收到的下一个数据包的序列号。
变化规则:确认号等于接收到的序列号加上数据段的长度。如果接收到的是SYN或FIN报文,则确认号加1。
作用:通知发送方哪些数据已经被成功接收,解决丢包问题。
确认号和序列号机制是确保TCP数据传输数据可靠性的关键机制。
为什么要三次握手?
简单来讲,三次握手是保证通信稳定正确的最小开销。
可以有一个很简单的对话例子:
o A - B:你听得到我吗?
o B - A:我听得到,你听得到我吗?
o A - B:我也听得到,我们可以开始正式交流了。
三次握手通过同步序列号,确认机制等等,确保了TCP连接的稳定性和可靠性。
四次挥手过程
TCP的四次挥手是用于终止TCP连接的过程,确保双方都能可靠地关闭连接。
第一次挥手
客户端发送一个带有FIN(Finish)标志的报文段,表示客户端不再发送数据,但仍然可以接收数据。此时客户端进入FIN_WAIT_1状态。
< 客户端说:“我讲完了,先挂了”>
第二次挥手
服务器收到客户端的FIN报文后,发送一个ACK(Acknowledgment)报文作为确认,确认序号为收到的序号加1。此时服务器进入CLOSE_WAIT状态,客户端收到ACK后进入FIN_WAIT_2状态。
< 服务器回应:“收到,我还在处理消息。”>
第三次挥手
服务器在完成数据发送后,向客户端发送一个FIN报文,表示服务器也不再发送数据。此时服务器进入LAST_ACK状态,等待客户端的确认。
< 服务器处理完数据后说:“我也讲完了。”>
第四次挥手
客户端收到服务器的FIN报文后,发送一个ACK报文作为确认,确认序号为收到的序号加1。此时客户端进入TIME_WAIT状态,等待2MSL(最大报文段生存时间)后进入CLOSED状态。服务器收到ACK后,立即进入CLOSED状态。
< 客户端确认:“好的,再见!”>
注:如果服务器没有收到客户端的ACK,会在2MSL后重传FIN,客户端在TIME_WAIT状态可以重新发送ACK。2MSL的时间足以让网络中所有旧的重复报文段消失,防止它们干扰新的连接。
为什么需要四次挥手?
全双工通信:TCP是全双工的,每个方向都需要单独关闭。客户端发送FIN表示不再发送数据,但服务器可能仍有数据要发送,因此需要服务器也发送FIN来确认关闭。
可靠关闭:通过四次挥手,确保双方都能确认对方的关闭意图,避免数据丢失或不完整。
串口服务器_数传电台_4G DTU_遥控开关_LoRa/ZigBee/WiFi/蓝牙模块-成都亿佰特电子科技有限公司官网
猜你喜欢
- 2025-05-03 什么是TCP?什么是UDP?它们有什么区别?
- 2025-05-03 Linux:TCP 大量连接状态为CLOSE_WAIT
- 2025-05-03 面试常问!TCP 三次握手与四次挥手详解
- 2025-05-03 TCP可靠传输的一点知识(简述tcp可靠传输的工作原理)
- 2025-05-03 图解TCP、UDP,流量控制,拥塞控制,一次看懂
- 2025-05-03 一篇文章读懂HTTPS及其背后的加密原理
- 2025-05-03 TCP三次握手和四次挥手详解(tcp三次握手的作用)
- 2025-05-03 面试必备TCP(二):四次挥手(四次挥手面试题)
- 2025-05-03 简述:TCP四次挥手(断开连接)(tcp 4次挥手)
- 2025-05-03 腾讯云国际站:为什么需要调整TCP内核参数?
你 发表评论:
欢迎- 368℃用AI Agent治理微服务的复杂性问题|QCon
- 363℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 347℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 343℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)