TCP为何采用三次握手来建立连接,若采用二次握手可以吗(部分原创+转载)

1.  TCP连接建立

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.


通俗理解:

第一次对话:

前方敌军火力很猛,团长叫通讯员小张打电话请求总部支援。
小张拿起电话,说:“呼叫总部,这里是独立团”。不巧电话线被炸断了,总部接收不到小张传来的信息的情况下,沟通失败。

如果总部听到小张的呼叫,那么第一次对话成功,接下来进行第二次对话。

第二次对话:

总部听到了小张的话,但是不巧,总部接电话的只有一个外国友军,来了句"Hello, balabal"。小张农民出身,一句听不懂,多次尝试,沟通失败。说明总部无法做出正确的应答情况下沟通失败。
如果总部听到小张的话,并做出正确应答,并且进行反问,:”小张同志,详细说一下具体情况。 那么第二次握手成功。

通过前两次对话,说明总部听懂了小张的话,并且做出正确应答,接下来进行第3次对话。

第三次对话:

小张刚说完话,来了一个子弹,小张同志牺牲了。总部等了许久,没听到小张回话,通话结束。说明小张在无法应答的情况下沟通失败。
如果小张刚好穿了防弹衣,做出应答:"敌人的火力很猛,请求支援。两人第3次对话成功,两人建立起顺畅的沟通渠道,接下来开始持续通话。
听过第二次和第三次对话,证明了总部能听懂小张的话,并且做出正确应答。

可见,小张要和总部沟通,3次通话过程是必须的。TCP采用三次握手来建立连接,也可以理解了。


2.  为什么要建立3次握手,2次就不行?

为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手。

为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。

如果只是两次,服务器端在没有确定客户端是否对自己做出了正确应答的情况下就建立了连接,此时客户端因为意外连接请求报文早就失效了,也不可能再理服务器端,但是服务器端会一直傻傻地等待客户端会发来点数据,造成了资源的浪费。这真是服务器端自己自作多情啊。看下图,通俗易懂~



说明:转载自https://www.cnblogs.com/qianwen/p/3936054.html 点击打开链接


  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值