目錄
- 推薦公衆号
- 引言
- 正文
-
- SYN攻擊
- 四次揮手
- 為什麼建立連接配接是三次揮手,關閉連接配接是四次揮手呢
推薦公衆号
有彩蛋哦!!!(或者公衆号内點選網賺擷取彩蛋)
引言
遲到的四次揮手,之前在看三次握手時已經整理過四次揮手了,然後一直在忙給忘記了今天發出來
正文
SYN攻擊
在三次握手過程中,server發送SYN-ACK之後,收到client的ACK之前的TCP連接配接稱為半連接配接(half-open connect),
此時server處于SYN_RCVD狀态,當收到ACK後,Server轉入ESTABLISHED狀态。SYN攻擊就是Client短時間内僞造
大量不存在的IP位址,并向Server不斷地發送SYN包,Server恢複确認包,并等待Client的确認,由于源位址是不存在的,
是以,Server需要不斷重發直至逾時,這些僞造的SYN包将長時間占用未連接配接隊列,導緻正常的SYN請求因為隊列滿而被丢棄,
進而引起網絡堵塞甚至系統癱瘓。SYN攻擊時一種典型的DDOS攻擊,檢測SYN攻擊的方式非常簡單,即當Server上有大量半連接配接
狀态且源IP位址是随機的,則可以判定遭到SYN攻擊了。使用指令 #netstat -nap | grep SYN_RECV可檢視半連接配接狀态
四次揮手
client和server不同時關閉連接配接
client和server同時關閉連接配接
由于TCP連接配接是全雙工的,是以每個方向都必須要單獨進行關閉,這一原則是當一方完成資料發送任務後,發送一個FIN來終止
這一方向的連接配接,收到一個FIN知識意味着這一方向上沒有資料流動了,即不會再收到資料了,但是在這個TCP連接配接上仍然
能夠發送資料,直到這一方向也發送了FIN。首先進行關閉的 一方将執行主動關閉,而另一方執行被動關閉;也有可能client和server同時發送了FIN
1.第一次揮手:client發送一個FIN,用來關閉client到server資料傳送,client進入FIN_WAIT_1狀态。
2.第二次揮手:server接收到FIN後,發送一個ACK給client,确認序号收到序号+1(與SYN相同,一個FIN占用一個序号),server進入CLOSE_WAIT狀态
3.第三次揮手:server發送一個FIN,用來關閉server到client的資料傳送,server進入LAST_ACK狀态
4.client收到FIN後,client進入TIME_WAIT狀态,接着發送一個ACK給server,确認序号為收到序号+1,server進入CLOSE狀态
完成四次揮手
為什麼建立連接配接是三次揮手,關閉連接配接是四次揮手呢
因為服務端在LISTEN狀态下,收到建立連接配接請求的SYN封包後,把ACK和SYN放在一個封包裡發送給用戶端。而關閉連接配接時,當收到
對方的FIN封包時,僅僅表示對方不在發送資料了但是還能接收到資料,已方也未必全部資料都發送給對方了,是以己方可以立即clise
也可以發送一些資料給對方後,在發送FIN封包給對方表示同意現在關閉連接配接,因為FIN和ACK是分開發送的