Linux網絡:數據鏈路層以太網

目錄

    • 認識數據鏈路層
    • 關于以太網
      • 1. 基本概念
      • 2. 以太網幀格式
      • 3. MAC vs IP

認識數據鏈路層

數據鏈路層 位于物理層和網絡層之間,其作用是將源自物理層來的數據可靠地傳輸到相鄰節點的目標主機的網絡層,主要通過物理介質(如以太網,Wi-Fi等)將數據分割成幀,并在相鄰節點之間進行傳輸。

  • 主機:配有IP地址,但不進行路由控制的設備
  • 路由器:既配有IP地址,又能進行路由控制、
  • 節點:主機和路由器的統稱
  • 鏈路(Link):一個節點到另一個相鄰節點的一段物理線路,中間沒有任何其他節點。
    • 鏈路由傳輸介質和物理設備組成,傳輸介質主要有雙絞線,光纖,微波。在兩個節點進行通信的時候,鏈路只是一條完整通信路徑的一部分
  • 數據鏈路(Data Link):把實際控制數據傳輸協議的硬件和軟件加到鏈路上就構成了數據鏈路

補充:報文在傳輸層叫數據段(Segment),在網絡層叫數據報(Packet),在數據鏈路層叫做數據幀(Frame)

數據鏈路層的功能如下:

  • 封裝成幀:將網絡層交付下來的數據報封裝成幀,每個幀包含了控制信息(如起始標志,目的MAC地址,源MAC地址等)和數據部分
  • 物理地址尋址:通過物理地址(MAC地址)來唯一標識網絡中的設備,在數據鏈路層中使用MAC地址進行尋址和轉發
  • 媒體訪問控制:在共享介質的網絡中,數據鏈路層使用媒體訪問控制協議(如CSMA/CD,CSMA/CA等)來協調多個節點之間的傳輸,避免沖突和碰撞
  • 差錯檢查與重傳:數據鏈路層負責檢測和糾正傳輸過程中可能發生的位錯誤,通過差錯檢驗碼(如循環冗余校驗碼CRC)來實現
  • 流量控制:數據鏈路層通過流量控制機制,確保發送方和接收方之間的數據傳輸速率匹配,避免數據丟失或溢出
  • 鏈路管理:數據鏈路層負責建立,維護和釋放鏈路鏈接,包括鏈路的建立,終止,確認以及鏈路狀態的管理

數據鏈路層的協議有很多種,常見的有以太網(Ethernet),無線局域網(Wi-Fi)和點對點協議(PPP)等。不同協議適用于不同的網絡環境和需求

關于以太網

1. 基本概念

“以太網”不是一種具體的網絡,而是一種技術標準,既包含了數據鏈路層的內容,也包含了一些物理層的內容。例如:規定了網絡拓撲結構,訪問控制方式,傳輸速率等

  • 例如以太網中的網線必須使用雙絞線,傳輸速率有10M,100M,1000M等
  • 以太網是當前應用最廣泛的局域網技術;和以太網并列的還有令牌環網,無線LAN等

2. 以太網幀格式

在這里插入圖片描述

字段解釋
目的地址目的MAC地址
源地址源MAC地址
幀類型有效載荷的類型,0800表示IP數據報,0806表示ARP請求應答,0835表示RARP請求應答
PAD以太網幀數據不能少于46不能大于1500字節,否則就要添加PAD就是隨機值
幀末尾CRC 校驗碼

兩個結論:
① 報頭和有效載荷如何分離?
?MAC幀的報頭是固定長度,即前14字節為報頭,后續為有效載荷

② 有效載荷如何向上交付?
?根據報頭的類型字段,0800 代表IP協議;0806 代表ARP請求/應答;0835 代表RARP請求/應答。以此交付對應的上層

3. MAC vs IP

在這里插入圖片描述
MAC地址和IP地址的區別
1、范圍、層次及使用

  • MAC地址是在局域網(子網,內網)范圍內唯一標識設備的地址,一般只能在同一局域網內進行通信(尋址 和 轉發),例如:以太網的數據鏈路層使用MAC地址進行設備之間的通信
  • IP地址可以在廣域網(公網,外網)范圍內唯一標識設備的地址,可以在不同的網絡中進行通信(跨網絡通信 和 路由選擇),例如:在因特網中的網絡層使用IP地址進行主機之間的通信

在路由轉發的過程中,IP地址描述的是路途總體的起點和終點,MAC地址描述的是路途上的每一個區間的起點和終點

2、分配方式

  • MAC地址由網卡廠商分配,通常是固定的,與設備綁定,一般情況下不會改變
  • IP地址由網絡管理員分配,可以是靜態分配或動態分配(如DHCP),可以根據需要進行更改

