zoukankan      html  css  js  c++  java
  • TCP详解

    控制位RST

    TCP连接正常断开称为有序释放,置FIN,走四步分手。

    连接异常时,置RST,连接复位。

    场景还原:

    1.无论Server和Client,对已建立连接的socket调用setsockopt(SO_LINGER),任何时候只要close(s),即刻发送RST,连接被重置,跳过四步分手,直接强关。


    连接建立过程


    连接过程中端口状态变化,如上图所示。

    大量Client调用connect连接Server时,若某一时刻Client连接请求数大于Server处理速度,则发起connect的Client端口为SYN_SENT状态。



    四步分手过程

    简介

    发送FIN,即要求关闭连接。进入FIN_WAIT_2,等待对方关闭连接。对方进入CLOSE_WAIT,继续工作。

    对方发送FIN后,连接正式关闭。分别进入TIME_WAIT和CLOSE。

    此为正常情况下连接的有序释放,走四步分手。


    问题

    1.率先关闭方需等待对方同意后方可释放连接

    2.即便对方同意后,率先关闭方最终会导致端口进入TIME_WAIT,不可立即再用。(一段时间后TIME_WAIT进入CLOSE后,方可使用)


    解决方式


    连接建立后,对己方socket调用上述函数。

    那么任何时候,只要己方关闭连接,则即刻发送RST,重置连接,跳过四步分手,暴力强关,两方端口都是CLOSE。

  • 相关阅读:
    HihoCoder#1052:基因工程
    HihoCoder第十周:后序遍历
    HihoCoder第九周 状态压缩 二 与POJ2411总结
    [百度之星]资格赛:IP聚合
    HihoCoder第八周:状态压缩 一
    HihoCoder#1051:补提交卡
    HihoCoder#1039:字符消除
    HihoCoder第七周:完全背包问题
    HihoCoder第六周:01背包问题
    杭电2502--月之数
  • 原文地址:https://www.cnblogs.com/chaikefusibushiji/p/6775750.html
Copyright © 2011-2022 走看看