TCP为什么是三次握手,四次挥手?

前言

一直以来我其实都有一个问题。大家都知道,在互联网中通信,确定对方的状态,是一件很麻烦的事情,因为网络瞬息万变,你收到的应答,只能代表过去一个时间点对方的状态。如果我们想要建立一个坚固的连接(比如TCP),就要确保对方处于可连接的状态。于是我们用反复握手来解决。但似乎反复的握手是一个逻辑上的死循环,一直握手握到世界尽头,也无法让双方都确信此时此刻对方是可连接的。这个信任危机该怎么解决呢。为什么TCP握手了三次就建立了一个可靠的连接呢?

之前的思考结果有问题,不知道过了多久我才想明白。。。惭愧。。。抱歉。。

为什么是三次握手?

其实有一个点很重要,你如何能确认对方收到了你的消息?只要你在规定时间之内收到了对方的回信,那么必然可以确定对方已经准备好和你连接了。(你在规定时间收到回信,必然对方也在规定时间内收到你的消息)
假设a想与b建立连接,a如何确认b在规定时间收到了你的消息?那就是在a发出第一条请求(第一次握手)之后的有效时间内,收到了b的回信。这也就是第二次握手的意义。那b如何确认a收到了自己的回信呢?那就是b在发出第一条回复(第二次握手)之后的有效时间内,收到了a的回信(第三次握手)。至此两人都确定了对方已经准备好了建立连接。

再思考一个问题,tcp连接就不会出现丢包超时了吗?这一点是如何保证的?经过百度发现tcp也会丢包,但是可以通过重传等机制保证数据完整性。而且对于tcp连接,握手双方会维护一个 已经连接的ip池子,池子满了就会拒绝新连接,保证已经握手成功的连接有足够资源。

为什么是四次挥手

  • 服务器被动断开连接时,一般都还有后续工作要处理,因此给服务器一个缓冲时间,让他把事情做完。

参考链接.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值