zoukankan      html  css  js  c++  java
  • TCP建立时为啥需要三次握手

    是因为接收端接收到的所有消息都是通过中间通过传过来的,这就导致接收端无法只通过一条消息来确定当前收到的建立连接的请求对发送端是否还有意义。

    如果对发送端已经无意义,即发送端已经放弃了,那接收端以此建立的准备状态就是浪费。

    所以接收端把收到的消息再发回去让发送端确认下还有没有效。

    当发送端再发来确认有效的消息后再进入准备状态。


    整个过程就成这样的:

    第一次握手

    发送端在1号让邮递员给接收端发封信,内容是:在吗?有个事想让你帮下忙?

    由于车坏了,快递员3号才把信送到接收端。

    接收端收到信后立马回复一封:在了,那个事还用我不?

    快递员4号把回信送到发送端。

    发送端收到回信后有两种反应。

    第一种是都过去三天了,事早办完了,直接啥都不回复。

    第二种是事还没办,然后自己先进入准备状态,再给接收端回信:还得需要你,收到信就开始准备吧。

    快递员5号把信送到接收端,接收端收到信后就进入准备状态等着了。

    至于快递员没把信送到或者送到了但接收端没时间或其它什么原因给拒绝了,那就是连接超时或拒绝连接了。


    三次握手就是让接收端通过多确认一次的方式避免出现瞎忙活的情况,毕竟人家是被动方。

    主动方可以瞎忙活,没人回复你的话你可以取消再发起,毕竟主动权在你这里。

    但如果被动方都准备好了你却不来,即使有超时时长,那也是一段段的浪费。

  • 相关阅读:
    类和结构体的区别
    List中的select和where 方法
    js报错,Uncaught SyntaxError: Unexpected token }
    去除list集合中重复项的几种方法
    new
    Dynamic
    ie8下缓存
    datagrid中动态url
    从后台序列化后的类的字符串
    抽象工厂
  • 原文地址:https://www.cnblogs.com/StarkBrothers/p/15024032.html
Copyright © 2011-2022 走看看