zoukankan      html  css  js  c++  java
  • 三次握手/四次挥手

    三次握手:

    1.A发送请求

    2.B响应+B请求

    3.A响应

    A→B的连接:1和2实现

    B→A的连接:2和3实现


    怎么保证每次发送的对方都收到了呢,发送的请求收到了响应即表示上次发送的成功了

    即永远都是下一次来保证上一次的成功

    那么,怎么知道3发送成功了呢,因为没有4的响应来保证3了呀?

    1和2已经保证了A→B的连接是成功的,而3也是A→B的连接,所以默认是成功的


    四次挥手

    1.A发送请求

    2.B响应

    3.B请求

    4.A响应

    A→B的关闭:1和2实现

    B→A的关闭:3和4实现


    两个问题:

    1.为什么3和4不放到一起了?

    B→A的关闭前,把没发完的数据都发过去


    2.为什么第4步的A要等待2MSL?

    因为永远都是下一次来保证上一次的成功,而第4步是最后一步,无法保证成功

    那三次握手时也不需要保证啊,因为默许了A→B的连接是有效的;而四次挥手如果不能保证最后一次的成功,那么B将永远不会释放连接,一直占用资源,实际中服务器面对的连接非常多的,所以必须保证最后一次的成功以断开连接

    原理:

    如果最后一次B没收到,那么会重新发一次断开请求,A这边就会收到请求,而A→B是1msl,B→A是1msl,共2msl

    如果最后一次B收到了,那么A这边就不会收到请求,但仍然要等2msl,万一在最后一刻收到了呢

    所以A是根据响应发出去后,2msl内有没有再收到断开请求来判断自己发送的是否成功,这样就保证了最后一次的可靠性

  • 相关阅读:
    linux上用selenium登录新浪微博,获取用户关注的用户id
    JS、Python对字符串的编码函数
    在ubuntu系统下装hadoop
    windows下python3.x的安装与使用
    python多线程、多进程、协程的使用
    python简单操作redis
    操作系统基础知识
    排序算法汇总
    网易的突然袭击
    小红书视频面试
  • 原文地址:https://www.cnblogs.com/justaman/p/11485235.html
Copyright © 2011-2022 走看看