admin管理员组文章数量:1031759
传输层TCP 三次握手与四次挥手:你真的理解了吗?
传输层TCP 三次握手与四次挥手:你真的理解了吗?
前言 作者:神的孩子都在歌唱
当你打电话给朋友,不能上来就直接聊吧?总得先确认对方在线,否则就是自言自语。
TCP 连接也是一样,得先握手,后通信:
- 1. 你:喂,在吗?(SYN)
- 2. 朋友:在啊,你呢?(SYN+ACK)
- 3. 你:OK,开始聊!(ACK)
断开时,也得挥手告别,否则可能对方还在等你继续说话。
一. TCP 三次握手
来看一下 TCP 连接建立的完整流程:
- 1. 第一次握手:客户端发送 SYN 报文,表示“我要建立连接”,同时携带一个初始序列号
seq = x
。 - 2. 第二次握手:服务器收到 SYN 后,回应一个 SYN-ACK,表示“我收到了你的请求,并且我也准备好了”,同时附带自己的初始序列号
seq = y
,以及对客户端seq = x
的确认ack = x + 1
。 - 3. 第三次握手:客户端收到服务器的 SYN-ACK,发送 ACK 确认“好的,我们可以通信了”,并且
ack = y + 1
,至此连接建立。
为什么是三次握手?一次两次不行吗
- • 防止历史连接的影响:如果采用二次握手,服务器收到 SYN 后直接建立连接,但客户端的 SYN 可能是网络延迟后重复到达的“旧请求”,这会导致服务器错误地建立无效连接,而三次握手可以避免这一问题。
- • 确保双方的收发能力:第三次握手让客户端确认了服务器的接收和发送能力,避免了“盲目同意”的情况。
二. TCP 四次挥手
如果说三次握手是“恋爱的开始”,那么四次挥手就是“分手的全过程”——理性且克制,既保证对方准备好,也不给彼此拖泥带水的机会。
- 1. 第一次挥手:客户端不想再发送数据了,向服务器发送一个 FIN(Finish)请求,表示“我准备关闭连接了”。
- 2. 第二次挥手: 服务器收到 FIN 后,回复一个 ACK,表示“我知道你要关闭了,但我这边可能还有些数据没处理完”。
- 3. 第三次挥手: 服务器处理完数据后,也发送一个 FIN,表示“好了,我也不发送数据了”。
- 4. 第四次挥手: 客户端收到服务器的 FIN 后,回复 ACK,并进入
TIME_WAIT
状态,确保服务器收到 ACK 后才彻底关闭连接。
为什么是四次挥手?
- • TCP 是全双工通信:数据的发送和接收是分开的,每一方都要单独关闭自己的数据流,因此需要两对 FIN-ACK 进行确认。
- • TIME_WAIT 机制:客户端在最后进入
TIME_WAIT
状态,确保服务器收到 ACK,防止“最后的再见”丢失。
传输层TCP 三次握手与四次挥手:你真的理解了吗?
传输层TCP 三次握手与四次挥手:你真的理解了吗?
前言 作者:神的孩子都在歌唱
当你打电话给朋友,不能上来就直接聊吧?总得先确认对方在线,否则就是自言自语。
TCP 连接也是一样,得先握手,后通信:
- 1. 你:喂,在吗?(SYN)
- 2. 朋友:在啊,你呢?(SYN+ACK)
- 3. 你:OK,开始聊!(ACK)
断开时,也得挥手告别,否则可能对方还在等你继续说话。
一. TCP 三次握手
来看一下 TCP 连接建立的完整流程:
- 1. 第一次握手:客户端发送 SYN 报文,表示“我要建立连接”,同时携带一个初始序列号
seq = x
。 - 2. 第二次握手:服务器收到 SYN 后,回应一个 SYN-ACK,表示“我收到了你的请求,并且我也准备好了”,同时附带自己的初始序列号
seq = y
,以及对客户端seq = x
的确认ack = x + 1
。 - 3. 第三次握手:客户端收到服务器的 SYN-ACK,发送 ACK 确认“好的,我们可以通信了”,并且
ack = y + 1
,至此连接建立。
为什么是三次握手?一次两次不行吗
- • 防止历史连接的影响:如果采用二次握手,服务器收到 SYN 后直接建立连接,但客户端的 SYN 可能是网络延迟后重复到达的“旧请求”,这会导致服务器错误地建立无效连接,而三次握手可以避免这一问题。
- • 确保双方的收发能力:第三次握手让客户端确认了服务器的接收和发送能力,避免了“盲目同意”的情况。
二. TCP 四次挥手
如果说三次握手是“恋爱的开始”,那么四次挥手就是“分手的全过程”——理性且克制,既保证对方准备好,也不给彼此拖泥带水的机会。
- 1. 第一次挥手:客户端不想再发送数据了,向服务器发送一个 FIN(Finish)请求,表示“我准备关闭连接了”。
- 2. 第二次挥手: 服务器收到 FIN 后,回复一个 ACK,表示“我知道你要关闭了,但我这边可能还有些数据没处理完”。
- 3. 第三次挥手: 服务器处理完数据后,也发送一个 FIN,表示“好了,我也不发送数据了”。
- 4. 第四次挥手: 客户端收到服务器的 FIN 后,回复 ACK,并进入
TIME_WAIT
状态,确保服务器收到 ACK 后才彻底关闭连接。
为什么是四次挥手?
- • TCP 是全双工通信:数据的发送和接收是分开的,每一方都要单独关闭自己的数据流,因此需要两对 FIN-ACK 进行确认。
- • TIME_WAIT 机制:客户端在最后进入
TIME_WAIT
状态,确保服务器收到 ACK,防止“最后的再见”丢失。
本文标签: 传输层TCP 三次握手与四次挥手你真的理解了吗
版权声明:本文标题:传输层TCP 三次握手与四次挥手:你真的理解了吗? 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747881649a2222101.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论