天天看點

【計算機網絡】詳解網絡層(一):資料包封裝和封包格式

一、前言

網絡層是網絡體系結構中非常重要的一層,在技術上又是非常複雜的一層。網絡層是從功能上定義的一個邏輯層次,與實體層和資料鍊路層有具體的裝置支援一樣,網絡層也有具體的裝置來完成其相關任務,最典型的就是我們常用的路由器(Router)。路由器就相當于連接配接不同城市公路的中轉車站,起資料中轉作用。

網絡層介于傳輸層和資料鍊路層之間,其主要作用是實作兩個網絡系統之間的資料透明傳送,具體包括路由選擇,擁塞控制和網際互連等。網絡層是網絡與網絡之間通信的最底層,在資料從資料鍊路層向傳輸層進行資料傳輸的通信中,起到建構一個中間通信子網的作用。不同網絡有這不同的網絡層協定和位址規範,如果一個網絡中的使用者不能識别其他網絡的通信協定和位址規範,那麼這兩個網絡之間就不能進行資料通信,就好比不同國家有着不同的交通法規,屬于不同的交警系統管理,不允許他國車輛随便出入一樣。不同網絡也有不同的設計規範,屬于不同的組織來管理,必須通過授權,并由專門的協定來負責網絡間的通信。如果隻是同一區域網路内的各個計算機之間的通信,單靠實體層和資料鍊路層就可以建立通信鍊路完成使用者間的資料通信,但要擴大應用範圍,連接配接不同的局域子網,就需要借助網絡層處理各個網絡子網的協定,進而進行計算機的網絡互連,是以網絡層在TCP/IP協定體系中叫網際互連層。

【計算機網絡】詳解網絡層(一):資料包封裝和封包格式

通常一個計算機網絡就是一個管理邊界,一般是屬于一個特定的公司,有一個特定的管理者負責,是以在進行計算機網絡互連時,要同時考慮兩方面的問題:一是授權使用者可以在不同網絡間互訪,共享雙方的資源;另一方面又要保持各計算機網絡管理原來的獨立性。從前面介紹的資料鍊路層,我們知道不同使用者之間進行通信,首先得知道彼此的位址,區域網路内部的使用者通路(實體層和資料鍊路層就可以建構一個區域網路)是通過MAC位址進行,但不同網絡之間進行通路不同通過屬于資料鍊路層位址的MAC位址來進行尋址,這需要網絡層對應的一個網絡位址來進行通路,每個網絡都通過其網絡位址,即NSAP(網絡服務通路點)來辨別,網絡中的每個節點都有一個NSAP。這個NSAP就是由對應網絡所運作的網絡層通信協定來定義的,在目前最常見的TCP/IP協定網絡中,這個協定就是IP協定,對應的NSAP就是IP位址。

在實體層傳輸的是一個個比特位(bit),在資料鍊路層中傳輸的是一個個以許多位元組為機關的幀(Frame),在每個幀的幀頭都有源節點的MAC位址和目的節點的MAC位址,區域網路内部的尋址就是通過MAC位址進行的,而在網絡層中傳輸的是資料包(Packet,也叫分組),一個資料包是一個資料幀經過網絡層協定重封裝後得到的,每個資料包的標頭(IP頭)都有源節點和目的節點的IP位址,網路間的尋址就是通過IP位址進行的。這樣我們知道網絡通信隻有兩種情況:如果通信雙方在同一個區域網路内,可直接通過資料鍊路層進行互相通信,但因為主機其實也有網絡層的路由功能,是以兩台主機間進行網絡通信時通常也是通過三層來進行的(IP協定則是IP位址尋址);如果通信雙方在不同網絡内,毫無疑問必須通過三層進行。事實上,網絡層的IP包到達鍊路層後還要重封裝成幀,因為不同網絡中的統一辨別就是三層位址(網絡位址),區域網路内鍊路層的則是MAC位址。是以不同層傳輸的資料包格式不一樣,因為每層的辨別不一樣。網絡層的IP包封裝成幀後,其中封裝的源和目的網絡位址作為幀的資料部分,不會改變,這在前面的資料鍊路層中有介紹。

