sync cookie

why

  • SYNC FLOOD

SYNC FLOOD 就是在 TCP 三次握手過(guò)程中,發(fā)送給服務(wù)器海量的 sync 包,不應(yīng)答服務(wù)
器返回的 ACK。客戶端可以簡(jiǎn)單的不發(fā)送對(duì)應(yīng)的 ACK,也可以偽裝 SYN 發(fā)送的 ip 地址,
將其設(shè)置為不存在的 ip,比如內(nèi)網(wǎng) ip,這樣服務(wù)器發(fā)送的 SYN/ACK 永遠(yuǎn)都得不到回應(yīng)。

這樣服務(wù)器就需要維護(hù)海量的 半開(kāi)連接 ,等待客戶端的 ACK, 最終導(dǎo)致服務(wù)器資源耗
盡(sync queue 滿)而丟棄新的連接。

實(shí)現(xiàn)

要?jiǎng)?chuàng)建一個(gè)新的 tcp 連接,client 端必須發(fā)送一個(gè) TCP SYN 包給服務(wù)器,服務(wù)器返回一
個(gè) TCP SYN/ACK 報(bào)文,這個(gè)報(bào)文中的一個(gè)參數(shù)是 序列號(hào),用來(lái)重新拼接數(shù)據(jù)流。根據(jù)
TCP 協(xié)議,這個(gè)序列號(hào)可以由服務(wù)器端任意決定。 SYNC COOKIES 就是這個(gè)序列號(hào)的一
個(gè)特殊實(shí)現(xiàn)

* 初始 5 位: t mod 32,t 是時(shí)間戳
* 接下 3 位: mss 的編碼值
* 最后 24 位: 服務(wù)器 Port/ip,客戶端 Port/ip 值的 hash

客戶端收到這個(gè)序列號(hào) n 之后,發(fā)送 n + 1 給服務(wù)器,服務(wù)器通過(guò) n 來(lái)比對(duì) sync
cookie

在開(kāi)啟了 sync cookie 的情況下,sync queue 滿了的時(shí)候,連接再也不被丟掉,而是直
接返回相應(yīng)的 SYN/ACK 報(bào)文,看起來(lái)就像 sync queue 增大了一樣。

sync cookie 防火墻

對(duì)于防火墻來(lái)說(shuō),它可以開(kāi)啟 sync cookie 的功能。此時(shí) client 的三次握手是和防火墻
進(jìn)行的,防火墻相當(dāng)于起到了一個(gè)檢驗(yàn) client 的功能。client 通過(guò)驗(yàn)證之后,防火墻主
動(dòng)和 server 端進(jìn)行三次握手的連接的初始化過(guò)程。Junos 的相關(guān)文檔在此

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容