計算機網路基礎(3)——TCP/IP模型各層的主要協議及其功能(一)

淺淺愛默默發表於2019-01-03

1.TCP/IP協議體系概述      

         TCP/IP是指傳輸控制協議/網際協議,是針對Internet開發的一種體系結構和協議標準,其目的在於解決異種計算機網路的通訊問題,使得網路在互連時把技術細節隱藏起來,為使用者提供一種通用、一致的通訊服務。通常所說的TCP/IP協議實際上包含了大量的協議和應用,並且由多個獨立定義的協議組合在一起。因此更確切地說,TCP/IP是一個協議族而不是一種協議。

       我們可以看出,TCP/IP模型與OSI七層模型之間在分層上的區別,TCP/IP模型沒有表示層和會話層,網路層就是OSI參考模型的網路層,網路介面層相當於OSI參考模型中的物理層和資料鏈路層。但是無論是OSI參考模型還是TCP/IP模型都不是完美的,一般在學習網路時,會採取折中的方法,採用一種五層協議的結構,包括物理層,資料鏈路層,網路層,傳輸層和應用層。但是本文主要講的還是TCP/IP模型。

2. 資料的傳輸單位:

我們聽到聽到過包,幀,資料包,段,訊息,位元這六個詞語來表達資料的傳輸單位,那麼他們之間有什麼區別呢?我們可以大致區分如下:

  •      包(packet)可以說是全能性術語
  •     幀(frame)用於表示資料鏈路層中包的單位
  •     資料包是 IP 和 UDP 等網路層以上的分層中包的單位
  •     段則表示 TCP 資料流中的資訊
  •     訊息(message)是指應用協議中資料的單位
  •     位元(位元)是指物理層的傳輸單位

       通過下面的圖片,我們可以簡單瞭解一下TCP/IP模型封裝資料的過程,從應用層往下 ,每一層都加上各自的頭部資訊,在頭部資訊中包含了該層必要的資訊,然後向下傳輸,從下一層的角度來看,從上一層收到的包都當做該層的資料。到網路介面層還要加上尾部資訊,然後通過傳輸介質以及相應的中間裝置傳輸到目的端,最後再逐層對封裝好的資料進行解封。實現通訊。

3. 資料的處理流程:

下圖中以使用者A向使用者B傳送郵件為例簡單分析資料的處理流程:

1)應用程式處理

  •     首先應用程式會對要傳輸的資料進行編碼處理,這些編碼相當於 OSI 的表示層功能;編碼轉化後,郵件不一定馬上被髮送出去,這種何時建立通訊連線何時傳送資料的管理功能,相當於 OSI 的會話層功能。

2)TCP 模組的處理

  •     TCP 根據應用的指示,負責建立連線、傳送資料以及斷開連線。TCP 提供將應用層發來的資料順利傳送至對目的端的可靠傳輸。為了實現這一功能,需要在應用層資料的前端附加一個 TCP 首部,包括源埠目的埠等資訊。

3)IP 模組的處理

  •     IP 將 TCP 傳過來的 TCP 首部和 TCP 資料合起來當做自己的資料,並在 TCP 首部的前端加上自己的 IP 首部。IP 包生成後,參考路由快取表選擇接受此 IP 包的路由或主機。

4)網路介面的處理

  •     從 IP 傳過來的 IP 包對於網路介面層來說就是資料。給這些資料附加上鍊路層的首部並進行傳送處理,生成的鏈路層資料包將通過物理層傳輸給接收端。

5)網路介面的處理

  •     主機收到以鏈路層的包後,首先從鏈路層首部找到 MAC 地址判斷是否為傳送給自己的包,若不是則丟棄資料。
  •     如果是傳送給自己的包,則從鏈路層包首部中的型別確定資料型別,再傳給相應的模組,如 IP、ARP 等。這裡的例子則是 IP 。

6)IP 模組的處理

  •     IP 模組接收到資料後也做類似的處理。從包首部中判斷此 IP 地址是否與自己的 IP 地址匹配,若不匹配則丟棄。如果匹配則根據首部的協議型別將資料傳送給對應的模組,如 TCP、UDP。這裡的例子則是 TCP。另外,對於有路由器的情況,接收端地址往往不是自己的地址,此時,需要藉助路由快取表,在調查應該送往的主機或路由器之後再進行轉發資料。

7)TCP 模組的處理

  •     在 TCP 模組中,首先會計算一下校驗和,判斷資料是否被破壞。然後檢查是否在按照序號接收資料。最後檢查埠號,確定具體的應用程式。資料被完整地接收以後,會傳給由埠號識別的應用程式。

8)應用程式的處理

  •     接收端應用程式會直接接收傳送端傳送的資料。通過解析資料,展示相應的內容。

    注:TCP包關注埠號,接收到訊息返回ACK訊號;IP包關心目的IP地址,負責把包傳送出去,但是並不關心目的主機是否收到。
 

4.TCP/IP各層的主要功能

接下來我們將自頂向下詳細介紹各層的功能