二、網絡層的作用

在網絡體系中,每一層都是服務于對應的上下層的,網絡層也是,服務于上層的傳輸層和下層的資料鍊路層。其主要作用表現在一下幾個方面:

1、屏蔽網絡差異,提供透明傳輸

不同網絡有不同的規範要求,網絡層就是為了解決這種不同差異,尋找一個不同網絡間都能共同遵守的網絡通信規範,以便不同網絡間能互相識别,并接受對方的網絡請求,說白了,就是一個中轉站的作用,兩個毫無交集的網絡通過這個中轉站來建立交集。這樣傳輸層就可以在不同網絡間進行透明資料傳輸。網絡層向傳輸層提供的服務有兩類:面向連接配接的網絡服務和無連接配接的網絡服務。

  1. 虛電路是網絡層向傳輸層提供的一種面向連接配接的服務,是可以使所有資料包按順序到達目的節點的可靠資料傳送方式。在該種方式下,進行資料交換的兩個結點之間存在一條專為它們服務的虛電路(邏輯線路),無須附加網絡位址;
  2. 資料報服務是網絡層提供的一種無連接配接的網絡服務,隻能提供不可靠的資料傳送方式,源節點(如源路由器)發送的每個資料包都要附加網絡位址、包序号等資訊,目的節點收到的資料包也不一定按序到達,還可能存在資料包丢失的情況。IP協定是一種無連接配接的網絡層協定,提供無連接配接的網絡層服務。

2、為網絡間通信提供路由選擇 路由選擇也叫路由選擇,是根據一定的原則和路由選擇算法在多個結點的通信子網中選擇一條到達目的節點的最佳路徑的過程。确定路由選擇的政策成為路由算法。在無連接配接的資料包服務中,網絡節點要為每個資料包做出路由選擇,即選擇到達目的節點的最佳路線,而在面向連接配接的虛電路服務中,存在一條專們的邏輯線路,在建立連接配接時就已經确定了路有路徑,無需額外選擇。 3、資料包封裝和解封轉 這個類似的功能各個網絡層都提供,因為在網絡體系結構的不同層次中傳輸的資料機關并不一樣,且發送方和接收方接受資料包的路徑是相反的。在發送方,資料自上而下每經過一層都必須在資料頭部添加對應層的協定頭和(或)協定尾資訊,到了接收方,資料自下而上每經過一層又都必須解除前面那層所封裝的協定頭和(或)協定尾資訊。 在發送方,來自傳輸層的封包通常是已根據對應網絡鍊路的MTU(最大傳輸單元)被分成多個資料段,然後在網絡層中對這些資料段頭部添加一些網絡層協定控制資訊就組成了資料包,這就是包的封裝過程。資料包的頭部包含源節點 和目标節點的網絡層位址,在接收方,資料從底層到達網絡層時,要去掉在資料鍊路層加上的資料鍊路層協定控制資訊(幀頭和幀尾),還原出原來的資料包格式,這就是包的解封轉過程。 4、擁塞控制 擁塞控制是為了避免網絡傳輸路徑中資料的傳輸延遲或死鎖。在前面資料鍊路層介紹了流量控制功能,那是針對資料鍊路中點對點傳輸速率的控制,這裡的擁塞控制是針對在網絡層傳輸路徑中的端到端傳輸效率的控制。主要采用預約緩沖區、許可證和分組丢棄等方式。

