为什么TCP需要三次握手和四次挥手

TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,采用全双工通信。

那为什么需要三次握手呢?请看如下的过程:

  1. A向B发起建立连接请求:A——>B;
  2. B收到A的发送信号,并且向A发送确认信息:B——>A;
  3. A收到B的确认信号,并向B发送确认信号:A——>B。

三次握手大概就是这么个过程。
通过第一次握手,B知道A能够发送数据。通过第二次握手,A知道B能发送数据。结合第一次握手和第二次握手,A知道B能接收数据。结合第三次握手,B知道A能够接收数据。

至此,完成了握手过程,A知道B能收能发,B知道A能收能发,通信连接至此建立。三次连接是保证可靠的最小握手次数,再多次握手也不能提高通信成功的概率,反而浪费资源。

那为什么需要四次挥手呢?请看如下过程:

  1. A向B发起请求,表示A没有数据要发送了:A——>B;
  2. B向A发送信号,确认A的断开请求请求:B——>A;
  3. B向A发送信号,请求断开连接,表示B没有数据要发送了:B——>A;
  4. A向B发送确认信号,同意断开:A——>B。

B收到确认信号,断开连接,而A在一段时间内没收到B的信号,表明B已经断开了,于是A也断开了连接。至此,完成挥手过程。

可能有捧油会问,为什么2、3次挥手不能合在一次挥手中?那是因为此时A虽然不再发送数据了,但是还可以接收数据,B可能还有数据要发送给A,所以两次挥手不能合并为一次。

挥手次数比握手多一次,是因为握手过程,通信只需要处理连接。而挥手过程,通信需要处理数据+连接

以上纯属个人观点,如有不妥,还请各位看官指教。



作者:purple_force
链接:https://www.jianshu.com/p/bbb6261cb13e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值