四次挥手与Socket API

TCP协议在断开连接时需要四次挥手,而非三次,这是因为TCP支持半关闭状态,允许一方结束数据发送但仍能接收数据。本文详细解释了四次挥手的过程,以及在编程中如何使用close和shutdown来管理TCP连接的关闭,特别是半关闭场景的应用。
摘要由CSDN通过智能技术生成


在《三次握手与Socket API》中我们详细讲解了三次握手以及与之相关的API,三次握手是TCP协议的初始阶段,用来建立双方通信连接,显然有建立连接就有断开连接,那么TCP是如何断开连接的呢?
 

奇怪的四次挥手

TCP协议建立连接需要进行三次信息交互,断开连接时却需要四次信息交互,这四次信息交互被形象的称为四次挥手,那么TCP在断开连接时为什么需要奇怪的四次挥手而不是三次挥手呢?要想回答这个问题我们必须对TCP协议有进一步的理解。
 

话多的人与话少的人

生活中总会有这两类人,一类话多,一类话少,话少的那个言简意赅很快就无话可说了,话多的那个滔滔不绝没完没了,因此就会有这样的情形:

A: 今天天气这不错啊
A: 今天饭也好吃
A: 是吧
                   是的 :B
                我说完了 :B
A: 我还没说完呢
A: 明天就周五啦
A: 开心
A: blablabla
A: 我也说完了

当这两类人在聊天时就会出现B说完但A没说完的情况,这时B不再说话但是可以继续听A说,当A也说完后整个聊天过程才算结束。

TCP通信过程和人聊天又有多大区别呢?

有话多话少的人当然也会有数据多数据少的客户端以及服务器。

 

为什么要四次挥手:半关闭

在TCP通信中一方表示“我说完了”实际上是通过向对方发送一条带有FIN标识的消息来实现的,当一方收到FIN信息时就知道接下来对方就不会再发送数据了,这在TCP协议中被称为半关闭,half-close。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值