TCP为什么是三次握手

前言:

三次握手可以说在程序界可以说是非常高频的词汇了。很多人都知道TCP协议是很多协议的基础,这个协议的通信方式类似于三次握手。那么为什么是三次?而不是四次?也不是两次呢?

图示
image.png
表格介绍

首先A端B端两台计算机。我们用一张表格表现通信状态(我们使用Y代表可以通信,N代表不能通信)
初始状态两个计算机的表格都是N不可通信

计算机A=>BB=>A
ANN
BNN

我们认为只有当A端和B端都认为A=>B,B=>A可以通信时,才是一个可以通信的状态。不然就无法保证通信交流能够成功
所以只有当表格变为下表才OK

计算机A=>BB=>A
AYY
BYY

逐步分析

事件1:
A端发起对B端的通信
这时候,A端不知道B端能不能收到,B也不知道有没有人请求过来了。所以这个时候通信表格没有变化

事件2:
B端接收到了A端的通信,那么B端可以知道A=》B的通信是没有问题
那么表格就发生了变化

计算机A=>BB=>A
ANN
BYN

事件3:
随后B端发起通信回复A端,告知A端自己已经收到请求
由于B端不知道A能否接收成功,所有B端表格无变化
A端也不知道B端能否收到并回复,所以A端表格还是初始状态

事件4:
A端接收到了B端的回复,那么A端可以得知,A=>B成功,B=>A成功,所以A端表格变为

计算机A=>BB=>A
AYY
BYN

事件5:
A端再次发起通信告知B端自己已经收到了B端发起的通信
此时A虽然知道B可以接收到他的通信
但是B端不知道他发起对A的通信是否成功
所以表格还是没有变化

事件6:
B端成功接收到A端的回复
由此B端知道B=》A可以通信
表格修改为

计算机A=>BB=>A
AYY
BYY
结语

由此可见,我们TCP协议的三次握手是在保证通信可行下的最少通信次数。如果是两次握手,便无法100%保证可以通信。如果使用四次握手,就浪费了通信的时间和次数。性能上不如三次握手来的高效

如果有写的不对的地方,希望大神指正。谢谢

以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值