計算機網絡 —— 網絡層(IP數據報)

計算機網絡 —— 網絡層(IP數據報)

  • 網絡層要滿足的功能
  • IP數據報
    • IP數據報格式
      • IP數據報首部格式
      • 數據部分
  • IP數據報分片

我們今天進入網絡層的學習。

網絡層要滿足的功能

網絡層作為OSI模型中的第三層,是計算機網絡體系結構的關鍵組成部分,其主要功能包括但不限于以下幾點:

  1. 路由與轉發:網絡層負責決定數據包從源主機到目的主機的最佳路徑。這一過程包括路由選擇(Routing),即根據網絡拓撲、鏈路狀態、路由協議等信息計算路徑;以及分組轉發(Packet Forwarding),即路由器根據路由表將數據包從一個網絡接口轉發到另一個網絡接口,直至到達目的地。
  1. 異構網絡互聯:網絡層使得不同類型的網絡(如以太網、Wi-Fi、衛星網絡等)能夠相互通信。通過使用網關和路由器等中間設備,網絡層能夠實現不同網絡技術之間的橋接,保證數據可以在多樣化的網絡環境中無縫傳輸。
  1. 地址分配與尋址:網絡層為每臺主機分配邏輯地址(如IPv4或IPv6地址),這些地址用于在網絡中唯一標識每一臺設備。同時,它還負責將高層的邏輯地址轉換為數據鏈路層的物理地址(MAC地址),以實現數據的實際傳輸(如通過ARP協議)。
  1. 擁塞控制:網絡層需要監控網絡的擁塞狀況,當網絡資源接近飽和時,采取措施如調整數據發送速率、丟棄某些數據包或采用其他策略,以防止網絡性能嚴重下降,確保網絡的穩定性和效率。
  1. 分片與重組:對于需要跨越多個網絡傳輸且超過下一跳最大傳輸單元(MTU)的數據包,網絡層負責將其分片并在目的地重新組裝,確保數據完整性。
  1. 服務質量(QoS)管理:根據應用需求,網絡層可以提供不同級別的服務,如優先級調度、帶寬預留等,以保證關鍵業務的數據傳輸質量。
  1. 安全性:雖然安全性主要是傳輸層和應用層關注的焦點,但網絡層也參與安全機制,如IPSec可以提供數據加密和身份驗證,保護數據在傳輸過程中的安全。

在這里插入圖片描述

綜上,網絡層是確保數據能夠在復雜的網絡環境中正確、高效、安全傳輸的基礎,其功能直接影響到整個網絡的性能和可靠性。

IP數據報

在這之前,我們來復習一下之前學的東西:
在這里插入圖片描述
我們看到IP(網絡層),占了很大一部分,其中IP向上為ICMP,TCP等提供服務,也為下面的ARP,數據鏈路層,和物理層服務。

我們來回憶一個數據如何被處理的:
在計算機網絡中,數據從一個應用程序傳輸到另一個應用程序的過程中,需要經過OSI模型的多個層次,每個層次都有其特定的功能。以下是一個簡化的描述,說明數據從應用層到物理層再到接收端反向過程中的每一層所做的主要事情:

  1. 應用層
  • 數據最初由用戶在應用程序中生成,比如在瀏覽器中輸入網址或在郵件客戶端撰寫郵件。
  • 應用層協議(如HTTP、SMTP、FTP)負責將用戶數據封裝成應用層數據單元,并附加必要的控制信息,如頭部信息,以供下一層處理。
  1. 傳輸層
  • 傳輸層(TCP或UDP)接收應用層的數據,并添加源端口號和目的端口號,用于標識發送方和接收方的進程。
  • TCP提供可靠傳輸,包括錯誤檢測、流量控制、擁塞控制和重傳機制;UDP則提供無連接服務,不保證數據的可靠傳輸,但速度快。
  1. 網絡層(IP層):
  • 網絡層接收傳輸層的數據單元,并封裝成IP數據報。它添加源IP地址和目的IP地址,以及其它必要的控制信息。
  • 網絡層負責路由決策,決定數據報在網絡中的傳輸路徑,并進行分片和重組處理(如果需要通過不同MTU的鏈路)。
  1. 數據鏈路層
  • 數據鏈路層將網絡層的IP數據報封裝成幀。這包括添加幀頭(包含源MAC地址和目的MAC地址)和幀尾。
  • 它還執行差錯檢測(如CRC校驗),流量控制,以及介質訪問控制(如CSMA/CD、CSMA/CA)。
  1. 物理層
  • 物理層處理實際的比特流傳輸,將數據鏈路層的幀轉換成電信號、光信號或無線信號等物理信號。
  • 它定義了網絡連接的物理特性,如電壓、線纜類型、信號頻率等,確保數據能在物理媒介上傳輸。

