• TCP有限状态机


    版权声明:本文图片为CSDN博主「狂奔的乌龟」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    图片原链接:https://blog.csdn.net/xy010902100449/article/details/48274635

    1、TCP的连接建立

     初始状态时,客户端与服务器处于CLOSED(关闭 )状态,在建立连接过程中客户端主动打开建立连接,服务器是被动连接。

    三次握手过程分析:

    (1)客户端向服务器发出请求连接的报文段 ,同步位SYN=1,初始序列号seq=x,期待序列号为x+1,此时,客户端处于SYN-SENT(同步已发送)状态。

    (TCP规定,SYN报文段不能携带数据,但要消耗一个序号。序号指的是TCP报文段首部20字节里的序号,TCP连接传送的字节流的每一个字节都按顺序编号)

    (2)服务器收到来自客户端的请求之后,向客户端发送确认ACK=1,确认客户端的序列号ACK=x+1。服务器向客户端发送请求连接的请求,同步位SYN=1,初始序列号seq=y,期待序列号为y+1。此时客户端处于SYN-RCVD(同步收到)状态。

    (3)客户端收到服务器的确认之后,还要给服务器发送确认。确认收到请求ACK=1,确认序列号ACK=y+1,此时客户端的序列号seq=x+1。这时TCP连接已建立,客户端进入 ESTABLISHED(已建立连接)状态,当服务器收到客户端的确认之后,也会进入ESTABLISHED(已建立连接)状态。

    2、TCP连接释放

     数据传输结束后,客户端与服务器断开连接,初始状态时,客户端与服务器处于ESTABLISHED的状态,客户端在断开连接过程中是主动关闭,服务器则被动关闭。

    四次挥手过程分析:

    (1)客户端向服务器发送请求释放报文段,并停止发送数据。释放连接报文段FIN=1,序列号seq=u,期待序列号seq=u+1,此时客户端处于FIN-WAIT-1(终止等待1)状态。

    (2)服务器确认收到请求ACK=1,确认序列号seq=u+1,向客户端作出回应。此时客户端处于CLOSE-WAIT(关闭等待)状态。

    (3)客户端收到来自服务器的确认之后,就进入了FIN-WAIT(终止等待2)状态,当服务器将客户端的请求全部回应完后才开始请求关闭,服务器向客户端发送请求释放报文段FIN=1,序列号seq=w,期待序列号w+1,此时服务器最后等待客户端的接收。

    (4)客户端确认收到来自服务器的请求ACK=1,确认序列号ACK=w+1,此时客户端处在TIME-WAIT(时间等待),客户端向服务器做出回应,服务器收到回应后立即关闭,服务器关闭后客户端需等待两个最长报文段寿命的时间(2*MSL),防止服务器接收不到来自客户端的回应,以便服务器重新发送请求。

  • 相关阅读:
    [Chapter 3 Process]Practice 3.4 Describe what happens when a context switch occurs if the new context is already loaded into one of the register sets.
    [Chapter 3 Process]Practice 3.3 Discuss three major complications that concurrent processing adds to an operating system.
    爬取:中国大学排名
    基础统计学--复习
    pandas之数据结构
    numpy之初探排序和集合运算
    numpy之统计函数和布尔数组方法
    numpy之meshgrid和where
    numpy之通用函数ufunc
    numpy之转置(transpose)和轴对换
  • 原文地址:https://www.cnblogs.com/tanxiaojuncom/p/11490870.html
Copyright © 2020-2023  润新知