天天看點

HTTP-----TCP四次揮手推薦公衆号引言正文

目錄

  • 推薦公衆号
  • 引言
  • 正文
    • SYN攻擊
    • 四次揮手
    • 為什麼建立連接配接是三次揮手,關閉連接配接是四次揮手呢

推薦公衆号

有彩蛋哦!!!(或者公衆号内點選網賺擷取彩蛋)

HTTP-----TCP四次揮手推薦公衆号引言正文

引言

遲到的四次揮手,之前在看三次握手時已經整理過四次揮手了,然後一直在忙給忘記了今天發出來

正文

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不同時關閉連接配接

HTTP-----TCP四次揮手推薦公衆号引言正文

client和server同時關閉連接配接

HTTP-----TCP四次揮手推薦公衆号引言正文

由于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是分開發送的

繼續閱讀