[TCP/IP] TCP在listen时的参数backlog的意义
linux內(nèi)核中會維護(hù)兩個隊(duì)列:
??1)未完成隊(duì)列:接收到一個SYN建立連接請求,處于SYN_RCVD狀態(tài)
??2)已完成隊(duì)列:已完成TCP三次握手過程,處于ESTABLISHED狀態(tài)
??3)當(dāng)有一個SYN到來請求建立連接時,就在未完成隊(duì)列中新建一項(xiàng)。當(dāng)三次握手過程完成后,就將套接口從未完成隊(duì)列移動到已完成隊(duì)列。
??4)backlog曾被定義為兩個隊(duì)列的總和的最大值,Berkely實(shí)現(xiàn)中的backlog值為上面兩隊(duì)列之和再乘以1.5。
5)如果當(dāng)客戶端SYN到達(dá)的時候隊(duì)列已滿,TCP將會忽略后續(xù)到達(dá)的SYN,但是不會給客戶端發(fā)送RST信息,因?yàn)榇藭r允許客戶端重傳SYN分節(jié)。如果啟用syncookies (net.ipv4.tcp_syncookies = 1),新的連接不進(jìn)入未完成隊(duì)列,不受影響
6)backlog 即上述已完成隊(duì)列的大小, 這個設(shè)置是個參考值,不是精確值. 內(nèi)核會做些調(diào)整
?
SYN 洪水攻擊(syn flood attack)
通過偽造IP向服務(wù)器發(fā)送SYN包,塞滿服務(wù)器的未完成隊(duì)列,服務(wù)器發(fā)送SYN+ACK包 沒回復(fù),反復(fù)SYN+ACK包,使服務(wù)器不可用.
啟用syncookies 是簡單有效的抵御措施.
啟用syncookies,僅未完成隊(duì)列滿后才生效.
轉(zhuǎn)載于:https://www.cnblogs.com/taoshihan/p/11217212.html
總結(jié)
以上是生活随笔為你收集整理的[TCP/IP] TCP在listen时的参数backlog的意义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [TCP/IP]TCP服务端accept
- 下一篇: [TCP/IP] TCP如何实现流量控制