接收端的反向過程

  • 數據從物理層開始,逐層向上解封裝,每一層去除對應的頭部信息,并根據頭部信息進行必要的處理(如錯誤檢測、流量控制)。
  • 最終,數據到達應用層,恢復成原始的應用程序數據,供接收方應用程序使用。

我們看到,網絡層接收到上層的數據之后,把這些數據封裝,形成IP數據報,然后向下傳輸。

IP數據報格式

IP數據報是Internet Protocol (IP)協議中數據傳輸的基本單元,它包括兩個主要部分:首部(Header)和數據部分(Data)。

IP數據報首部格式

  1. 固定部分(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地址。
  1. 可變部分
  • 選項(Options):可選字段,允許IP數據報攜帶額外信息,如記錄路由、時間戳等。這部分的長度可變,因此首部總長度會超過20字節。
  • 填充(Padding):為了保持首部為32位字節對齊,可能需要填充一些額外的0比特。

數據部分

  • 這是實際傳輸的數據,可以承載如TCP段或UDP數據報等上層協議的數據。其長度是可變的,取決于實際傳輸的需求,但總長度(首部加數據)不能超過最大傳輸單元(Maximum Transmission Unit, MTU)限制,否則需要進行分片處理。

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

綜上所述,IP數據報的格式設計旨在提供一種靈活且通用的封裝機制,以支持不同類型的上層協議數據通過互聯網進行傳輸。

IP數據報分片

IP數據報分片是網絡層的一個重要機制,當一個IP數據報的大小超過了其即將穿越的網絡路徑中某段鏈路的最大傳輸單元(MTU)時,就需要進行分片。這個過程主要涉及以下幾個方面:

  1. 目的: 分片的目的是確保大型的數據報能夠適應各種網絡鏈路的MTU限制,從而能夠通過網絡中的不同設備和鏈路進行傳輸。
  2. 過程: 分片通常發生在數據報的源節點或途經的任何需要分片的路由器上。源節點可以通過路徑MTU發現(Path MTU Discovery)機制預先獲知路徑上的最小MTU以避免分片,但如果沒有這樣做或者路徑MTU在傳輸過程中發生變化,路由器可能需要進行分片。
  3. 分片信息: 分片后的每個數據報片段都包含一個IP首部,其中的標識符(Identification)、標志(Flags)和片偏移(Fragment Offset)字段對于分片和重組至關重要。
  • 標識符:確保同一原始數據報的所有分片可以被識別并重新組合。
  • 標志:包括一個是否還可以繼續分片的標志位(DF,Don’t Fragment)和一個更多分片(MF,More Fragments)的標志位,后者用來表明是否還有其他分片跟隨當前分片。
  • 片偏移:指示該分片在原始數據報中的相對位置,單位為8字節。
  1. 重組: 分片的重組通常在數據報的目的地,即接收方的IP層完成。接收方根據標識符將屬于同一數據報的分片收集起來,并根據片偏移重新排序,最終合并成原始的數據報。如果任何一片丟失,整個數據報將無法重組,這可能導致高層協議(如TCP)超時重傳或ICMP錯誤消息通知發送方。
  2. 透明性: 對于傳輸層協議(如TCP和UDP)來說,分片和重組過程是透明的,它們看到的是完整的數據報。
  3. 潛在問題: 分片和重組增加了網絡復雜性和延遲,且可能導致一些安全問題,如IP分片攻擊。現代網絡設計傾向于避免分片,例如通過使用路徑MTU發現和設置DF標志來請求中間路由器不要分片,而是讓源節點處理分片或使用更小的MTU值來傳輸數據。

在這里插入圖片描述
在這里插入圖片描述
舉個例子:
在這里插入圖片描述很明顯,數據部分的長度超過了最大限制,如果準許分片的話,我們就要對它進行分片,除開頭部的20字節,我們分隔,以1400為單位進行劃分,然后加上原來的20字節的頭部:
在這里插入圖片描述
然后我們就要計算,這些分片的相對位置,用起始位置/8:
在這里插入圖片描述
在這里插入圖片描述
這里注意區分一下和其他字段的區別:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24399.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24399.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實驗六、IPv4 地址的子網劃分,第 2 部分《計算機網絡》

你有沒有發現,困的時候真的清醒不了。 目錄 一、實驗目的 二、實驗內容 三、實驗小結 一、實驗目的 完成本練習之后,您應該能夠確定給定 IP 地址和子網掩碼的子網信息。 知道 IP 地址、網絡掩碼和子網掩碼后,您應該能夠確定有關該 IP 地…

SpringBoot實現參數校驗攔截(采用AOP方式)

一、AOP是什么? 目的:分離橫切關注點(如日志記錄、事務管理)與核心業務邏輯。 優勢:提高代碼的可讀性和可維護性。 關鍵概念 切面(Aspect):包含橫切關注點代碼的模塊。通知&#xff…

【2024最新華為OD-C/D卷試題匯總】[支持在線評測] 運輸時間(200分) - 三語言AC題解(Python/Java/Cpp)

?? 大家好這里是清隆學長 ,一枚熱愛算法的程序員 ? 本系列打算持續跟新華為OD-C/D卷的三語言AC題解 ?? ACM銀牌??| 多次AK大廠筆試 | 編程一對一輔導 ?? 感謝大家的訂閱? 和 喜歡?? ??在線評測鏈接 運輸時間(200分) ?? 評測功能需要訂閱專欄后私信聯系清隆解…

【面試干貨】索引的優缺點

【面試干貨】索引的優缺點 1、創建索引可以大大提高系統的性能(**優點**)2、增加索引也有許多不利的方面(**缺點**) 💖The Begin💖點點關注,收藏不迷路💖 1、創建索引可以大大提高系…

LiDAR360MLS 7.2.0 雷達點云數據處理軟件功能介紹

新增模塊和功能: 支持手持、背包數據的解算 SLAM解算成功率提升 SLAM解算效率提升 采集端與后處理端保持一致 賦色優化 新增平面圖模塊 新增平面圖全自動矢量化功能 新增平面圖矢量一鍵導出DXF功能 新增平面圖正射影像一鍵導出功能 支持交叉、垂直繪制 支…

添加west擴展命令

使用west工具的幫助命令,west -h,不僅可以列出west工具的內置命令,也可以列舉當前工程中實現的擴展命令,如build,flash等。 本文將介紹如何添加擴展命令。 west擴展命令的位置通過以下方式查找: 1. 首先找…

kafka消息積壓處理方案

背景: 某值班的一天,生產出現消息積壓問題,對此類的問題做出快速應對方案來避免同類型問題,防止影響范圍進一步的擴大。 出現消費積壓后如何處理: 首先優先處理消息積壓,如果代碼邏輯問題,立…

【第12章】SpringBoot實戰篇之文件上傳(含阿里云OSS上傳)

文章目錄 前言一、本地文件上傳二、阿里云OSS上傳1. 環境準備2.安裝SDK3.使用長期訪問憑證3.1 獲取RAM用戶的訪問密鑰3.2 配置RAM用戶的訪問密鑰(Linux)3.3 從環境變量中獲取RAM用戶的訪問密鑰 4. 工具類5.使用 總結 前言 本章節介紹本地文件上傳和阿里云OSS上傳。 一、本地文…

Python 機器學習 基礎 之 【實戰案例】輪船人員獲救預測實戰

Python 機器學習 基礎 之 【實戰案例】輪船人員獲救預測實戰 目錄 Python 機器學習 基礎 之 【實戰案例】輪船人員獲救預測實戰 一、簡單介紹 二、輪船人員獲救預測實戰 三、數據處理 1、導入數據 2、對缺失數據的列進行填充 3、屬性轉換,把某些列的字符串值…

LSTM-Adaboost基于雙向長短期記憶網絡結合集成學習實現股價預測附matlab代碼

% 股價預測 - LSTM-Adaboost集成學習 % 加載股價數據 load(‘stock_data.mat’); % 假設數據已經存儲在stock_data.mat文件中 prices stock_data.prices; % 假設股價數據存儲在名為prices的變量中 % 數據預處理 normalized_prices (prices - mean(prices)) / std(prices); …

數組中尋找符合條件元素的位置(np.argwhere,nonzero)

今天遇到一個問題,就是尋找符合條件的元素所在的位置,主要使用np.argwhere和nonzero函數 比如給我一個二維數組,我想知道其中元素大于15的位置 方法1 import numpy as np exnp.arange(30) enp.reshape(ex,[3,10]) print(e) print(e>15…

南山代理記賬,為您提供專業、高效的服務和全方位的支持

隨著商業活動的不斷深化和擴展,企業的會計工作越來越重要,而作為一家專業的代理記賬公司,“南山代理記賬”始終致力于為客戶提供專業、高效的服務,幫助他們在經營過程中更好地管理和運用資金。 南山代理記賬公司的服務范圍廣泛&am…

【日記】遇到了一個 “不愿睜眼看世界也沒受過社會毒打” 的逆天群友(464 字)

正文 今天坐在柜臺玩了一天手機…… 手機都玩沒電了快。下午在勸一個群友睜眼看世界,實在勸不動。他真的太逆天了,我不清楚這么高學歷的人,怎么能說出這么天真的話。逆天又離譜。 晚上的時間幾乎全在做家務。平時晚上都是跳舞來著&#xff0c…

mac安裝brew遇到的一些問題

mac終端執行命令/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”,無法建立連接或連接超時錯誤,錯誤信息如下: curl: (28) Failed to connect to raw.githubusercontent.com port 443 af…

標準價與移動平均價簡介

一、移動平均價 移動平均價優點: a.移動平均價格可反應”實時的”加權平均價格,特別是物料價格漲跌幅度大時物料的價格不會被差異扭曲。 b.因為是基于交易的實時加權平均計算價格,一般情況下,移動平均價不產生差異,價格相對真實。 c.如果所有的物料都使用…

module ‘django_cas_ng.views‘ has no attribute ‘login‘

這個錯誤表明你正在嘗試從django_cas_ng.views模塊中訪問一個名為login的屬性,但是這個模塊中并沒有名為login的屬性或方法。 解決這個問題,你需要確認你的代碼中是否有錯誤的引用。django_cas_ng是一個CAS(Central Authentication Service&…

mqtt-emqx:keepAlive機制測試

mqtt keepAlive原理詳見【https://www.emqx.com/zh/blog/mqtt-keep-alive】 # 下面開始寫測試代碼 【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2…

Ubuntu項目部署

解壓jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 配置Java環境變量&#xff1a; vim ~/.bashrc export JAVA_HOME/root/soft/jdk1.8.0_151 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH 設置環境變…

Python中的面向對象編程(OOP):概念、實踐與優勢

Python中的面向對象編程(OOP):概念、實踐與優勢 面向對象編程(Object-Oriented Programming,簡稱OOP)是一種程序設計模型,它將對象作為程序的基本單元,以提高代碼的可重用性、靈活性和擴展性。Python作為一種高級編程語言,對OOP提供了強大的支持。本文將詳細闡述Pyth…

武漢理工大學 云計算與服務計算 期末復習

云計算與的定義 長定義是&#xff1a;“云計算是一種商業計算模型。它將計算任務分布在大量計算機構成的資源池上&#xff0c;使各種應用系統能夠根據需要獲取計算力、存儲空間和信息服務。” 短定義是&#xff1a;“云計算是通過網絡按需提供可動態伸縮的廉價計算服務。 云計…