一、TCP三次握手(三次交互建立可靠连接)
核心作用:确保通信双方具备双向收发能力,同步初始序列号,防止历史连接干扰。
步骤详解:
1. 第一次握手(SYN)
客户端发送带有SYN=1标志位的报文,并携带初始序列号`seq=x`。目的:告知服务器“我想建立连接”,并同步客户端的起始数据编号。客户端状态:`SYN_SENT`(等待服务器确认)。2. 第二次握手(SYN+ACK)
服务器收到SYN报文后,回复SYN=1和ACK=1的报文,携带自己的初始序列号`seq=y`,确认号`ack=x+1`。目的:同意连接请求,并同步服务器的起始数据编号,同时确认已收到客户端请求。服务器状态:`SYN_RCVD`(等待客户端确认)。3. 第三次握手(ACK)
客户端发送ACK=1的报文,确认号`ack=y+1`,表示已收到服务器响应。目的:确认双方通信链路正常,正式建立连接。双方状态:`ESTABLISHED`(连接已建立,可传输数据)。为什么必须三次?
两次握手风险:若客户端旧SYN报文延迟到达服务器,可能导致服务器误开无用连接,浪费资源。三次必要性:通过第三次握手确认双方收发能力和序列号同步,避免“历史连接”干扰。二、TCP四次挥手(四次交互安全关闭连接)
核心作用:确保双方数据发送完毕,安全释放连接资源。
步骤详解:
1. 第一次挥手(FIN)
主动关闭方(如客户端)发送FIN=1的报文,携带序列号`seq=u`。目的:通知对方“我已发送完数据,请求关闭连接”。客户端状态:`FIN_WAIT_1`(等待服务器确认)。2. 第二次挥手(ACK)
被动关闭方(如服务器)回复ACK=1的报文,确认号`ack=u+1`。目的:确认收到关闭请求,但可能仍有数据未发送完毕。服务器状态:`CLOSE_WAIT`(等待关闭自身连接)。3. 第三次挥手(FIN)
被动关闭方发送FIN=1的报文,携带序列号`seq=w`,表示数据已全部发送完毕。服务器状态:`LAST_ACK`(等待最终确认)。4. 第四次挥手(ACK)
主动关闭方发送ACK=1的报文,确认号`ack=w+1`。客户端状态:`TIME_WAIT`(等待2MSL时间,确保对方收到ACK)。服务器状态:收到ACK后进入`CLOSED`,连接彻底关闭。为什么需要四次?
全双工特性:TCP支持双向独立传输,双方需分别关闭发送通道。等待数据发送:被动关闭方可能在收到FIN后仍需发送剩余数据。三、高频考点与常见问题
1. 三次握手核心意义
验证双方收发能力、同步序列号、避免资源浪费。2. 四次挥手状态分析
TIME_WAIT:主动关闭方等待2MSL(最长报文生存时间),防止ACK丢失导致服务器重传FIN。CLOSE_WAIT:被动关闭方等待应用层调用`close`,若大量出现可能代码未正确释放资源。3. 标志位与序列号的作用
SYN:同步序列号,发起连接请求。ACK:确认报文有效性,携带确认号。FIN:请求终止连接。4. 异常场景与排查
大量SYN_RCVD:可能遭遇SYN洪水攻击(服务器未收到第三次ACK)。大量CLOSE_WAIT:服务器未正确关闭Socket,需检查代码逻辑。四、记忆技巧与类比
三次握手类比“打电话”:1. 客户端:“喂,听得到吗?”(SYN)
2. 服务器:“听到了!你能听到我吗?”(SYN+ACK)
3. 客户端:“能听到,开始聊天吧!”(ACK)
四次挥手类比“辞职流程”:1. 员工:“老板,我要离职”(FIN)
2. 老板:“同意离职”(ACK)
3. 老板:“手续已办好,你可以走了”(FIN)
4. 员工:“收到,再见!”(ACK)
总结:三次握手与四次挥手是TCP可靠传输的核心机制,需重点掌握其步骤、状态转换及设计原理。高考中可能结合流程图、状态机或实际场景应用题考查,建议通过类比和实际报文分析加深理解!
推荐文章
高考英语听力材料的特点是什么
2024-11-22渤海大学市场营销专业的实践项目有哪些
2025-02-18如何查找各省的高考志愿代码
2024-12-27江西热门专业排名有哪些
2025-02-15学科实力强的专业是否意味着更高的录取分数线
2025-08-15高考热门专业选择背后的从众效应心理机制是什么
2025-03-28什么是河北高考志愿档案状态的已审核
2024-12-29如何根据职业规划确定高考选科方向
2025-05-05日语中的方言和标准语的差异
2024-11-10人力资源管理专业需要高考生提前培养哪些实践技能
2025-04-22