小編又來了,前幾篇文章中,我們介紹了以太網的基礎知識,從負責傳輸位元流的實體層,到資料鏈結層,再到網路層,7層OSI模型已經介紹完了三層。今天呢,我們繼續來介紹以太網的傳輸層,以下是介紹內容,首先我們先來看看傳輸層的作用:
傳輸層的協議解決了端到端連接並提供傳輸服務。
這種傳輸服務分為可靠和不可靠的,其中 TCP 是可靠傳輸,UDP 是不可靠傳輸。
---為端到端連接提供流量控制、錯誤控制、服務品質等管理服務。
其中在傳輸層主要常見的協議主要有兩種,一種是TCP,一種是UDP。我們就先從TCP協議開始介紹。
備註1:傳輸層協議種類繁多,例如:TCP、UDP、TLS、RTP、SCTP、SPX、ATP、IL等。
備註2:對於APP開發者來說,如果是運行Linux/Android的系統,常見的就是傳輸層的協議,也就是常說的Socket網路程式設計。
對於TCP協議,我們先來看看TCP是由哪三個英文單詞縮寫而成的。傳輸控制協議(英文:Transmission Control Protocol,簡稱TCP),是一種面向連線、可靠且基於字節流的傳輸層協議。TCP是基於IP的傳輸層協議。
了解了 TCP 協議的基本概念,我們接著來看看 TCP 協議段格式:
備註:順便普及一下封包、框架、資料包、段落、訊息這五個術語,這些都是用來表述資料的單位,大致區分如下:
---包可以說是全能性術語;
---帧用於表示資料鏈路層中封包的單位;
---資料包是 IP 和 UDP 等網路層以上的分層中封包的單位;
---段則表示 TCP 資料流中的資訊;
---消息是指應用協議中資料的單位。
對於段格式的詳細介紹如下:
源端口號:
---源端口號表示報文的發送端口,占16位。源端口號和源IP地址結合起來,可以標識報文的發送地址。
---目的端口號表示報文的接收端口,占16位。目的端口號和目的IP地址相結合,可以標識報文的接收地址
---序列號,TCP傳輸過程中,在發送端的字節流中,傳輸報文中的數據部分的每一個字節都有它的編號。序號占32位,發起方在發送數據時,都需要標記序號。
---確認號標識了報文接收端期望接收的字節序列。如果設定了ACK控制位,確認序號的值表示下一個準備接收的封包的序號。
---首部長度,該欄位占4位,用來表示TCP報文的首部長度。
---保留欄位,目前暫時沒有什麼用途。
---控制旗標占6位,具體的旗標位為URG、ACK、PSH、RST、SYS、FIN。有6個標誌位,每個標誌位1bit,也就是只有0和1兩種狀態。
---視窗大小,長度為16位元,共兩個位元組,用來進行流量控制的。
---校驗和長度為16位,共兩個字節,對整個TCP報文段,即TCP頭部和TCP數據進行校驗和計算,接收端用於對收到的數據包進行驗證。
---緊急指標,長度16位元,共兩個位元組,是一個偏移量,與sn序號值相加表示緊急資料最後一個位元組的序號。
注意:以上10項內容是TCP封包首部的必要欄位,也稱為固有欄位,長度為20字節。接下來就是選填項目和填充部分。
介紹完TCP協議段格式,接下來我們繼續看看TCP協議的傳輸過程:TCP 的資料傳輸過程包含三個階段:建立連線(三次握手)、資料傳輸、斷開連線(四次揮手)。
1: 建立連線(三次握手):
TCP 連線的建立是透過三次握手過程完成的,目的是確認雙方的接收和發送能力是否正常,同時交換必要的參數,例如序列號和窗口大小,為資料傳輸做好準備。
---第一次握手客戶端發送一個SYN(同步)封包給伺服器,並指定一個初始序列號。客戶端進入SYN-SENT狀態,等待伺服器的回應。
---第二次握手伺服器收到 SYN 封包後,如果同意建立連線,則會回傳一個 SYN-ACK(同步確認)封包作為回應。伺服器同時也會發送自己的初始序列號,並進入 SYN-RECEIVED 狀態。
---第三次握手客戶端收到 SYN-ACK 封包後,會向伺服器發送一個 ACK(確認)封包,以確認收到伺服器的 SYN 封包。此時,TCP 連線建立,雙方進入 ESTABLISHED 狀態,可以開始進行資料傳輸。
2:資料傳輸:
在連線建立後,TCP進入資料傳輸階段。資料在應用層被分割成資料段,然後在傳輸層被進一步分割成TCP封包段。每個TCP封包段包含序列號、確認號以及其他控制資訊。發送方將資料傳送給接收方,並等待接收方的確認。如果發送方在一定時間內未收到確認,它將重新傳送資料。
3:斷開連線(四次揮手):
數據傳輸完成後,TCP連線需要被斷開。斷開連線的過程稱為四次揮手,包括以下步驟:
---第一次揮手一方(通常是客戶端)發送一個FIN(結束)訊息,請求斷開連線。
---第二次揮手另一方(通常是伺服器)收到FIN封包後,會發送一個ACK封包進行確認,並進入CLOSE-WAIT狀態。
---第三次揮手伺服器發送一個FIN報文給客戶端,請求斷開連線。
---第四次揮手客戶端收到FIN報文後,會發送一個ACK報文進行確認,然後進入TIME-WAIT狀態。經過一段時間後,客戶端進入CLOSED狀態,連線完全斷開。
透過以上對傳輸層 TCP 協議的簡單介紹,小編相信工程師們對 TCP 協議有了初步的認識,後續小編也會基於 TCP 協議傳輸的應用協議逐一介紹。
對了,介紹了TCP,下一篇猜猜小編會介紹什麼,猜對了,下一篇就會介紹UDP協議。
最後,小編還是那句話:加油,預祝中國科技早日實現自主可控。
┏(^0^)┛.
評論