天天看點

TCP半連接配接隊列和全連接配接隊列

TCP半連接配接隊列和全連接配接隊列

(圖檔來源http://www.cnxct.com/something-about-phpfpm-s-backlog/)

syns queue(半連接配接隊列);accept queue(全連接配接隊列)

三次握手中,在第一步server收到client的syn後,把相關資訊放到半連接配接隊列中,同時回複syn+ack給client(第二步);

比如syn floods 攻擊就是針對半連接配接隊列的,攻擊方不停地建連接配接,但是建連接配接的時候隻做第一步,第二步中攻擊方收到server的syn+ack後故意扔掉什麼也不做,導緻server上這個隊列滿其它正常請求無法進來

第三步的時候server收到client的ack,如果這時全連接配接隊列沒滿,那麼從半連接配接隊列拿出相關資訊放入到全連接配接隊列中,否則按

tcp_abort_on_overflow

訓示的執行。

這時如果全連接配接隊列滿了并且tcp_abort_on_overflow是0的話,server過一段時間再次發送syn+ack給client(也就是重新走握手的第二步),如果client逾時等待比較短,就很容易異常了。

tcp_abort_on_overflow 為0表示如果三次握手第三步的時候全連接配接隊列滿了那麼server扔掉client 發過來的ack(在server端認為連接配接還沒建立起來)

【參考文檔】

https://www.cnblogs.com/sidesky/p/6844228.html

待補充

繼續閱讀