證明如下:
在這里插入圖片描述
上面如果主機A想訪問服務器B

  • 服務器B具有公網IP,所以主機A可以直接使用公網IP進行訪問;IP數據報中源IP地址是私有IP——192.168.1.201/24,目的IP地址是公網IP——122.77.241.3/24
  • 但子網的數據要想發到公網,需要路由器根據路由表進行轉發。所以要先將數據發給路由器,但IP報文內的目的IP又不能更改為路由器的IP地址,不然后續無法發送到服務器B。所以需要MAC地址,用于局域網(子網)內的數據發送
  • 主機A在MAC幀中,源MAC地址為自己的MAC地址,目的MAC地址為路由器的MAC地址,發送數據
  • 路由器收到主機A的數據幀,解包查看IP地址,發現不是給自己的,再根據路由表進行路由轉發,途中可能還需要經過很多個路由器,使用的也是MAC地址,路由轉發其實就是在多個局域網間跳轉。

結論:MAC地址用于局域網內通信,IP地址用于廣域網通信,即起點和終點

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

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

相關文章

SpringMVC與SpringCloud的區別

SpringMVC與SpringCloud的核心區別 功能定位 ? SpringMVC: 基于Spring框架的Web層開發模塊,采用MVC(Model-View-Controller)模式,專注于處理HTTP請求、路由分發(如DispatcherServlet)和視圖…

使用MATIO庫寫入MATLAB結構體(struct)數據的示例程序

使用MATIO庫寫入MATLAB結構體(struct)數據的示例程序 MATIO是一個用于讀寫MATLAB數據文件(.mat)的開源C庫。下面是一個完整的示例程序&#xff0c;展示如何使用MATIO庫創建一個包含結構體數據的MAT文件。 示例程序 #include <stdio.h> #include <stdlib.h> #inc…

SSE與Streamable HTTP的區別:協議與技術實現的深度對比

引言 在現代Web開發中&#xff0c;實時數據傳輸是許多應用的核心需求&#xff0c;從聊天應用到股票市場更新&#xff0c;從游戲服務器到AI模型通信。為了滿足這一需求&#xff0c;各種技術應運而生&#xff0c;其中Server-Sent Events (SSE)和Streamable HTTP是兩種重要的實時…

【Easylive】視頻在線人數統計系統實現詳解 WebSocket 及其在在線人數統計中的應用

【Easylive】項目常見問題解答&#xff08;自用&持續更新中…&#xff09; 匯總版 視頻在線人數統計系統實現詳解 1. 系統架構概述 您實現的是一個基于Redis的視頻在線人數統計系統&#xff0c;主要包含以下組件&#xff1a; 心跳上報接口&#xff1a;客戶端定期調用以…

Linux 高級命令與常見操作:文本處理、系統管理與網絡調試

下面是一份針對已經熟悉 Linux 基礎命令的用戶所整理的「高級命令與常見操作」筆記&#xff0c;涵蓋文本處理、系統管理、網絡調試與其他常用的進階技巧。請你審核下面筆記&#xff0c;檢查是否有過時的內容&#xff0c;如有請進行替換&#xff0c;確保其符合現代化需求&#x…

使用MFC ActiveX開發KingScada控件(OCX)

最近有個需求&#xff0c;要在KingScada上面開發一個控件。 原來是用的WinCC&#xff0c;WinCC本身是支持調用.net控件&#xff0c;就是winform控件的&#xff0c;winform控件開發簡單&#xff0c;相對功能也更豐富。奈何WinCC不是國產的。 話說KingScada&#xff0c;國產組態軟…

QScrollArea 內部滾動條 QSS 樣式失效問題及解決方案

在使用 Qt 進行 UI 開發時,我們經常希望通過 QSS(Qt Style Sheets)自定義控件的外觀,比如為 QScrollArea 的內部滾動條設置特定的樣式。然而,有開發者遇到了這樣的問題:在 UI 設計器中預覽 QSS 顯示效果正常,但程序運行時卻顯示為系統默認樣式。經過反復測試和調試,最終…

使用OpenSceneGraph生成3D數據格式文件

OpenSceneGraph (OSG) 提供了多種方式來生成和導出3D數據格式文件。以下是詳細的生成方法和示例代碼&#xff1a; 一、基本文件生成方法 1. 使用osgDB::writeNodeFile函數 這是最直接的生成方式&#xff0c;支持多種格式&#xff1a; #include <osgDB/WriteFile>osg:…

JMeter接口性能測試從入門到精通

