計算機網絡 —— 網絡層(IP數據報)
- 網絡層要滿足的功能
- IP數據報
- IP數據報格式
- IP數據報首部格式
- 數據部分
- IP數據報分片
我們今天進入網絡層的學習。
網絡層要滿足的功能
網絡層作為OSI模型中的第三層,是計算機網絡體系結構的關鍵組成部分,其主要功能包括但不限于以下幾點:
- 路由與轉發:網絡層負責決定數據包從源主機到目的主機的最佳路徑。這一過程包括路由選擇(Routing),即根據網絡拓撲、鏈路狀態、路由協議等信息計算路徑;以及分組轉發(Packet Forwarding),即路由器根據路由表將數據包從一個網絡接口轉發到另一個網絡接口,直至到達目的地。
- 異構網絡互聯:網絡層使得不同類型的網絡(如以太網、Wi-Fi、衛星網絡等)能夠相互通信。通過使用網關和路由器等中間設備,網絡層能夠實現不同網絡技術之間的橋接,保證數據可以在多樣化的網絡環境中無縫傳輸。
- 地址分配與尋址:網絡層為每臺主機分配邏輯地址(如IPv4或IPv6地址),這些地址用于在網絡中唯一標識每一臺設備。同時,它還負責將高層的邏輯地址轉換為數據鏈路層的物理地址(MAC地址),以實現數據的實際傳輸(如通過ARP協議)。
- 擁塞控制:網絡層需要監控網絡的擁塞狀況,當網絡資源接近飽和時,采取措施如調整數據發送速率、丟棄某些數據包或采用其他策略,以防止網絡性能嚴重下降,確保網絡的穩定性和效率。
- 分片與重組:對于需要跨越多個網絡傳輸且超過下一跳最大傳輸單元(MTU)的數據包,網絡層負責將其分片并在目的地重新組裝,確保數據完整性。
- 服務質量(QoS)管理:根據應用需求,網絡層可以提供不同級別的服務,如優先級調度、帶寬預留等,以保證關鍵業務的數據傳輸質量。
- 安全性:雖然安全性主要是傳輸層和應用層關注的焦點,但網絡層也參與安全機制,如IPSec可以提供數據加密和身份驗證,保護數據在傳輸過程中的安全。
綜上,網絡層是確保數據能夠在復雜的網絡環境中正確、高效、安全傳輸的基礎,其功能直接影響到整個網絡的性能和可靠性。
IP數據報
在這之前,我們來復習一下之前學的東西:
我們看到IP(網絡層),占了很大一部分,其中IP向上為ICMP,TCP等提供服務,也為下面的ARP,數據鏈路層,和物理層服務。
我們來回憶一個數據如何被處理的:
在計算機網絡中,數據從一個應用程序傳輸到另一個應用程序的過程中,需要經過OSI模型的多個層次,每個層次都有其特定的功能。以下是一個簡化的描述,說明數據從應用層到物理層再到接收端反向過程中的每一層所做的主要事情:
- 應用層:
- 數據最初由用戶在應用程序中生成,比如在瀏覽器中輸入網址或在郵件客戶端撰寫郵件。
- 應用層協議(如HTTP、SMTP、FTP)負責將用戶數據封裝成應用層數據單元,并附加必要的控制信息,如頭部信息,以供下一層處理。
- 傳輸層:
- 傳輸層(TCP或UDP)接收應用層的數據,并添加源端口號和目的端口號,用于標識發送方和接收方的進程。
- TCP提供可靠傳輸,包括錯誤檢測、流量控制、擁塞控制和重傳機制;UDP則提供無連接服務,不保證數據的可靠傳輸,但速度快。
- 網絡層(IP層):
網絡層接收傳輸層的數據單元,并封裝成IP數據報
。它添加源IP地址和目的IP地址,以及其它必要的控制信息。- 網絡層負責路由決策,決定數據報在網絡中的傳輸路徑,并進行分片和重組處理(如果需要通過不同MTU的鏈路)。
- 數據鏈路層:
- 數據鏈路層將網絡層的IP數據報封裝成幀。這包括添加幀頭(包含源MAC地址和目的MAC地址)和幀尾。
- 它還執行差錯檢測(如CRC校驗),流量控制,以及介質訪問控制(如CSMA/CD、CSMA/CA)。
- 物理層:
- 物理層處理實際的比特流傳輸,將數據鏈路層的幀轉換成電信號、光信號或無線信號等物理信號。
- 它定義了網絡連接的物理特性,如電壓、線纜類型、信號頻率等,確保數據能在物理媒介上傳輸。
接收端的反向過程:
- 數據從物理層開始,逐層向上解封裝,每一層去除對應的頭部信息,并根據頭部信息進行必要的處理(如錯誤檢測、流量控制)。
- 最終,數據到達應用層,恢復成原始的應用程序數據,供接收方應用程序使用。
我們看到,網絡層接收到上層的數據之后,把這些數據封裝,形成IP數據報,然后向下傳輸。
IP數據報格式
IP數據報是Internet Protocol (IP)協議中數據傳輸的基本單元,它包括兩個主要部分:首部(Header)和數據部分(Data)。
IP數據報首部格式
- 固定部分(20字節)(80位):
- 版本(Version):占4位,表示IP協議的版本,常見的有IPv4(值為4)和IPv6(值為6)。
- 首部長度(Internet Header Length, IHL):占4位,表示首部的長度,單位為32位字(4字節),因此最小值為5(即20字節的首部)。
- 服務類型(Type of Service, ToS):占8位,用于指定數據報的優先級和服務類型。
- 總長度(Total Length):占16位,表示整個IP數據報的長度,包括首部和數據部分,單位為字節。
- 標識符(Identification):占16位,用于標識每一個IP數據報,當數據報需要分片時,所有分片具有相同的標識符。
- 標志(Flags):占3位,與分片有關,用于控制和標識數據報是否可以分片及是否為最后一個分片。
- 片偏移(Fragment Offset):占13位,用于指示分片在原始數據報中的相對位置。
- 生存時間(Time to Live, TTL):占8位,定義數據報在網絡中的最大存活時間,每經過一個路由器TTL減1,為0時數據報被丟棄。
- 協議(Protocol):占8位,指出數據部分使用的上層協議,例如TCP(6)、UDP(17)。
- 頭部校驗和(Header Checksum):占16位,用于校驗首部是否有錯誤。
- 源IP地址(Source Address):占32位(IPv4)或128位(IPv6),標識發送方的IP地址。
- 目的IP地址(Destination Address):占32位(IPv4)或128位(IPv6),標識接收方的IP地址。
- 可變部分:
- 選項(Options):可選字段,允許IP數據報攜帶額外信息,如記錄路由、時間戳等。這部分的長度可變,因此首部總長度會超過20字節。
- 填充(Padding):為了保持首部為32位字節對齊,可能需要填充一些額外的0比特。
數據部分
- 這是實際傳輸的數據,可以承載如TCP段或UDP數據報等上層協議的數據。其長度是可變的,取決于實際傳輸的需求,但總長度(首部加數據)不能超過最大傳輸單元(Maximum Transmission Unit, MTU)限制,否則需要進行分片處理。
綜上所述,IP數據報的格式設計旨在提供一種靈活且通用的封裝機制,以支持不同類型的上層協議數據通過互聯網進行傳輸。
IP數據報分片
IP數據報分片是網絡層的一個重要機制,當一個IP數據報的大小超過了其即將穿越的網絡路徑中某段鏈路的最大傳輸單元(MTU)時,就需要進行分片。這個過程主要涉及以下幾個方面:
- 目的: 分片的目的是確保大型的數據報能夠適應各種網絡鏈路的MTU限制,從而能夠通過網絡中的不同設備和鏈路進行傳輸。
- 過程: 分片通常發生在數據報的源節點或途經的任何需要分片的路由器上。源節點可以通過路徑MTU發現(Path MTU Discovery)機制預先獲知路徑上的最小MTU以避免分片,但如果沒有這樣做或者路徑MTU在傳輸過程中發生變化,路由器可能需要進行分片。
- 分片信息: 分片后的每個數據報片段都包含一個IP首部,其中的標識符(Identification)、標志(Flags)和片偏移(Fragment Offset)字段對于分片和重組至關重要。
- 標識符:確保同一原始數據報的所有分片可以被識別并重新組合。
- 標志:包括一個是否還可以繼續分片的標志位(DF,Don’t Fragment)和一個更多分片(MF,More Fragments)的標志位,后者用來表明是否還有其他分片跟隨當前分片。
- 片偏移:指示該分片在原始數據報中的相對位置,單位為8字節。
- 重組: 分片的重組通常在數據報的目的地,即接收方的IP層完成。接收方根據標識符將屬于同一數據報的分片收集起來,并根據片偏移重新排序,最終合并成原始的數據報。如果任何一片丟失,整個數據報將無法重組,這可能導致高層協議(如TCP)超時重傳或ICMP錯誤消息通知發送方。
- 透明性: 對于傳輸層協議(如TCP和UDP)來說,分片和重組過程是透明的,它們看到的是完整的數據報。
- 潛在問題: 分片和重組增加了網絡復雜性和延遲,且可能導致一些安全問題,如IP分片攻擊。現代網絡設計傾向于避免分片,例如通過使用路徑MTU發現和設置DF標志來請求中間路由器不要分片,而是讓源節點處理分片或使用更小的MTU值來傳輸數據。
舉個例子:
很明顯,數據部分的長度超過了最大限制,如果準許分片的話,我們就要對它進行分片,除開頭部的20字節,我們分隔,以1400為單位進行劃分,然后加上原來的20字節的頭部:
然后我們就要計算,這些分片的相對位置,用起始位置/8:
這里注意區分一下和其他字段的區別: