当前位置: 首页 > article >正文

TCP协议的三次握手与四次挥手的过程

目录

三次握手(建立连接)

第一次握手(SYN)

第二次握手(SYN-ACK)

第三次握手(ACK)

四次挥手(终止连接)

第一次挥手(FIN)

第二次挥手(ACK)

第三次挥手(FIN)

第四次挥手(ACK)


TCP(传输控制协议)的三次握手和四次挥手是建立和终止TCP连接的两个重要过程。

三次握手(建立连接)

  1. 第一次握手(SYN)
    • 客户端发送一个SYN(同步序列编号)报文到服务器,并进入SYN_SENT状态,等待服务器确认。
    • 报文中包含客户端的初始序列号(ISN),用于后续的可靠性管理。
  2. 第二次握手(SYN-ACK)
    • 服务器收到客户端的SYN报文后,会发送一个SYN-ACK(同步确认应答)报文作为应答。
    • 服务器同样在报文中包含自己的初始序列号,并将确认序号设置为客户端的ISN加1,表示服务器已经收到了客户端的SYN。
    • 服务器此时进入SYN_RCVD状态。
  3. 第三次握手(ACK)
    • 客户端收到服务器的SYN-ACK报文后,会向服务器发送一个ACK(确认)报文。
    • 报文中将确认序号设置为服务器的ISN加1。
    • 客户端发送完这个报文后进入ESTABLISHED状态,表示客户端到服务器的连接已经建立。
    • 服务器在收到这个ACK报文后也进入ESTABLISHED状态,此时,双方都准备好了数据传输。

四次挥手(终止连接)

  1. 第一次挥手(FIN)
    • 当客户端完成数据传输后,它需要发送一个FIN(结束)报文到服务器,并进入FIN_WAIT_1状态。
    • 客户端告诉服务器它已经没有数据发送了。
  2. 第二次挥手(ACK)
    • 服务器收到这个FIN报文后,会发送一个ACK报文作为应答,并将确认序号设置为收到序号加1。
    • 服务器进入CLOSE_WAIT状态,客户端收到这个ACK报文后进入FIN_WAIT_2状态。
    • 此时,客户端到服务器的连接已经释放,但服务器可能还有数据要发送。
  3. 第三次挥手(FIN)
    • 当服务器发送完剩余的数据后,它会发送一个FIN报文到客户端,并进入LAST_ACK状态。
    • 服务器告诉客户端它已经没有数据发送了。
  4. 第四次挥手(ACK)
    • 客户端收到这个FIN报文后,会发送一个ACK报文作为应答,并将确认序号设置为收到序号加1。
    • 客户端发送完这个报文后进入TIME_WAIT状态,等待足够的时间以确保服务器收到了这个ACK报文。
    • 服务器在收到这个ACK报文后进入CLOSED状态,完成连接的终止。
    • 客户端在等待一定时间后(通常是2MSL,即最大报文生存时间的两倍),也会进入CLOSED状态。

通过三次握手和四次挥手的过程,TCP确保了连接的可靠建立和终止。


http://www.kler.cn/news/340915.html

相关文章:

  • 机器学习可视化教程——混淆矩阵与回归图
  • 递归基本操作总结
  • 数据中心运维挑战:性能监控的困境与智能化解决方案的探寻
  • 快餐食品检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
  • 超轻巧modbus调试助手使用说明
  • recyclerView(kotlin)
  • 非结构化数据管理中的元数据应用与实践
  • ctf.bugku-eval
  • 髓质脊髓三叉神经核文献阅读笔记
  • 嵌入式面试——FreeRTOS篇(五) 事件标志组
  • Spring Boot Starter Parent介绍
  • 初学python python与js差异
  • windows C++-移除界面工作线程(一)
  • AutoKey:开启高效办公与生活的自动化之门
  • 如何评估和选择适合企业的非结构化数据管理工具
  • mybatis-plus转换数据库json类型数据为java对象
  • 力扣题解( 规定时间内到达终点的最小花费)
  • 【LeetCode: 134. 加油站 | 贪心算法】
  • ​el-table去除表格表头多选框或者更换为文字​
  • 【嵌入式软件-STM32】STM32简介