帶你喫透傳輸層協議,掌握TCP,UDP分分鐘(含三次握手和四次揮手原理以及TCP報文,UDP報文,常見的協議及其對應的端口)

前言:

TCP/IP協議簇的傳輸層協議主要有兩個,TCP(Transimission Control Protocol,傳輸控制協議)和UDP(User Datagram Protocol,用戶數據報協議)

一:TCP協議介紹

■TCP是面向連接的、可靠的進程到進程通信的協議
■TCP提供全雙工服務,即數據可在同一時間雙向傳輸
■TCP報文段
●TCP將若干個字節構成一個分組, 叫報文段(Segment)
●TCP報文段封裝在IP數據報中

二:TCP報文格式

2.1:TCP報文段

TCP將若干個字節構成一個分組,成爲報文段。

TCP報文段封裝在IP數據報中。

2.2:TCP報文段格式

在這裏插入圖片描述
源端口號:16位字段,爲發送方進程對應的端口號。

目標端口號:16位字段,對應的是接收端的進程,接收端收到數據後,根據這個端口號來確定吧這個數據送給哪個應用程序的進程。

序號:當TCP從進程接收數據字節時,就把他們存儲在發送緩存中,並對每一個字節進行編號。

確認號:確認號是對發送端的確認信息。用它來告訴發送端這個序號之前的數據段都已經收到。如確認號是X,就表示前X-1個數據段都已經收到。

首部長度:一般是20字節,最大可以擴展爲60字節。用它可以確定首部數據結構的字節長度。

保留:作爲今後擴展功能使用,現在還沒有使用到。

控制位:這六位作用很重要,TCP的連接,傳輸和斷開都受這六個控制位的指揮。各位的含義如下。

URG:緊急指針有效位。只有0和1,1表示指針開啓。數據傳輸時,先放在緩存(內存)中,臨時保存起來,緊急指針位是指可以在內存中優先提取數據。

PSH:標誌位=1時要求接收方儘快將數據段送達應用層。即PSH=1時,不經過緩存,直接將數據段送達應用層。優先級高於URG。

ACK:確認位。只有當ACK=1時,確認序列號纔有效。當ACK=0時,確認序列號字段無效。

SYN:連接位。同步序號位,TCP需要建立連接時將這個值設置爲1.誰提出建立連接請求,誰把SYN設爲1.

FIN:斷開連接標識。發送端完成發送任務位,當TCP完成數據傳輸需要斷開連接時,提出斷開連接的一方將這個值設置爲1.

RST:重新建立連接TCP連接時使用。,當RST=1時,通知重新建立TCP連接。

窗口大小:用於說明本地可接收數據段的數目,窗口大小是可變的。當網絡通暢是窗口值變大可以加快傳輸速度,當網絡不穩定時減小這個值可以保證網絡數據的可靠傳輸。TCP協議中的流量控制機制就是依靠變化窗口值的大小實現的。

校驗和:用來做差錯控制。在發送TCP數據段時,由發送端計算校驗和,到達目的地時再進行一次校驗和計算。若兩次校驗和一致,則說明數據基本是正確的,否則將認爲數據已被破壞,接收端將丟棄數據。

緊急指針:和URG配合使用,當URG=1時有效。

選項:在TCP首部可以有多達40字節的可選信息。

2.3:重點注意:

計算機中傳輸中通過0和1進行傳輸。
●SYN:同步序號位,TCP需要建立連接時將該值設爲1
●ACK:確認序號位,當該位爲1時,用於確認發送方的數據
●FIN:當TCP斷開連接時將該位置爲1

三:TCP三次握手

在這裏插入圖片描述

3.1:第一次握手

建立連接過程:PC1發送建立連接請求,SYN標誌位設爲1。

3.2:第二次握手

這一次握手實際上分爲兩部分來完成。

