传输层TCP 三次握手与四次挥手:你真的理解了吗?

传输层TCP 三次握手与四次挥手:你真的理解了吗?前言作者:神的孩子都在歌唱当你打电话给朋友,不能上来就直接聊吧?总得先确认对方在线,否则就是自言自语。TCP 连接也是一样,得先握手,后通信:1. 你:喂,在吗?(SYN)2. 朋友:在啊

传输层TCP 三次握手与四次挥手:你真的理解了吗?

传输层TCP 三次握手与四次挥手:你真的理解了吗?

前言 作者:神的孩子都在歌唱

当你打电话给朋友,不能上来就直接聊吧?总得先确认对方在线,否则就是自言自语。

TCP 连接也是一样,得先握手,后通信

  1. 1. :喂,在吗?(SYN)
  2. 2. 朋友:在啊,你呢?(SYN+ACK)
  3. 3. :OK,开始聊!(ACK)

断开时,也得挥手告别,否则可能对方还在等你继续说话。

一. TCP 三次握手

来看一下 TCP 连接建立的完整流程:

  1. 1. 第一次握手:客户端发送 SYN 报文,表示“我要建立连接”,同时携带一个初始序列号 seq = x
  2. 2. 第二次握手:服务器收到 SYN 后,回应一个 SYN-ACK,表示“我收到了你的请求,并且我也准备好了”,同时附带自己的初始序列号 seq = y,以及对客户端 seq = x 的确认 ack = x + 1
  3. 3. 第三次握手:客户端收到服务器的 SYN-ACK,发送 ACK 确认“好的,我们可以通信了”,并且 ack = y + 1,至此连接建立。
image-20250403212936163

为什么是三次握手?一次两次不行吗

  • 防止历史连接的影响:如果采用二次握手,服务器收到 SYN 后直接建立连接,但客户端的 SYN 可能是网络延迟后重复到达的“旧请求”,这会导致服务器错误地建立无效连接,而三次握手可以避免这一问题。
  • 确保双方的收发能力:第三次握手让客户端确认了服务器的接收和发送能力,避免了“盲目同意”的情况。

二. TCP 四次挥手

如果说三次握手是“恋爱的开始”,那么四次挥手就是“分手的全过程”——理性且克制,既保证对方准备好,也不给彼此拖泥带水的机会。

  1. 1. 第一次挥手:客户端不想再发送数据了,向服务器发送一个 FIN(Finish)请求,表示“我准备关闭连接了”。
  2. 2. 第二次挥手: 服务器收到 FIN 后,回复一个 ACK,表示“我知道你要关闭了,但我这边可能还有些数据没处理完”。
  3. 3. 第三次挥手: 服务器处理完数据后,也发送一个 FIN,表示“好了,我也不发送数据了”。
  4. 4. 第四次挥手: 客户端收到服务器的 FIN 后,回复 ACK,并进入 TIME_WAIT 状态,确保服务器收到 ACK 后才彻底关闭连接。
image-20250403213030996

为什么是四次挥手?

  • TCP 是全双工通信:数据的发送和接收是分开的,每一方都要单独关闭自己的数据流,因此需要两对 FIN-ACK 进行确认。
  • TIME_WAIT 机制:客户端在最后进入 TIME_WAIT 状态,确保服务器收到 ACK,防止“最后的再见”丢失。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-05,如有侵权请联系 cloudcommunity@tencent 删除tcp服务器客户端连接数据

发布者:admin,转转请注明出处:http://www.yc00.com/web/1747881624a4699543.html

相关推荐

  • 传输层TCP 三次握手与四次挥手:你真的理解了吗?

    传输层TCP 三次握手与四次挥手:你真的理解了吗?前言作者:神的孩子都在歌唱当你打电话给朋友,不能上来就直接聊吧?总得先确认对方在线,否则就是自言自语。TCP 连接也是一样,得先握手,后通信:1. 你:喂,在吗?(SYN)2. 朋友:在啊

    2小时前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信