为什么tcp建立连接需要三次握手,断开连接需要四次挥手

本文详细解释了TCP协议中建立连接的三次握手过程和断开连接的四次挥手机制,旨在理解其背后的逻辑。三次握手确保双方都能通信,避免失效连接请求的误解。四次挥手则因TCP的全双工特性,确保双方数据传输完毕后才完全断开连接,同时2MSL等待期用于防止旧报文干扰新连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三次握手

三次握手的目的,是为了防止A端已经失效的连接请求突然又传到B端,被误认为是A端再次发出的一个新的连接请求,如果B端这时又再次向A发出确认报文,表示同意建立连接,就会产生错误。

第一次是A端向B端发送请求,如果是只有一次握手的话,A端不知道B端是不是收到了这个请求。

第二次是B端确认收到A端请求,如果只有两次的话,B端不确定A端是否收到了确认消息,这个确认消息有可能会在半路丢了。

第三次是A端确认收到了B的确认消息,A和B双方都是通的,然后AB就可以建立连接相互通信了。

![](https://gitee.com/chenyy-2017/pic/raw/master/note/59bd6d1dff4f17d36c9446fa87e1f9cf_.jpg)

 

四次挥手

四次挥手的本质原因是tcp是全双公的,通信是双向的, A到B是一个通道,B到A又是另一个通道。

A端确认没有数据发送后,发出结束报文,此时B端返回确认后,B端也不会接收A端数据。

但是此时B端可能还有数据没有传输完,A端还是可以接收数据。

只有当B端数据发送完之后,才能发出结束报文,并且确认A端接收到的时候,两边才会真正的断开连接,双方的读写分开。

![](https://gitee.com/chenyy-2017/pic/raw/master/note/eccc7a3872de7084fd0f7a2b43f8838b_.jpg)

 

四次挥手释放连接时,等待2MSL的意义?

第 一,为了保证A发送的最有一个ACK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值