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!!!
  • 相关阅读:
    安装 oracle
    svn 编辑
    软件构架
    liunx操作
    css的样式分类
    简单自己做了一个个人简历
    网页制作之表格,列表
    MYSQL表创建
    linux操作指令 第二部分
    linux操作指令 第一部分
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15008040.html
Copyright © 2011-2022 走看看