• TCP状态转换


    1.TCP建立连接

    TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。TCP使用三次握手( three-way handshake )协议来建立连接。

    尽管发生的可能性极小,两个应用程序同时彼此执行主动打开的情况还是可能的。当出现同时打开的情况时,两端几乎在同时发送 SYN ,并进入 SYN_SENT 状态。当每一端收到 SYN 时,状态变为 SYN_RCVD ,同时它们都再发 SYN 并对收到的 SYN 进行确认。当双方都收到 SYN 及相应的 ACK 时,状态都变迁为 ESTABLISHED 。

    2.TCP断开连接

     TCP 连接建立起来后,就可以在两个方向传送数据流。当 TCP 的应用进程再没有数据需要发送时,就发关闭命令。 TCP 通过发送控制位 FIN=1 的数据片来关闭本方数据流,但还可以继续接收数据,直到对方关闭那个方向的数据流,连接就关闭。终止一个连接要经过 4 次握手,这是因为 TCP 的半关闭( half-close )造成的。由于一个 TCP 连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。关闭的原则就是当一方完成它的数据发送任务后就能发送一个 FIN 来终止这个方向连接。当一端收到一个 FIN ,它必须通知应用层另一端已经终止了那个方向的数据传送。发送 FIN 通常是应用层进行关闭的结果。

    如果连接双方的应用进程同时发关闭命令,则双方 TCP 在发送完尚未处理的报文段后,发送 FIN 报文。各方 TCP 在 FIN 前所发报文都得到确认后,发 ACK 确认它收到的 FIN 。各方在收到对方对 FIN 的确认后,同样等待一段时间再关闭连接。这称之为同时关闭( simultaneous close )。

    3.TCP状态转换综述

    TCP 状态表

    状 态

    描 述

    CLOSED

    关闭状态,没有连接活动或正在进行

    LISTEN

    监听状态,服务器正在等待连接进入

    SYN RCVD

    收到一个连接请求,尚未确认

    SYN SENT

    已经发出连接请求,等待确认

    ESTABLISHED

    连接建立,正常数据传输状态

    FIN WAIT 1

    (主动关闭)已经发送关闭请求,等待确认

    FIN WAIT 2

    (主动关闭)收到对方关闭确认,等待对方关闭请求

    TIMED WAIT

    完成双向关闭,等待所有分组死掉

    CLOSING

    双方同时尝试关闭,等待对方确认

    CLOSE WAIT

    (被动关闭)收到对方关闭请求,已经确认

    LAST ACK

    (被动关闭)等待最后一个关闭确认,并等待所有分组死掉

  • 相关阅读:
    主成分分析(PCA)原理详解
    局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍
    RSA算法原理(二)
    RSA算法原理(一)
    对倾斜的图像进行修正——基于opencv 透视变换
    GeoHash核心原理解析
    303. Range Sum Query
    325. Maximum Size Subarray Sum Equals k
    30. Substring with Concatenation of All Words
    76. Minimum Window Substring
  • 原文地址:https://www.cnblogs.com/yanenquan/p/3697732.html
Copyright © 2020-2023  润新知