• 用一个小的例子来说明为什么TCP采用三次握手才能保证连接成功


    关于TCP的三次握手,有很多朋友还在疑惑为什么是三次,而不是两次,LZ想了一下用一个例子来说明最好。

    场景:
    办公室有一名前台(服务器),若干业务员(fork出来的进程)
    客户(客户端)
     
    为什么我们说三次握手才是有保障的,才是稳定的,我们看一下,如果是一次握手

    客户(打电话给前台): 喂,你好!  (一次握手

    然后传送文件过去。

    (如果前台没有人,你文件传送过去也没人处理啊。。。)

     
    如果是两次握手
     

    客户(打电话给前台):喂,你好!(第一次握手

    前台: 你好!请问什么事情?(第二次握手

    然后客户直接传送文件过去。

    几秒钟后,前台:你好!请问你哪位,什么事情?(服务器超时重发SYN+ACK

    又几秒钟后,前台:你好!请问你哪位,什么事情?(服务器超时重发SYN+ACK

    。。。

    半分钟后,前台:那个瓜娃子,骚扰嗦!(挂掉电话)(服务器重发次数达到,不再重发

    (OK,客户传送过去的文件还是没有人处理。。。)


     
    我们再来看三次握手

    客户(打电话给前台):喂,你好!(第一次握手

    前台: 你好!请问什么事情?(第二次握手

    客户:我是XXX,你接收传真处理一下。(第三次握手

    然后客户传送文件过去。

    前台安排业务员去拿好传真,处理完并与客户直接沟通。(fork一个独立进程与客户端交互

    业务员接手与该客户的联系,并处理客户的各种请求。

    前台继续等待其他客户打来电话。(服务器程序继续阻塞等待其他连接请求

    (OK,公司一片和谐,各司其职,客户的需求马上得到处理)

    通过LZ以上的描述,大家应该知道为什么是三次握手,而不是两次握手了吧,不仅仅客户端要确认服务器端能连接,服务器也要确保与客户端能连接,这样才能是有效的连接。

  • 相关阅读:
    mongodb的热备工具pbm-agent
    注释
    mongodb的启动配置查询serverCmdLineOpts
    副本集状态
    分片集群的serverStatus监控
    副本集的replSetGetStatus监控
    京东
    副本集的replSetGetConfig监控
    mysql的replace函数
    副本集的serverStatus监控
  • 原文地址:https://www.cnblogs.com/water-moon/p/5544340.html
Copyright © 2020-2023  润新知