三、網絡層資料交換 資料到了網絡層後,路由器便把這些資料包轉發到位于另一個網絡中的目的結點,那麼其是如何進行資料交換的呢? 在計算機網絡中,兩個端點之間通常需要通過中間結點實作資料通信,這些中間結點并不關心資料内容,隻提供一個交換裝置,把資料從一個結點轉發到另一個結點,直至達到目的端。 資料交換技術主要是指網絡中間結點所提供的資料交換功能。 先介紹以前的兩種資料交換技術:線路交換和封包交換 線路交換是在網絡中利用可切換的實體通信線路直接連接配接通信雙方所進行的一種資料交換方式。最常見的就是以前的電話交換系統,甲先轉幾下電話機(諜戰電視劇裡是這樣子),實際上是打到了電話交換系統,然後說轉局長辦公室,這樣電話員就把電話線插到局長辦公室的線路上,這樣就可以進行通信了,通話結束後,電話員就拔下這跟電話線。可以看出,線路交換最主要的特點就是在進行資料交換前需要在一對使用者之間建立起一條專用的資料通路(如電話線),在整個資料傳輸過程中要經過線路建立(如電話員切換線路)、資料傳輸(如通話)與線路釋放(如電話員拔下電線)這三個階段。 該方式的優點是:通話實時性強,适用于互動式會話類通信,其缺點是:對突發性通信不适合(需要事先建立好實體連接配接),整個資料交換系統效率低,系統也不具有存儲資料的功能,很難實作擁塞控制。 封包交換是指資訊以封包(完整資料的一個資訊段)為單元進行存儲-轉發的一種資料交換方式。所謂存儲-轉發是當封包到達路由器後先存儲起來,等待路由器配置設定資源再進行資料分組的轉發。 封包交換的原理是使用者發送的資料不是直接發送給目的節點,而是先在中間結點進行緩存(這類中間結點通常是由具有存儲能力的交換機、路由器承擔),然後再由中間結點線上路空閑時把資料發送出去。 既然具有存儲-轉發功能,封包交換就無須同時占用整個實體線路,中間結點可以暫存封包,排隊等候,當線路空閑時再轉發給下一個結點,直至終點。

下面介紹目前最常用的分組交換方式。 在分組交換技術中有兩大技術派系:一是采用路由技術(目前比較普遍采用的一種交換方式),在要轉發的資料標頭部加上源節點和目的節點的IP位址,然後通過路由技術一級級地把資料轉發下去。這種分組方式就是前面說到的資料報分組交換方式。 另一種就是虛電路服務了,它不依靠路由技術,而是在進行資料分組轉發前先在源節點和目的節點間的所有路由器間建立一條虛拟的通信通道,然後再把資料分組從這個虛拟通道中轉發到目的節點。 分組交換是集封包交換和線路交換兩者優點而開發的一種資料交換方式,也采用封包交換的存儲-轉發機制,并規定了傳輸資料的機關長度。現在主要采用這種資料方式。 當封包過長時,會把封包分成幾個組,在資料報服務方式中,會為每個分組添加封包号、分組号、目的位址、源位址和校驗字段資訊,然後将這些資訊發送出去,由通信子網中的節點進行路由選擇,當一個封包的所有分組到達了目的主機後,再将各個分組按序号編排起來。 采用虛電路這種服務方式的分組則無須添加源和目的位址資訊,但仍需要添加封包号、分組号資訊。在分組發送之前,已經搭建好了一條邏輯鍊路。

四、網絡層協定及封包格式 在TCP/IP體系結構的網際互聯層,最重要的協定就是IP協定簇。 目前的計算機網絡,特别是TCP/IP網絡,使用最多的是資料包分組交換方式,而IP協定是用于将多個分組交換網絡連接配接起來的最典型通信協定。IP協定是一個無連接配接的服務,負責在源位址和目的位址之間傳送資料包,然後為了使用不同網絡對分組大小的要求,需要對上層傳來的封包進行分割,最後調用本地網絡協定将資料包傳送給下一個網關或目的計算機。 1、IP協定基本功能 IP協定是一個無連接配接的服務,負責在源位址和目的位址之間傳送資料報,其主要功能就是把資料報在互連的網絡上傳送,将資料報在一個個子產品間通過路由處理網絡位址傳送到目的位址。具體來說具備以下幾方面的功能:

  1. 尋址,在不同網絡中必須通過三層位址進行尋址。常用的IP網絡中運作的三層協定就是IP協定,對應的三層位址就是IP位址。
  2. 資料報的封裝,從傳輸層過來的資料段需要經過IP協定的重封裝,而從資料鍊路層過來的資料幀就需要進行解封裝。在IP網絡中封裝後形成的是IP資料報,IP封裝的目的就是辨別此IP資料報發送節點和接受節點的IP位址和控制資訊。
  3. 分段與重組,不同網絡上的鍊路可以傳輸的最大封包大小是不同的,這就是我們通常說的MTU(最大傳輸單元)。尺寸較大的資料報在MTU值較小的網絡鍊路傳輸需要将資料報分段依次傳輸,對應的接收方就需要把這些接收到的拆分的分段組合起來,還原成原來的資料報。

