TCP/IP详解 第十二章(5) 什么是syncookies
如果 SYN 半连接队列已满,只能丢弃连接吗?
并不是这样,开启 syncookies 功能就可以在不使用 SYN 半连接队列的情况下成功建立连接,在前面我们源码分析也可以看到这点,当开启了 syncookies 功能就不会丢弃连接。
syncookies 是这么做的:服务器根据当前状态计算出一个值,放在己方发出的 SYN+ACK 报文中发出,当客户端返回 ACK 报文时,取出该值验证,如果合法,就认为连接建立成功,如下图所示。
syncookies 参数主要有以下三个值:
-
0 值,表示关闭该功能;
-
1 值,表示仅当 SYN 半连接队列放不下时,再启用它;
-
2 值,表示无条件开启功能;
那么在应对 SYN 攻击时,只需要设置为 1 即可:
巨人的肩膀
[1] 系统性能调优必知必会.陶辉.极客时间.
[2] https://blog.cloudflare.com/syn-packet-handling-in-the-wild
【3】https://mp.weixin.qq.com/s/2qN0ulyBtO2I67NB_RnJbg