前言&#xff1a; 本文主要介紹了如何利用jmter進行接口的性能測試 1.在測試計劃中添加線程組 1.1.線程組界面中元素含義 如果點擊循環次數為永遠&#xff1a; 2.添加HTTP取樣器 2.1.填寫登錄接口的各個參數 2.2.在線程組下面增加查看結果樹 請求成功的情況&#xff1a; 請求…

C++抽卡模擬器

近日在學校無聊&#xff0c;寫了個抽卡模擬器供大家娛樂。 代碼實現以下功能&#xff1a;抽卡界面&#xff0c;抽卡判定、動畫播放、存檔。 1.抽卡界面及判定 技術有限&#xff0c;不可能做的和原神一樣精致。代碼如下&#xff08;注&#xff1a;這不是完整代碼&#xff0c;…

詳解相機的內參和外參,以及內外參的標定方法

1 四個坐標系 要想深入搞清楚相機的內參和外參含義&#xff0c; 首先得清楚以下4個坐標系的定義&#xff1a; 世界坐標系&#xff1a; 名字看著很唬人&#xff0c; 其實沒什么大不了的&#xff0c; 這個就是你自己定義的某一個坐標系。 比如&#xff0c; 你把房間的某一個點定…

學透Spring Boot — 011. 一篇文章學會Spring Test

系列文章目錄 這是學透Spring Boot的第11篇文章。更多系列文章請關注 CSDN postnull 用戶的專欄 文章目錄 系列文章目錄Spring Test的依賴Spring Test的核心功能SpringBootTest 加載Spring上下文依賴注入有問題時Spring配置有問題時 WebMvcTest 測試Web層&#xff08;Controll…

Mysql 數據庫編程技術01

一、數據庫基礎 1.1 認識數據庫 為什么學習數據庫 瞬時數據&#xff1a;比如內存中的數據&#xff0c;是不能永久保存的。持久化數據&#xff1a;比如持久化至數據庫中或者文檔中&#xff0c;能夠長久保存。 數據庫是“按照數據結構來組織、存儲和管理數據的倉庫”。是一個長…

新一代AI架構實踐:數字大腦AI+智能調度MCP+領域執行APP的黃金金字塔體系

新一代AI架構實踐&#xff1a;數字大腦智能調度領域執行的黃金金字塔體系 一、架構本質的三層穿透性認知 1.1 核心范式轉變&#xff08;CPS理論升級&#xff09; 傳統算法架構&#xff1a;數據驅動 → 特征工程 → 模型訓練 → 業務應用 新一代AI架構&#xff1a;物理規律建…

macOS可視化桌面配置docker加速器

macOS可視化桌面配置docker加速器 在鏡像settings->docker Engine改為國內鏡像修改為國內鏡像重啟docker(可視化界面啟動或者使用命令行)使用命令重啟可視化界面重啟 在鏡像settings->docker Engine改為國內鏡像 修改為國內鏡像 {"registry-mirrors": ["…

Nginx 基礎使用(2025)

一、Nginx目錄結構 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件暫存目錄 ├── conf # Nginx所有配置文件的目錄 │ ├── fastcgi.conf # fastcgi相…

用spring-webmvc包實現AI(Deepseek)事件流(SSE)推送

前后端&#xff1a; Spring Boot Angular spring-webmvc-5.2.2包 代碼片段如下&#xff1a; 控制層&#xff1a; GetMapping(value "/realtime/page/ai/sse", produces MediaType.TEXT_EVENT_STREAM_VALUE)ApiOperation(value "獲取告警記錄進行AI分析…

基于Python的招聘推薦數據可視化分析系統

【Python】基于Python的招聘推薦數據可視化分析系統&#xff08;完整系統源碼開發筆記詳細部署教程&#xff09;? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 &#x1f680;&#x1f31f; 基于Python的招聘推薦數據可視化分析系統&#xff01;&#x1…

使用注解開發springMVC

引言 在學習過第一個springMVC項目建造過后&#xff0c;讓我們直接進入真實開發中所必需的注解開發&#xff0c; 是何等的簡潔高效&#xff01;&#xff01; 注&#xff1a;由于Maven可能存在資源過濾的問題&#xff0c;在maven依賴中加入 <build><resources>&l…

linux專題3-----禁止SSH的密碼登錄

要在linux系統中禁止密碼登錄&#xff0c;您可以通過修改 SSH 配置來實現。請按照以下步驟操作(此處以 Ubuntu為例)&#xff1a; 1、SSH 登錄到您的服務器&#xff08;或直接在命令行模式下&#xff09;。 2、備份 SSH 配置文件&#xff1a; 在終端中運行以下命令以備份現有的…