後面介紹一下當今使用最多的網絡層IPv4 1、IPv4資料報格式

【計算機網絡】詳解網絡層(一):資料包封裝和封包格式
  • 版本,指定IP資料報中使用的IP協定版本,占4位。IPv4對應值為4(0100)
  • 首部長度,訓示IP資料報頭部的總長度,占4位。IP資料報頭部的總長度以4位元組為機關(即4位元組的整數倍)
  • 區分服務,用于表示資料報的優先級和服務類型,占8位。包括一個3位長度的優先級,4位長度的标志位,最高位未用
  • 總長度,辨別整個IP資料報的總長度,包括報頭和資料部分,占16位,由此可知IPv4的最大長度為65535(64KB)
  • 辨別,用于表示IP資料報的辨別符,占16位,每個IP資料報有一個唯一的辨別(不是序号)。當資料報分段時,這個辨別的值就被複制到所有分段的辨別字段中,相同的辨別字段值使分段後的資料報分段最後能正确地重組成為原來的資料報。
  • 标志,指出該IP資料報後面是否還有分段,為分段标志,占3位,僅最低位有意義
  • 片偏移,指出該分段在資料報中的相對位置。相對于使用者資料字段的起點,該字段從何處開始,占13位
  • 生存時間,辨別IP資料報在網絡中傳輸的有效期,以秒來計數,占8位。現在通常認為這個數值是指資料報允許經過的路由器數,當值為0時,就丢棄這個資料報。設定生存時間是為了防止資料報在網絡中無限制地循環轉發。
  • 協定,用來辨別此IP資料報在傳輸層所采用的協定類型(如TCP、UDP或ICMP等),以便使目的主機的IP層知道應将資料部分上交給哪個處理過程,占8位
  • 首部校驗和,用來檢驗IP資料報的標頭部分(不含“資料”部分)在傳輸到接收端後是否發生了變化,占16位。因為資料報每經過一個路由器,路由器都要重新計算一下報頭校驗和
  • 源位址/目的位址,分别表示該IP資料報發送者和接收者的IP位址,各站32位
  • 選項,用來支援各種選項,提供擴充餘地,後面的填充字段就是為了保證IP資料報的報頭是32位的整數倍。

我們用Wireshark抓包得到IP資料報各字段的示例。

【計算機網絡】詳解網絡層(一):資料包封裝和封包格式

2、IPv4資料報的封裝與解封轉 發送端網絡層生成的IP資料報還要繼續向下傳輸,到達資料鍊路層就要封裝成資料幀了。IP資料報的“幀封裝”隻需把來自網絡層的整個IP資料報(報頭和資料部分)當做資料鍊路層幀的資料部分,然後在前面加上與資料鍊路層對應的協定頭即可。 這裡補充前篇資料鍊路層中沒有說到的一點:在以太區域網路中,由于資料鍊路層分成了LLC子層和MAC子層這兩層,是以來自網絡層的IP資料報在到達資料鍊路層後先要經過LLC子層和MAC子層的協定頭封裝,最終形成資料鍊路層的以太網MAC幀。

【計算機網絡】詳解網絡層(一):資料包封裝和封包格式

資料幀格式參見資料鍊路層 (經過路由器)解封裝則是去掉幀頭和幀尾(如果有幀尾)。 可以得知,IP資料報無論經過了多少個網絡,整個資料報内容都不會變,包括報頭部分的源和目的位址資訊。變化的隻是在不同網絡資料鍊路上傳輸的幀頭資訊。

參考資料《深入了解計算機網絡》、《TCP/IP 一》

繼續閱讀