为什么要3次握手和4次挥手

TCP的3次握手和4次挥手很好理解,但如果问一句,你思考过为什么需要这么复杂的步骤吗?

 

还是来回顾下这两个操作,首先明确下TCP是全双工通信(2个方向能同时通讯)

(1)3次握手

这里我用男生和女生聊天的例子来解释

男生:在干嘛(第1次握手) 
                                                刷微博:女生(第2次握手)
男生:哦(第3次握手) 
男生:xxxxx(开始传输局) 
                                            xxxxxxxx:女生

客户端发送连接请求(第1次握手),服务端返回收到了该请求的确认(第2次握手)

客户端发送收到了服务端确认的确认(第3次握手),3次握手之后连接建立完成

问题来了,为什么要3次?2次握手为什么不行?

其实2次握手可以完成连接的建立,但会带来资源浪费的问题


 客户端              (第2次发送请求)------------>(第1次发送请求)-------------->          服务端


假设通信道路堵塞,第1次的请求未能在限定时间内收到服务端的请求,可能堵塞也可能丢失,于是发送第2次请求

堵塞结束后,2次的请求自然建立了2个TCP连接,但问题是,第1个连接已经被客户端放弃了(因为之前的超时客户端不会在

这个连接上传输数据),而服务端开启了2个连接。此时只有第2个连接是有用的,第1个连接自然就造成了资源的浪费。

 

 

(2)4次挥手

男生:拜拜(第1次挥手) 
                                                    哦:女生(第2次挥手)
                                              xxxxxx:女生(第3次挥手)
男生:哦(第4次挥手) 

这里第3次挥手是因为服务端可能存在为传输完的数据

这里服务端在第3次挥手完之后关闭服务端向客户端的连接,第4次挥手后客户端向服务端的连接关闭

所以,为什么要4次挥手?

因为TCP的连接只能由客户端开始放弃,服务端只能被动接受,客户端放弃连接后

服务端的数据可能没传输完,所以需要4次挥手才能确保全双工通信的关闭。

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值