第一部分:PC2收到PC1的請求,向PC1回覆一個確認信息,此過程的典型標誌就是TCP的ACK控制位爲1。且確認序列號是PC1的初始序列號加1.

第二部分:PC2收到請求後需要回復。即PC2也向PC1發送建立連接的請求,此過程的典型標誌和第一次握手一樣,即TCP的SYN控制位爲1.

爲了提高效率,一般將這裏兩個部分合並在一個數據包裏實現。

3.3:第三次握手

PC1收到了PC2的回覆(包含請求和確認),此時需要向PC2回覆一個確認信息,此過程的典型標誌就是TCP的ACK控制位爲1.且確認序列號是PC2的初始序列號加1.

此時就完成了三次握手

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

3.4:對於上述總結

Seq表示請求序列號。

Ack表示確認序列號

SYN控制位只有在請求建立連接時才被設爲1

四:TCP四次揮手

在這裏插入圖片描述

4.1:第一次揮手

PC1發送 FIN 和 ACK 控制位爲1的TCP報文段給PC2.

FIN:斷開連接標識,提出斷開連接的一方將這個值設爲1.

ACK:ACK=1,表示確認序列號字段有效

4.2:第二次揮手

PC2收到PC1的信息,開始回覆。

PC2 回覆 ACK=1 的 TCP 報文段給 PC1。

4.3:第三次揮手

PC2現在開始主動發送消息給PC1,發送 FIN=1,ACK=1 的報文段給PC1.

即PC2也發消息給PC1,FIN=1,我(也)要和你斷開連接。ACK=1,確認序列號字段有效。

4.4:第四次揮手

PC1收到 PC2 的消息,回覆ACK=1 的TCP報文段。

ACK=1,確認PC2 發給 PC1 的序列號字段有效。

4.5:半關閉狀態

在TCP斷開連接(四次揮手)的過程中,TCP一方(通常是客戶端)可以終止發送數據,但仍然可以接收數據,成爲半關閉。

具體描述一下:

1.客戶端發送FIN報文段,半關閉了這個連接,服務器發送ACK報文段接受半關閉。

2.服務器繼續發送數據,而客戶端只發送ACK確認,不再發送任何數據。

3.當服務器吧所有數據都發送完畢時,就發送FIN報文段,客戶再發送ACK報文段,這樣就關閉了TCP連接。

4.6:這裏我們思考一下問題:

TCP建立連接需要三次握手,爲什麼終止連接需要四次揮手?(解釋在最後)

五:UDP協議介紹

5.1:UDP協議以及優缺點

UDP在實際工作中的應用範圍很廣,例如,聊天工具QQ在發送短消息時就使用了UDP的方式。

UDP缺點:是一個無連接,不保證可靠性的傳輸層協議,也就是說發送端不關心發送的數據是否達到目標主機,數據是否出錯等,收到數據的主機也不會告訴發送方是否收到了數據,它的可靠性由上層協議來保障。

UDP優點:UDP的首部結構簡單,在數據傳輸時能實現最小的開銷。

5.2:UDP報文的首部格式

在這裏插入圖片描述

5.3:常見協議及其端口號

:5.3.1:常用的TCP端口號及其功能
21-FTP FTP服務器所開放的控制端口
23-Telnet 用於遠程登錄,可以遠程控制管理目標計算機
25-SMTP SMTP服務器開放的端口,用於發送郵件
80-HTTP 超文本傳輸協議
110-POP3 用於郵件的接收
:5.3.2:常用的UDP端口號及其功能
69-TFTP 簡單文件傳輸協議
111-RPC 遠程過程調用
123-NTP 網絡時間協議

答案:TCP在網絡中的應用範圍很廣,主要用在對數據傳輸可靠性要求高的環境中,如網頁瀏
覽,它使用的HTTP就是依賴TCP提供可靠性的。在使用TCP時,通信方對數據的可靠性要
求高,即使因此降低了–些數據傳輸率也是可以接受的。

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