如何优雅简洁的理解三次握手和四次挥手

本文主要参考博客:here

TCP协议是面向连接的、可靠的传输层协议,采用全双工通信(也就是建立连接的两个对象可以同时发送和接收信息)。

本文使用A和B表示建立连接的两个对象。

三次握手

三次握手的目的是为了确认A和B都有发送和接受信息的能力,其过程如下:

1 A向B发起连接请求:A->B;

2 B收到A的请求,并返回确认信息:B->A;

3 A收到B的确认信息,并返回确认信息:A->B。

我们使用表格来记录三次握手确认的信息有哪些。在建立连接之前,我们的状态如下:

AB
    

 

在第一次握手后我们可以确认A可以发送数据:

AB
 1  

 

在第二次握手后,我们可以确认B可以同时接收和发送信息:

AB
 122

 

在第三次握手后,我们可以确认A可以接受信息:

AB
3122

 

由上面的过程可知,经过三次握手后,我们知道了A和B都具有接收和发送信息的能力,从而保证能够全双工通信。三次是能够确认A和B能够进行全双工通信的最小次数。

四次挥手

四次挥手的目的是关闭连接,而关闭连接后的状态需要A和B双方都不再发送信息(也就意味这双方不会再接受信息),其过程如下:

1 A向B发送信号,表示没有数据发送了:A->B;

2 B收到A的信号,确认关闭连接请求:B->A;

3 B向A发送信息,表示没有数据发送了:B->A;

4 A收到B的信息,确认关闭连接:A->B。

同三次握手一样,我们同样使用表格来记录我们的挥手过程,表格初始状态如下:

AB
不收不发不收不发
    

 

第一次挥手后,我们知道A不会发送信息了:

AB
不收不发不收不发
 1  

第二次挥手后,我们确认B不需要接收信息:

AB
不收不发不收不发
 12 

 

第三次挥手后,我们知道B不会发送信息:

AB
不收不发不收不发
 123

 

第四次挥手后,我们知道A不会再接受信息:

AB
不收不发不收不发
4123

 

至此,A和B两个对象都不发送也不接受信息了,连接关闭。

为什么挥手比握手多一次?

由上面的分析可知,在握手的时候,第二次握手可以同时确认B可以接受和发送信息;而在挥手的时候,B接收到A的挥手信号,并不意味着B也需要立刻停止数据传送,所以B在停止发送数据时还需要再一次发送挥手信号。

概括着讲,握手是确认A和B的数据接收和发送能力,而挥手需要考虑A和B停止数据传输的先后顺序。于是,挥手比握手要多考虑一步。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值