前言:
syn包:建立連線用的。
fin包:斷開連線用的。
tcp是這樣子的,一方要傳送請求,就需要和另外一方建立連線。另外一方要傳送請求的話,也需要和這一方建立連線。
tcp中為了滿足穩定性,每次傳送報文給對方,都要求返回ack確認報文,表示接受到了。
引自:①為什麼要3次握手:防止出現半連線攻擊這種情況。
分析:前言:
半關閉狀態:當a方請求和b方斷開連線之後,b方還是可以傳送資料給a方的,只是a方不可以傳送了而已。
分析:客戶端傳送fin包請求斷開連線,客戶端收到後,返回ack確認報文,告訴客戶端說,我知道了,你可以斷開連線了。但是伺服器不會立馬返回fin包,告訴客戶端可以斷開連線了。為什麼呢?
因為tcp是全雙工的,所以說在客戶端傳送斷開連線的請求的時候,可能伺服器剛好向客戶端傳送了資料,所以此時就需要有半關閉狀態這樣子的乙個特性來保證客戶端還可以接受到資訊。(可能此時伺服器的資料還沒有傳送完畢,但是客戶端申請斷開連線)
為了保證伺服器還可以向客戶端傳送完所有的資訊。所以需要再等一段時間,等到伺服器傳送完所有的資料之後,會向客戶端傳送乙個fin包,請求與客戶端斷開連線,然後客戶端接收到之後返回ack包,告訴伺服器說可以了。雙方才真正斷開連線。所以總共有4次。
主動方在傳送完最後乙個ack確認包給被動方之後,如果此時伺服器在1msl的時間內沒有收到客戶端傳送的這個包,那麼此時就會重新向主動方進行第三次揮手,即向主動方再傳送乙個fin包。此時如果主動方再2msl的時間內在此接受到這個fin包,那麼就再次向被動方傳送乙個ack包。此時傳送完這個包之後會再次等待2msl時間。重複上述操作,如果此時再經過2msl時間之後沒有收到被動方的fin包,那麼就會進入closed狀態。
Tcp三次握手與四次揮手
tcp三次握手 四次揮手 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 syn 同步序列編號 synchronize sequence numbers 第二次...
TCP三次握手與四次揮手
也許三次握手你會經常聽到,但你知道三次握手的真正意義嗎,為什麼需要三次握手呢?首先我們必須明白tcp是面向連線的協議,無論哪乙個方向在傳送資料之前,都必須先在雙方之間建立連線。這一點與udp協議是不一樣的,udp在傳送資料報之前是不需要建立連線的。建立tcp連線的過程中,通訊的雙方需要互相發報文進行...
tcp三次握手與四次揮手
一.tcp三次握手 簡述 a傳送乙個請求給b,b發回確認,然後a再加以確認,來回共3次 1 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認。2 第二次握手 伺服器收到syn包之後,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn syn...