[TCP/IP] TCP在listen时的参数backlog的意义

2019-07-23 08:43:26来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

linux内核中会维护两个队列:
??1)未完成队列:接收到一个SYN建立连接请求,处于SYN_RCVD状态
??2)已完成队列:已完成TCP三次握手过程,处于ESTABLISHED状态
??3)当有一个SYN到来请求建立连接时,就在未完成队列中新建一项。当三次握手过程完成后,就将套接口从未完成队列移动到已完成队列。
??4)backlog曾被定义为两个队列的总和的最大值,Berkely实现中的backlog值为上面两队列之和再乘以1.5。
  5)如果当客户端SYN到达的时候队列已满,TCP将会忽略后续到达的SYN,但是不会给客户端发送RST信息,因为此时允许客户端重传SYN分节。如果启用syncookies (net.ipv4.tcp_syncookies = 1),新的连接不进入未完成队列,不受影响
6)backlog 即上述已完成队列的大小, 这个设置是个参考值,不是精确值. 内核会做些调整

 

SYN 洪水攻击(syn flood attack)

通过伪造IP向服务器发送SYN包,塞满服务器的未完成队列,服务器发送SYN+ACK包 没回复,反复SYN+ACK包,使服务器不可用.
启用syncookies 是简单有效的抵御措施.
启用syncookies,仅未完成队列满后才生效.


原文链接:https://www.cnblogs.com/taoshihan/p/11217212.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:[TCP/IP] TCP的重发机制是怎么实现的

下一篇:零基础建站如何配置PHP运行环境 几种服务器环境配置的选择和方法