zoukankan      html  css  js  c++  java
  • 7.13一次完整的Http请求过程(3)

    7.13一次完整的Http请求过程(3)

    一次完整请求的图解

    TCP之四次挥手

    首先明确特点:

    • 断开连接Server或者Client都可以断开

    四次挥手过程

    • A向B发送连接释放报文段并停止发送数据,此报文段中FIN=;seq=u(等于上次发送数据的最后一个字节加1),此时A进入FIN_WAIT-1(终止等待1)状态。TCP规定,FIN报文段即使不携带数据也要消耗一个序号。

    • B收到连接释放报文段后就发送确认报文,此时ACK=1;ack=u+1;seq=v;此时B进入close_wait(关闭等待)状态。TCP服务器进程通知应用进程A到B的连接释放了,此时TCP连接处于半关闭状态,B到A的连接并未断开,此时B发送数据A仍要接收。--->B在这时候做的动作是:通知系统关闭进程,A不能向B发送数据,但B可向A发送数据

    • A收到B的确认报文后就处于FIN_WAIT2状态,等待B发送连接释放报文段。

    • 如果B没有数据要发送了,就发送连接释放报文段,此时,FIN=1;ACK=1;seq=w;ack=u+1;此时B处于last_ack(最后确认)状态。

    • A收到B的连接请求报文段后就发送确认报文段,此时ACK=1;ack=w+1;seq=u+1;此时A处于time_wait等待状态。

    此时TCP连接还未释放掉,必须经过时间等待计时器(TIME-WAIT timer)设置的2倍的最长报文寿命MSL(Maximum Segment Lifetime)后A才进入到CLOSED,MSL建议设为2分钟。当A撤销相应的传输控制块TCB后,就结束了这次TCP连接。B收到A的确认报文就进入CLOSED状态,当B撤销相应的传输控制块TCB后,就结束了这次TCP连接。

    为什么是四次挥手不是三次:

    其实是可以三次挥手的,因为Client端有一个等待时间,超过这个时间未收到可以关闭连接

    而Server端有一个保活时间,如果Server端已经发出了确认释放报文段没有收到Client的回复,过了保活时间可以另作处理

     

    It's a lonely road!!!
  • 相关阅读:
    [CTSC2018]暴力写挂
    【bzoj 2870】 最长道路tree
    [CTSC2010]珠宝商
    [JXOI2018]守卫
    [JXOI2018]排序问题
    [AHOI2014/JSOI2014]骑士游戏
    [SNOI2017]遗失的答案
    【LGP5437】【XR-2】约定
    【LGP5349】幂
    hdu-2688 Rotate---树状数组+模拟
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15008040.html
Copyright © 2011-2022 走看看