zoukankan      html  css  js  c++  java
  • Linux网络编程系列TCP状态分析

    TCP三路握手(SYN、ACK):


    TCP终止连接(四次握手,2个FIN、2个ACK):


    TCP的TIME_WAIT状态:

    Who-主动关闭方,When-接收到被动端的FIN,Why-实现终止TCP全双工连接的可靠性(可能需要重发ACK)/允许老的重复分节在网络中消失,How Long-2MSL(1m-4m)

    避免TIME_WAIT过多的办法:修改/etc/sysctl.conf后,执行/sbin/sysctl -p生效

    net.ipv4.tcp_tw_reuse = 1   //允许将TIME_WAIT sockets重新用于新的tcp连接;默认为0,表示关闭
    net.ipv4.tcp_tw_recycle = 1 //开启TCP连接中TIME_WAIT sockets的快速回收;默认为0,表示关闭
    net.ipv4.tcp_syncookies = 1 //表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
    net.ipv4.tcp_max_tw_buckets = 5000 //系统同时保持TIME_WAIT sockets的最大数,默认为18w
    net.ipv4.tcp_fin_timeout = 30 //主动关闭方处于FIN_WAIT_2的时间
    

    TCP的CLOSE_WAIT状态:

    who-被动关闭方,when-被动端收到FIN1到发送FIN2之间(被动关闭端调用close()发送FIN2)

    TCP状态切换图:


    可以参考:tcp的那些事儿(上)http://coolshell.cn/articles/11564.html

  • 相关阅读:
    cordova 里js和oc通信原理
    awakeFromNib
    CALayer树形结构
    SDWebImage原理,转载
    gcd多线程
    block的存储形态
    关于weak对象什么时候释放
    Swift是否和OC一样有runtime机制
    大数据基础
    python进行离线打包并安装
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982013.html
Copyright © 2011-2022 走看看