筆記--TCP的連接

1..在TCP/IP 協議簇中,傳輸層協議主要有兩個:TCP、UDP
2.TCP:傳輸控制協議,傳輸速度慢,安全性高
UDP:用戶數據報協議,傳輸速度快,安全性低。
3.TCP---傳輸控制協議,它是面向連接的、可靠的的協議,提供全雙工服務。
4.TCP將若干個字節構成一個分組,稱爲報文段。
TCP的報文段封裝在IP數據包中
筆記--TCP的連接
3.TCP報文段的首部格式
筆記--TCP的連接
上圖所示爲TCP報文段的首部,其中的參數分別是:
(1)源端口號:發送者的端口號
(2)目標端口號:接收者的端口號
(3)序號:發送數據時會給每個報文段的第一個字節一個隨機數X作爲編號, 保證數據的正確性。同時,編號相互獨立。
(4)確認號:接收者收到報文後,用來告訴發送者我已經收到。X+1
(5)URG----FIN屬於控制位,TCP的連接、斷開、傳輸都受其控制
①URG:與後面的額16位緊急指針配合使用,當URG=1時,生效。
②ACK:確認位。當ACK=1時,生效;當ACK=0時,無效。
③PSH:當PSH=1時,需要接收者儘快把數據段送到應用層。
④RST:當RST=1時。表示重新請求建立TCP連接
⑤SYN:需要建立連接時,SYN=1。
⑥FIN :需要斷開連接時,FIN=1。


上述內容是對TCP報文段的初步介紹;
接下來是TCP連接的三次握手,斷開連接時的四次握手。
假設:A爲客戶端,B爲服務端。
TCP三次握手

(1)A向B發送的報文段:請求連接SYN=1,隨機序號Seq=X;
A從CLOSED進入SYN_SEND狀態,等待B的確認。
B從CLOSED轉換到LISTEN狀態

(2)①B收到A的報文段後發送報文段:確認位ACK=1(Seq=X+1);
②隨機序號=Y,請求建立連接SYN=1;
B從LISTEN狀態轉換到SYN_RECV狀態,

(3)A收到B的報文段後發送報文段:確認位ACK=1(Seq=Y+1);
A和B進入Established狀態。開始傳輸。
就像兩個人初次見面:A說你好能交個朋友嗎;B聽見後回了聲你好,並伸出手準備握手;A看見B伸手,也伸出手和B握在一起。
A向B發出請求連接報文,報文是包含一個隨機序號(X)的SYN。
B收到後會發送一次報文,實現兩次操作:
一個是表示完整收到的確認序列號,該序列號爲X+1,這個1其實是ACK=1;另一個是請求連接的報文,包含一個隨機序號(Y)的SYN。
A向B回覆一個確認序列號,該序列號爲Y+1,這個1也是ACK=1。

-
TCP四次握手:
(1)A向B發送報文段:請求斷開連接FIN=1,ACK=1;
A此時處於FIN_WAIT_1狀態。
(2)B向A發送報文段:ACK=1;
B此時處於CLOSE_WAIT狀態,等待數據傳輸的完成;
A此時處於FIN_WAIT_2狀態。

(3)B向A發送報文段:請求斷開連接FIN=1,ACK=1;
B此時處於LAST_ACK狀態。
(4)A向B發送報文段:ACK=1;
A此時處於TIME_WAIT狀態,等待30S後處於CLOSED狀態;
B此時處於CLOSED狀態。

“好比兩個人面對面告別:A說我走了;B點頭確認,並說我也要走了;A確認點頭,隨後兩人轉身離開。如果說完就自顧走了,不去管對方,是多麼的……
這也是爲什麼是四次握手斷開連接。”
A向B提出請求斷開連接,B發送報文表示收到,但此時的數據可能沒有傳輸完,如果此時直接斷開的話就是傳輸失敗。所以只有當B把數據傳輸完,再向A發出斷開請求連接,A確認。這纔是一個完整的數據傳輸過程。

============================
總結一下客戶端與服務端的狀態的變化:
(1)客戶端的變化:
CLOSED-->SYN_SEND-->ESTABLISHED-->FIN_WAIT1-->FIN_WAIT2-->TIME_WAIT-->CLOSED;
(2)服務端的變化:
CLOSED-->LISTEN-->SYN_RECV-->ESTABLISHED-->CLOSED_WAIT-->LAST_ACK-->CLOSED。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章