HTTP TCP四次揮手

2021-09-30 20:35:23 字數 1513 閱讀 1970

引言正文

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

在三次握手過程中,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是分開傳送的

tcp 四次揮手 TCP四次揮手

tcp斷開連線的過程 客戶端傳送fin報文,表明客戶端將不在傳送資料。具體過程 把fin標誌位改為1,序號seq u,之前傳送的資料加1,這裡規定即使不攜帶資料序號也要 1。該過程中客戶端通過close系統呼叫從established狀態進入fin wait 1狀態。第二次揮手 服務端收到客戶端發來...

TCP四次揮手

純給自己看的 發起關閉的一方是客戶端,被動關閉的一方是伺服器。1 客戶端a傳送乙個fin 1,用來關閉客戶a到伺服器b的資料傳送。圖上畫的對,還有乙個seq n 2 伺服器b收到這個fin,它發回乙個ack 1,確認序號ack為收到的序號加1。3 伺服器b關閉與客戶端a的連線,傳送乙個fin 1給客...

簡述四次揮手

由於tcp連線是全雙工的,斷開乙個tcp連線,需要客戶端與伺服器傳送四個包來確認連線的斷開 因為tcp是全雙工的,因此,每個方向都要單獨關閉 當一方完成資料傳送任務後,傳送乙個fin來終止這一方向的連線,收到乙個fin只是意味著 一方向不會再收到資料了,但是這個tcp連線上仍然能夠傳送資料,直到這一...