zoukankan      html  css  js  c++  java
  • tpc的time-wait

    close wait是被动关闭那方,time wait是主动关闭连接那方。

    四次握手第三次后,也就是主动关闭连接的那方,收到被动关闭那方的fin后,自己直接进入time-wait状态,然后发一个ack给被动那方,经过2*msl时间无论如何都会直接关闭。可以保证对方重发过来的fin消息可以顺利收到,而不会由于自己close让对方直接报错。另外这个时间也可以防止新的连接会受到本来给老的连接的tcp包,这段时间老的包肯定都到达了。

    使用tcp-tw-recycle依赖于ipv4.tpc-timestamps的时间戳功能(双方都必须启用)

    打开tcp-tw-reuse,表示处于time wait状态的连接,可以被新的连接请求服用,通过tcp时间戳,内核帮忙解决延迟包后到达的问题。这个东西用只能在客户端可以提高处理能力。

    相反,如果使用tcp-tw-recycle,那么内核会更快回收time-wait状态的连接,而不是2*msl。处于time-wait后,记录最后一次通信时间戳,以后这个对方对端主机发过来的连接请求全部丢弃。也就是客户端发过来sync请求连接,这边time-wait的端口由于recycle,不会回应ack

    这个东西最好别用,比如有nat这种网络转发节点情况下,一个负载均衡收到一个包后,会转发给多个Webserver。那么对于Webserver来说,其实只有一个负载均衡的源地址ip,因为负载均衡转发给Webserver的话,需要把自己的地址写到包里面。于是就会发生时间戳错乱的情况,那么新建的连接请求就收不到了

    ,

  • 相关阅读:
    冲刺4
    冲刺3
    冲刺2
    冲刺一
    构建之法阅读笔记04
    数组02开发日志
    进度条第七周
    《构建之法》阅读问题
    软件工程概论第一节
    《大道至简》弟七八章读后感
  • 原文地址:https://www.cnblogs.com/notlate/p/10200227.html
Copyright © 2011-2022 走看看