TCPIP 握手揮手詳解

2021-09-08 03:30:03 字數 1624 閱讀 6709

一、通訊用的一些標誌

syn:同步標誌(synchronize)

ack:確認標誌(acknowledgement)

rst:復位標誌(reset)

urg:緊急標誌(urgent)

psh:推標誌(push)

fin:結束標誌(finish)

二、三次握手

1、第一次握手:建立連線時,客戶端a傳送syn(syn=j)包到伺服器b,並進入syn_send狀態,等待伺服器b確認。

2、第二次握手:伺服器b受到syn包,必須確認客戶a的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack

包,此時伺服器b進入syn_recv狀態。

3、第三次握手:客戶端a收到伺服器b的syn+ack包,向伺服器b傳送ack(ack=k+1),此包傳送完畢,客戶端a和伺服器b進入

established狀態,完成三次握手。

完成三次握手,客戶端和伺服器開始傳送資料。

三、四次揮手

由於tcp連線是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的資料傳送任務後就能傳送乙個fin來終止

這個方向的連線。收到乙個fin只意味著這一方向上沒有資料流動,乙個tcp連線在收到乙個fin後仍能傳送資料。

首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

揮手過程:

1、客戶端a傳送乙個fin,用來關閉客戶端a到伺服器b的資料傳送。

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

3、伺服器b關閉與客戶端a的連線,傳送乙個fin給客戶端a。

4、客戶端a發回ack報文去人,並將確認序號設定為收到序號加1。

四、一些問題

1、為什麼建立連線是三次,而關閉連線是四次?

a:因為伺服器的listen狀態下的socket當收到syn報文的建連請求後,可以將ack和syn放在乙個報文來傳送。

關閉時,收到對方fin時,它僅僅表示對方沒有資料傳送給你了,但未必你所有的資料都全部傳送給對方了,所以分開傳送。

2、為什麼time_wait狀態還需要等2msl後才能返回到closed狀態?

a:雖然雙方都同意關閉連線了,而且握手的4個報文也都協調和傳送完畢,按理可以直接回到closed狀態,但是因為我們必須

要假想網路是不可靠的,你無法保證你最後傳送的ack報文會一定被對方收到,因為對方處理last_ack狀態下的socket

可能會因為超時未收到ack報文,而重發fin報文,所以這個time_wait狀態的作用就是用來重發肯那個丟失的ack報文。

3、時間?

a:2msl,大約1~4分鐘,和具體作業系統有關。

4、listen的最大連線數含義?

a:表示的是最大併發連線數。

serversocket.listen(5)中的數目5是指服務方socket的監聽佇列長度。一旦某個連線到達server,server首先將該連線

放置於此佇列中,隨後由accept從該佇列取出乙個連線建立處理執行緒進行處理,這樣佇列又空出了乙個位置。由於accept速度

足夠快,一般不會出現佇列滿的情況。但是如果客戶端並分連線server,這種情況會很常見的,你可以試試併發10個客戶端

連線,結果會是不一樣的。

TCP IP協議詳解 三次握手四次揮手

tcp提供一種面向連線的,可靠的位元組流服務。tcp首部的資料格式如下。如果不計任選字段,通常是20個位元組 tcp報頭中的源埠號和目的埠號同ip資料報中的源ip與目的ip唯一確定一條tcp連線。控制位 urg ack psh rst syn fin,共6個,每乙個標誌位表示乙個控制功能。第一次握手...

TCP IP的三次握手與四次揮手詳解

tcp transmission control protocol 傳輸控制協議,是乙個面向連線的協議。在運用此協議進行資料傳輸前都會進行連線的建立工作 三次握手 當資料傳輸完畢,連線的雙方都會通知對方要釋放此連線 四次揮手 三次握手過程 第一次握手 host1傳送乙個tcp標誌位 syn 1 ac...

TCP IP的三次握手與四次揮手詳解

原文 tcp transmission control protocol 傳輸控制協議,是乙個面向連線的協議。在運用此協議進行資料傳輸前都會進行連線的建立工作 三次握手 當資料傳輸完畢,連線的雙方都會通知對方要釋放此連線 四次揮手 認識tcp標誌位 tcp標誌位有6種標示 syn synchrono...