https三次握手 4次斷開

2021-08-04 08:26:26 字數 1329 閱讀 6337

第一次握手:主機a傳送位碼為syn=1,隨機產生seq number=1234567的資料報到伺服器,主機b由syn=1知道,a要求建立聯機;

第二次握手:主機b收到請求後要確認聯機資訊,向a傳送ack number=(主機a的seq+1),syn=1,ack=1,隨機產生seq=7654321的包

第三次握手:主機a收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機a會再傳送ack number=(主機b的seq+1),ack=1,主機b收到後確認seq值與ack=1則連線建立成功。

四次握手斷開:

由於 tcp 連線是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的資料傳送任務後就能傳送乙個fin 來終止這個方向的傳送通道。收到乙個 fin 只意味著這一方向上沒有資料流動,乙個 tcp 連線在收到乙個 fin 後仍能傳送資料。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。  

( 1 )客戶端 a 傳送乙個 fin ,用來關閉客戶 a 到伺服器 b 的資料傳送(報文段 4 )。  

( 2 )伺服器 b 收到這個 fin ,它發回乙個 ack ,確認序號為收到的序號加 1 (報文段 5 )。和 syn 一樣,乙個fin 將占用乙個序號。  

( 3 )伺服器 b 關閉與客戶端 a 的連線,傳送乙個 fin 給客戶端 a (報文段 6 )。  

( 4 )客戶端 a 發回 ack 報文確認,並將確認序號設定為收到序號加 1 (報文段 7 )。

問題1: 為什麼建立連線協議是三次握手,而關閉連線卻是四次握手呢?  

這是因為服務端的 listen 狀態下的 socket 當收 到 syn 報文的建立連線請求後,它可以把 ack 和 syn ( ack 起應答作用,而 syn 起同步作用)放在乙個報文裡來傳送。但關閉連線時, 當收到對方的 fin 報文通知時,它僅僅表示對方沒有資料傳送給你了;但未必你所有的資料都全部傳送給對方了,所以你可以未必會馬上會關閉 socket, 也即你可能還需要傳送一些資料給對方之後,再傳送 fin 報文給對方來表示你同意現在可以關閉連線了,所以它這裡的 ack 報文 和 fin報文多數情況下都是分開傳送的。

http 請求響應常見狀態碼

200~299:表示成功接收請求並已完成整個處理過程。常用200

300~399:為完成請求,客戶需進一步細化請求。例如:請求的資源已經移動乙個新位址、常用302(意味著你請求我,我讓你去找別人),307和304(我不給你這個資源,自己拿快取)

400~499:客戶端的請求有錯誤,常用404(意味著你請求的資源在web伺服器中沒有)403(伺服器拒絕訪問,許可權不夠)

500~599:伺服器端出現錯誤,常用500

三次握手,四次斷開

三次握手,四次斷開 tcp是一種面向連線的單播協議,在傳送資料前,通訊雙方必須在彼此間建立一條連線。所謂的 連線 其實是客戶端和伺服器的記憶體裡儲存的乙份關於對方的資訊,如ip位址 埠號等。ack 確認,使得確認號有效。syn 用於初如化乙個連線的序列號。fin 該報文段的傳送方已經結束向對方傳送資...

tcp 三次握手連線,四次握手斷開

tcp握手協議 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線.第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 syn 同步序列編號 synchronize sequence numbers 第二次握手 伺服...

TCP連線 三次握手和四次斷開

1.面向連線 tcp是乙個面向連線的協議,面向連線是指任何一方向對方傳送資料前必須先建立通道,比如像打 一樣 必須要等到對方的手機響鈴,並且對方接聽 時,才能與對方通訊。而udp 則不是面向連線的協議,基於udp 協議的通訊雙方不需要事先與對方協商建立連線,也不管對方的ip 位址與埠號是否存在,就傳...