1>應用層

應用層協議主要包括如下幾個:FTP、TELNET、DNS、SMTP、NFS、HTTP。

  • 檔案傳輸協議FTP(File Transfer Protocol),一般上傳下載用FTP服務,資料埠是20H,控制埠是21H。
  • TELNET服務是使用者遠端登入服務,使用23H埠,使用明碼傳送,保密性差、簡單方便。
  • 域名解析服務DNS(Domain Name Service),提供域名到IP地址之間的轉換,使用埠53。
  • 簡單郵件傳輸協議SMTP(Simple Mail Transfer Protocol),用來控制信件的傳送、中轉,使用埠25。
  • 網路檔案系統NFS(Network File System),用於網路中不同主機間的檔案共享。
  • 超文字傳輸協議HTTP(Hypertext Transfer Protocol),用於實現網際網路中的WWW服務,使用埠80。

2>傳輸層

  • 分段及封裝應用層送來的資料
  • 提供端到端的傳輸服務
  • 在傳送主機與接收主機之間構建邏輯通訊
  • 包括兩個協議:TCP和UDP協議

TCP協議(Transmission Control Protocol,傳輸控制協議)

  • 面向連線:通訊雙方交換資料之前必須建立連線
  • 可靠的:多種確保可靠性的機制
  • 位元組流服務:8bit(1Byte)為最小單位構成的位元組流

TCP協議(報文段格式)

 

  • 源埠和目的埠欄位——各佔 2 位元組。埠是運輸層與應用層的服務介面。運輸層的複用和分用功能都要通過埠才能實現。
  • 序號欄位——佔 4 位元組。TCP 連線中傳送的資料流中的每一個位元組都編上一個序號。序號欄位的值則指的是本報文段所傳送的資料的第一個位元組的序號。
  • 確認號欄位——佔 4 位元組,是期望收到對方的下一個報文段的資料的第一個位元組的序號。
  • 首部長度——佔 4 bit,它指出 TCP 首部共有多少個4位元組,首部長度可以在20~60位元組之間。因此,這個欄位值可以在5(5X4=20)至15(15X5=60)之間。
  • 保留欄位——佔 6 bit,保留為今後使用,但目前應置為 0。
  • 緊急位元 URG —— 當 URG=1 時,表明緊急指標欄位有效。它告訴系統此報文段中有緊急資料,應儘快傳送(相當於高優先順序的資料)。
  • 確認位元 ACK —— 只有當 ACK=1 時確認號欄位才有效。當 ACK=0 時,確認號無效。
  • 推送位元 PSH (PuSH) —— 接收 TCP 收到推送位元置 1 的報文段,就儘快地交付給接收應用程式,而不再等到整個快取都填滿了後再向上交付。
  • 復位位元 RST (ReSeT) —— 當 RST=1 時,表明 TCP 連線中出現嚴重差錯(如由於主機崩潰或其他原因),必須釋放連線,然後再重新建立運輸連線。
  • 同步位元 SYN —— 同步位元 SYN 置為 1,就表示這是一個連線請求或連線接受報文。
  • 終止位元 FIN (FINal) —— 用來釋放一個連線。當FIN=1 時,表明此報文段的傳送端的資料已傳送完畢,並要求釋放運輸連線。
  • 視窗欄位  —— 佔  2  位元組。視窗欄位用來控制對方傳送的資料量,單位為位元組。 TCP  連線的一端根據設定的快取空間大小確定自己的接收視窗大小,然後通知對方以確定對方的傳送視窗的上限。
  • 檢驗和 —— 佔 2 位元組。檢驗和欄位檢驗的範圍包括首部和資料這兩部分。在計算檢驗和時,要在 TCP 報文段的前面加上 12 位元組的偽首部。
  • 緊急指標欄位 —— 佔 16 bit。緊急指標指出在本報文段中的緊急資料的最後一個位元組的序號。
  • 選項欄位 —— 長度可變。TCP 只規定了一種選項,即最大報文段長度 MSS(Maximum Segment Size)。MSS 告訴對方TCP:“我的快取所能接收的報文段的資料欄位的最大長度是 MSS 個位元組。
  • 填充欄位 —— 這是為了使整個首部長度是 4 位元組的整數倍。

點選可直接跳轉:TCP協議中的三次握手和四次揮手

UDP協議(User Dategram Protocol,使用者資料包協議)

1、UDP只在IP的資料包服務之上增加了很少一點的功能,即埠的功能和差錯檢測的功能。

2、雖然UDP使用者資料包只能提供不可靠的交付,但UDP在某些方面有其特殊的優點

  • 傳送資料之前不需要建立連線
  • UDP的主機不需要維持複雜的連線狀態表
  • UDP使用者資料只有8個位元組的首部開銷
  • 網路出現的擁塞不會使源主機的傳送速率降低,這對某些實時應用(如IP電話、視訊會議)是很重要的。

3、UDP報文段頭部資訊分析:

用Wireshark抓取的頭部資訊如下:

 

相關文章