文章目錄
- 一、先判斷 SYN 是否合法
- 1、開啟「時間戳」機制
- 1.1、合法 SYN
- 1.2、非法 SYN
- 2、關閉「時間戳」機制
- 1.1、合法 SYN
- 1.2、非法 SYN
- 二、收到合法 SYN
- 三、收到非法 SYN
一、先判斷 SYN 是否合法
1、開啟「時間戳」機制
1.1、合法 SYN
客戶端的 SYN「序列號」比服務端「期望下一個收到的報文序列號」要大,并且 SYN「時間戳」比服務端「最后收到的報文時間戳」要大
1.2、非法 SYN
客戶端的 SYN「序列號」比服務端「期望下一個收到的報文序列號」要小,或者 SYN「時間戳」比服務端「最后收到的報文時間戳」要小
2、關閉「時間戳」機制
1.1、合法 SYN
客戶端的 SYN「序列號」比服務端「期望下一個收到的報文序列號」要大
1.2、非法 SYN
客戶端的 SYN「序列號」比服務端「期望下一個收到的報文序列號」要小
二、收到合法 SYN
提前結束 TIME_WAIT 狀態進入三次握手流程
三、收到非法 SYN
服務端收到 RST 后,看 Linux 內核參數 tcp_rfc1337 值
- /proc/sys/net/ipv4/tcp_rfc1337=0(默認):提前結束 TIME_WAIT 狀態,釋放連接
- /proc/sys/net/ipv4/tcp_rfc1337=1:丟掉 RST