個人理解TCP中SYN Cookie

2022-01-20 01:08:27 字數 1208 閱讀 7505

說起syn cookie還是得從tcp3次握手開始說起,先給出計網的體系結構圖

然後解釋一下syn,seq,ack,ack的相關名詞

syn(建立連線) ack(確認後全部為1) psh(傳送) fin(結束) rst(重置) urg(緊急)

產生syn flood(一種dos攻擊方式):在建立三次握手的情況時,第

二、三次握手,雙方分別分配快取和變數供建立連線使用,如此在第一次握手時,如果攻擊者不斷傳送tcp syn包給伺服器,那麼就會造成伺服器很大的系統開銷進而導致系統不能正常工作

解決方法:(syn cookie):就是在伺服器端第一次收到客戶端的syn包時不分配資料區,而是由seq計算乙個cookie值附帶到syn ack的初始序列號(在第二次握手的包中)中,下一次(即第三次握手)時如果序列號=初始序列+1(這裡說明一下,第一次客戶端seq是個隨機數,伺服器收到後也傳送seq隨機數,但是ack卻是客戶端的seq+1值,同理客戶端也是這樣,客戶端的ack是伺服器的seq+1),就分配資源.  簡單來說就是傳送給客戶端,返回訊息檢查後才分配資源,而之前是一來就分配好了

細化syn cookie實現過程:

1

實現的關鍵在於cookie的計算,cookie的計算應該包含本次連線的狀態資訊,使攻擊者不能偽造。23

4cookie的計算:56

7伺服器收到乙個syn包,計算乙個訊息摘要mac。89

10 mac =mac(a, k);

1112

13mac是密碼學中的乙個訊息認證碼函式,也就是滿足某種安全性質的帶金鑰的hash函式,它能夠提供cookie計算中需要的安全性。

1415

16在linux實現中,mac函式為sha1。

1718

19 a = source_ip || source_port || dst_ip || dst_port || t ||mssind

2021

22k為伺服器獨有的金鑰,實際上是一組隨機數。

2324

25t為系統啟動時間,每60秒加1。

2627

28 mssind為mss對應的索引。

TCP擁塞控制個人理解

常規的幾個概念如 慢啟動 指數增加 擁塞避免 線性增加 慢啟動閾值 sstresh 不說了,可以看下其他部落格。快速重傳 即收到3個冗餘ack馬上重新傳送該資料報,而不是等待該資料報超時再重傳。栗子 傳送端傳送1,2,3,4,5,6,7。其中4丟包了,接收端收到1,2,3,雙方都很滿意。然後接收端收...

TCP三次握手的個人理解

tcp三次握手 tcp ip協議是乙個協議族,裡面包括了ip協議,imcp協議,tcp協議,以及我們更加熟悉的http ftp pop3協議等等,這些協議類似於國際語言,大家在交流時同一使用的語言。osi參考模型自上而下分別是 osi參考模型 tcp ip五層模型 應用層,表示層,會話層,傳輸層 應...

TCP中select函式的理解

1 select一般用在非阻塞的通訊中 主要可以設定超時時間 2 一般服務端可以使用select的模型,如建立socket以後,監聽等待直到有accept,3 然後可以對所有接入的連線輪訓進行資料報的收發,主要使用如下幾個函式,該方法跟linux下poll或者epoll相似 fd zero set ...