數據鏈路層-網絡層-傳輸層

文章目錄

  • 深入淺出理解網絡核心:從交換機到TCP/UDP
    • 一、數據鏈路層:交換機的"地盤"
      • 1. 數據鏈路層的核心功能
      • 2. 以太網的發展歷程
      • 3. 以太網中的MAC地址
      • 4. 以太網幀格式:數據的"快遞包裝"
      • 5. 交換機的工作原理:高效的"快遞分揀員"
    • 二、網絡層:IP的"導航世界"
      • 1. 網絡層的核心功能
      • 2. IP數據包格式:數據的"導航包裹"
      • 3. ICMP協議:網絡中的"故障報告員"
      • 4. ARP協議:IP與MAC的"翻譯官"
        • ARP的工作原理
        • ARP相關命令
        • ARP攻擊原理
    • 三、傳輸層:TCP與UDP的"傳輸對決"
      • 1. TCP:可靠的"老大哥"
        • TCP報文段結構
        • TCP三次握手(建立連接)
        • TCP四次揮手(斷開連接)
      • 2. UDP:隨性的"小弟"
      • 3. TCP與UDP的對比
    • 四、總結:網絡通信的"協同工作流"

深入淺出理解網絡核心:從交換機到TCP/UDP

在我們日常暢游互聯網時,瀏覽網頁、發送消息、在線游戲等操作背后,是一套精密的網絡協議在默默支撐。從數據的封裝傳輸到地址的解析轉換,再到連接的建立與斷開,每一個環節都有其獨特的機制。今天,我們就一同深入探索網絡世界的核心原理,從數據鏈路層的交換機,到網絡層的IP協議家族,再到傳輸層的TCP與UDP,揭開網絡通信的神秘面紗。

一、數據鏈路層:交換機的"地盤"

數據鏈路層就像快遞公司的"打包和配送部門",負責將網絡層傳來的數據包裝成"幀",然后通過物理介質(如網線、光纖)發送出去。而交換機,就是這個部門里高效的"分揀員"。

1. 數據鏈路層的核心功能

數據鏈路層的工作圍繞著數據幀的處理展開,主要包括:

  • 建立、維護與拆除連接:類似快遞公司開通新的配送路線,確保設備間能夠正常通信。
  • 幀的包裝與傳輸:給數據加上"頭"和"尾"形成幀,就像給物品裝上快遞盒并貼上快遞單,同時保證幀的有序傳送和邊界識別。
  • 差錯檢測與恢復:通過校驗機制檢查數據在傳輸過程中是否損壞,若有問題則采用重傳等方式進行恢復,如同快遞員檢查包裹是否破損。
  • 流量控制:防止發送方發送速度過快,導致接收方處理不過來,避免出現類似快遞站爆倉的情況。

2. 以太網的發展歷程

以太網是目前應用最廣泛的局域網技術,其發展歷程見證了網絡速度的飛速提升:

  • 1973年,Xerox(施樂)公司提出實驗性以太網,速率僅為2.94 Mbps。
  • 1980年,DEC、Intel和Xerox合作發布10 Mbps以太網標準(DIX Ethernet V1)。
  • 1983年,IEEE基于DIX標準制定了正式的以太網標準(IEEE 802.3),10兆以太網開始廣泛應用,支持同軸電纜和雙絞線等介質。
  • 1995年,IEEE 802.3u標準將速率提升至100 Mbps(快速以太網)。
  • 1998年,IEEE 802.3z/ab標準實現1000 Mbps(千兆以太網)傳輸。
  • 后續又不斷演進,出現了萬兆(10 Gbps)、40 Gbps、100 Gbps甚至更高速度的標準,以滿足現代高速網絡需求。

3. 以太網中的MAC地址

每臺聯網設備的網卡都有一個全球唯一的標識——MAC地址,它就像網卡的"身份證"。MAC地址由48位二進制數組成,通常用十六進制表示(如00-D0-09-A1-D7-B7)。前24位是廠商編號,后24位是網卡序列號。

根據MAC地址的第8位,可分為:

  • 單播地址:第8位為0,用于標識單個設備,一塊物理網卡的地址一定是單播地址。
  • 組播地址:第8位為1,用于標識一組接收者,是一個邏輯地址。

此外,還有廣播地址(FF-FF-FF-FF-FF-FF),用于向局域網內所有設備發送數據。

4. 以太網幀格式:數據的"快遞包裝"

一個以太網幀就像一個快遞包裹,包含以下部分:

  • 前導碼(7字節):由0xAA組成,作用是使接收方的時鐘與發送方同步,如同快遞車按喇叭提醒"快遞來了"。
  • 幀起始定界符(1字節):值為0xAB,標記幀的開始,類似快遞員敲門。
  • MAC地址(12字節):包括6字節的目標MAC地址(收件人地址)和6字節的源MAC地址(寄件人地址)。
  • 類型(2字節):標明數據類型,如0800H表示IP包,0806H表示ARP包,類似快遞單上的"物品類型"。
  • 數據(46~1500字節):真正要傳輸的內容,如網頁、視頻數據等,這是幀的"貨物"。
  • FCS(4字節):幀校驗序列,采用32位CRC算法,用于檢查數據是否損壞,如同快遞員核對包裹是否完整。

以太網幀的總長度在64~1518字節之間,其中數據部分的最大長度1500字節被稱為最大傳輸單元(MTU)。

5. 交換機的工作原理:高效的"快遞分揀員"

交換機通過學習、轉發、廣播等操作,實現數據幀的精準傳送,其工作流程如下:

  • 學習MAC地址:當設備發送數據時,交換機會記錄源MAC地址與發送端口的對應關系到MAC地址表中,就像快遞站記住"張三的快遞都從東門取"。
  • 查表轉發:如果目標MAC地址在MAC地址表中,交換機就將數據幀直接轉發到對應的端口,實現精準投遞;若目標MAC地址不在表中,則向除源端口外的所有端口廣播該數據幀,如同對所有端口喊:“這是誰的快遞?”。
  • 處理特殊幀:當收到廣播幀或組播幀時,交換機會無條件泛洪處理;如果從不同端口學習到同一個MAC地址,會將該MAC地址與后學習到的端口綁定。

交換機有三種工作模式:

  • 單工:只能發送或接收數據,不能同時進行,類似對講機。
  • 半雙工:能發送也能接收,但不能同時進行,類似步話機。
  • 全雙工:能同時收發數據,類似打電話。

二、網絡層:IP的"導航世界"

如果說數據鏈路層負責本地的數據傳輸,那么網絡層就是實現跨網絡通信的"導航系統",其核心是IP協議,主要解決數據如何在不同網絡之間穿梭的問題。

1. 網絡層的核心功能

網絡層的功能可以概括為以下幾點:

  • IP地址編址與邏輯尋址:為全網設備分配唯一的邏輯地址(IPv4/IPv6),如同給每個設備分配"門牌號",實現跨網絡的主機標識。例如,將域名(如www.example.com)解析為IP地址(如192.0.2.1),類似郵政系統的層級化尋址。
  • 異構網絡互聯:通過路由器等設備實現不同傳輸媒介(如以太網、Wi-Fi、5G)或不同協議網絡(如IPv4與IPv6)的互聯互通,屏蔽底層差異,形成統一的全局通信環境。
  • 路由選擇與分組轉發:基于路由算法(如OSPF、BGP)動態計算最優路徑,并依據IP包頭中的目的地址進行分組轉發。這就像導航系統,路由器通過"路由表"查詢下一跳節點,同時根據網絡擁塞等情況實時優化路徑。

簡單來說,沒有網絡層,數據就無法跨越不同子網傳輸,只能局限于本地鏈路通信。

2. IP數據包格式:數據的"導航包裹"

IP數據包由頭部(Header)和數據(Data)兩部分組成,頭部包含了路由所需的關鍵信息:

  • 版本(4比特):標識IP協議版本,如IPv4(值為4)或IPv6(值為6)。
  • 首部長度(4比特):表示IP頭的長度(單位是4字節),最小為5(20字節,無可選字段時)。
  • 優先級與服務類型(8比特):區分數據包的"緊急程度",如視頻通話的包優先級高于普通網頁。
  • 總長度(16比特):整個IP包的長度(頭部+數據),最大為65535字節。
  • 標識符、標志、段偏移量(共32比特):用于控制數據包的分片與重組。當數據過大時,IP層會將其切成多個小包,接收方再根據這些字段拼回去。
  • TTL(8比特):“存活時間”,每經過一個路由器就減1,到0就丟棄,防止包在網絡上無限轉圈。
  • 協議號(8比特):說明數據部分對應的上層協議,如6表示TCP,17表示UDP。
  • 首部校驗和(16比特):檢查頭部是否在傳輸中出錯,若出錯則丟棄。
  • 源地址 & 目標地址(各32比特):發送方和接收方的IP地址。
  • 可選項(可選):提供額外功能,如安全標簽,一般不常用。
  • 數據:上層(如TCP/UDP)傳下來的內容,IP層只負責搬運。

3. ICMP協議:網絡中的"故障報告員"

ICMP(Internet控制報文協議)是網絡層的"得力助手",主要功能是:

  • 網絡故障報警:當數據包傳輸出現問題(如目標服務器宕機、網絡斷連),ICMP會返回錯誤報告,就像快遞員打電話告訴你"地址寫錯了送不了"。
  • 控制消息傳輸:通過IP數據包運送(IP協議號=1),主要包括錯誤通知(如"目標不可達"、“網絡超時”)和控制消息(如ping檢測、traceroute查路徑)。

常見場景:

  • 用ping命令檢測主機是否在線,背后是ICMP的Echo Request/Reply機制。
  • 訪問不存在的IP時,路由器會返回"目標不可達"的ICMP報文。
  • 用traceroute(Windows中為tracert)查看數據包路徑,依靠ICMP超時報文。

不過,有些網絡會關閉ICMP響應(如禁ping)以保障安全。

4. ARP協議:IP與MAC的"翻譯官"

ARP(地址解析協議)是網絡層與數據鏈路層之間的"橋梁",負責將IP地址轉換為MAC地址。

ARP的工作原理

每臺主機或路由器都維護著一個ARP緩存表,記錄IP地址到MAC地址的映射關系,表項有生存時間(默認120秒)。其工作過程如下:

  1. 當PC1想發送數據給PC2時,先在本地ARP緩存表中查找PC2的MAC地址。
  2. 若未找到,PC1會發送ARP請求廣播,包含PC1的IP、MAC地址和PC2的IP地址(目標MAC為廣播地址FF-FF-FF-FF-FF-FF)。
  3. 交換機收到廣播后泛洪處理,除PC1外的所有主機收到請求,只有PC2發現IP匹配,將PC1的信息添加到自己的ARP緩存表,并以單播方式返回包含自己MAC地址的ARP應答。
  4. PC1收到應答后,將PC2的IP和MAC地址添加到本地ARP緩存表,之后便可單播通信。
ARP相關命令

在Windows中,可通過以下命令操作ARP緩存表:

  • arp -a:查看ARP緩存表。
  • arp -d [IP]:刪除指定IP的ARP表項。
  • arp -s IP MAC:靜態綁定IP與MAC地址(需管理員權限)。
ARP攻擊原理

黑客可偽造ARP應答,欺騙設備將數據發送到自己的設備,實現流量劫持。防御方法包括靜態ARP綁定和網絡監控(如用Wireshark檢測異常ARP包)。

三、傳輸層:TCP與UDP的"傳輸對決"

傳輸層位于網絡層之上,負責端到端的數據傳輸,主要有兩個核心協議:TCP和UDP,它們各有特點,適用于不同場景。

1. TCP:可靠的"老大哥"

TCP(傳輸控制協議)的特點是:

  • 面向連接:必須先通過"三次握手"建立連接,類似打電話先撥通。
  • 可靠傳輸:通過序號、確認號等機制確保數據不丟失、不重復、按序到達,丟了會重傳,如同快遞丟了會補發。
  • 流量控制:根據接收方的能力調整發送速度,避免接收方"爆倉"。
TCP報文段結構

TCP報文段的頭部包含關鍵控制信息:

  • 源端口號和目標端口號(各16位):標識發送方和接收方的進程,類似快遞單上的寄件人和收件人電話。
  • 序號(32位):給數據字節編號,防止亂序或丟失,如同書頁的頁碼。
  • 確認號(32位):告訴對方已收到的最大序號,下次應從該序號開始發送。
  • 控制標志位:包括URG(緊急數據)、ACK(確認有效)、PSH(催促處理)、RST(強制斷開)、SYN(發起連接)、FIN(結束連接)。
  • 窗口大小(16位):告知對方接收緩沖區剩余空間,用于流量控制。
  • 校驗和(16位):檢查數據是否損壞。
TCP三次握手(建立連接)
  1. 客戶端 → 服務器:發送SYN=1的報文,請求連接( Seq=x )。
  2. 服務器 → 客戶端:回復SYN=1、ACK=1的報文,同意連接( Seq=y,Ack=x+1 )。
  3. 客戶端 → 服務器:發送ACK=1的報文,確認連接建立( Seq=x+1,Ack=y+1 )。
TCP四次揮手(斷開連接)
  1. A → B:發送FIN=1的報文,告知已無數據發送。
  2. B → A:回復ACK=1的報文,確認收到斷開請求(此時B可能仍有數據要發)。
  3. B → A:發送FIN=1的報文,告知已無數據發送。
  4. A → B:回復ACK=1的報文,確認斷開連接(A會進入TIME_WAIT狀態,防止最后一個ACK丟失)。

常見的TCP應用有網頁(HTTP/HTTPS,端口80/443)、文件傳輸(FTP,端口21)、郵件(SMTP,端口25)等。

2. UDP:隨性的"小弟"

UDP(用戶數據報協議)的特點是:

  • 無連接:直接發送數據,無需建立連接,類似發短信不用等對方接電話。
  • 不可靠:不保證數據的可靠傳輸,可能丟失或亂序,如同明信片丟了不補發。
  • 速度快:由于無需確認等機制,傳輸效率高,適合實時應用。

常見的UDP應用有DNS查詢(端口53)、視頻通話、在線游戲、NTP(網絡時間協議,端口123)、DHCP(動態主機配置協議,端口67)等。

3. TCP與UDP的對比

對比項TCPUDP
連接方式面向連接(三次握手、四次揮手)無連接
可靠性可靠(不丟、不重、按序)不可靠(可能丟失、亂序)
速度與效率較慢(需確認、重傳等)較快(無額外機制)
適用場景重要文件傳輸、長連接服務(網頁、郵件)實時性優先場景(視頻、游戲、DNS查詢)
類比順豐到付(必須簽收)普通郵筒(扔了不管)

四、總結:網絡通信的"協同工作流"

網絡通信的三層核心協議各有分工,協同配合:

  • 數據鏈路層(交換機):用MAC地址在本地網絡轉發數據幀,如同快遞站的分揀員。
  • 網絡層(IP、ICMP、ARP):通過IP地址實現跨網絡尋址,ARP負責IP與MAC的轉換,如同導航系統和門牌號查詢。
  • 傳輸層(TCP、UDP):TCP提供可靠傳輸,如同順豐快遞;UDP提供快速傳輸,如同普通快遞。

以訪問百度為例,整個流程是:

  1. 用DNS(UDP)查詢www.baidu.com的IP地址。
  2. 客戶端與百度服務器通過TCP三次握手建立連接。
  3. 通過HTTP(基于TCP)請求網頁數據。
  4. 數據傳輸完成后,通過TCP四次揮手斷開連接。

正是這一層層協議的精密協作,才讓我們能夠順暢地在網絡世界中穿梭。理解這些原理,不僅能幫助我們更好地應對網絡問題,也能讓我們對互聯網的運行有更清晰的認識。

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

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

相關文章

專題:2025跨境電商市場布局、供應鏈與產業帶賦能報告 |附130+份報告PDF、原數據表匯總下載

原文鏈接:https://tecdat.cn/?p43616 2025年,跨境圈的老板們集體焦慮:美國關稅飆到145%,亞馬遜封號潮卷土重來,而東南亞卻悄悄漲了246%!這不是危言聳聽——66%的美國消費者說,海外貨漲10%就換本…

LINUX 818 shell:random;for for

問題 [rootweb ~]# a$(echo $[$RANDOM%10]) 您在 /var/spool/mail/root 中有郵件 [rootweb ~]# echo $a 3 [rootweb ~]# echo 139$a$a$a$a$a$a$a$a 13933333333 您在 /var/spool/mail/root 中有郵件 [rootweb ~]# echo 139 $a 139 3 [rootweb ~]# echo $a 3 [rootweb ~]# echo …

JavaScript 原型機制詳解:從概念到實戰(附個人學習方法)

原型是 JavaScript 實現繼承與代碼復用的核心機制,也是面試高頻考點。本文結合個人學習經驗、核心概念解析與實戰案例,幫你徹底搞懂原型、prototype、__proto__ 及相關知識點,同時分享高效的學習方法。 一、個人學習方法:高效掌握復雜知識點 復雜概念(如原型)的學習,關…

【人工智能】2025年AI代理失控危機:構建安全壁壘,守護智能未來

還在為高昂的AI開發成本發愁?這本書教你如何在個人電腦上引爆DeepSeek的澎湃算力! 在2025年,AI代理(AI Agents)已成為日常生活和企業運營的核心組成部分,它們能夠自主決策、執行任務并與環境互動。然而,隨著AI代理能力的指數級提升,其安全隱患也日益凸顯,包括數據泄露…

從噪聲到動作:Diffusion Policy 如何改變機器人學習?

從噪聲到動作:Diffusion Policy 如何改變機器人學習? 引言 在機器人手臂操作方面一直存在諸多挑戰。我們熟悉的工業場景中的組裝機械臂,往往依賴于寫死的程序指令進行控制,具有高度規范化與高精度的特點。而當機械臂需要在復雜、…

量子計算和超級計算機將徹底改變技術

我們生活在技術時代,但未來仍有無限可能。近年來,各大企業在量子計算領域持續邁出雖小卻關鍵的步伐 —— 這一技術注定將徹底改變我們所熟知的世界。以下精選的潛在應用場景,將對從交通出行到醫療健康的多個領域產生深遠影響。 在由 “1” 和…

Linux 中文顯示空白框(Java)

問題展示:解決方案本系統采用宋體,若是其它字體,可以類似排查Font rewardFirstFont new Font("SimSun", Font.BOLD, 20);linux系統字體-檢查查詢linux系統所有字體fc-list檢查是否有目標字體(SimSun)&#…

普通用戶使用docker命令

參考大佬 https://blog.51cto.com/u_16175448/12082279 詳細步驟及代碼 步驟 1:安裝 Docker 首先,你需要安裝 Docker。 步驟 2:創建 Docker 用戶組 Docker 默認以 root 用戶運行,為了普通用戶能夠使用 Docker,我們需要…

【傳奇開心果系列】Flet框架實現的家庭記賬本示例自定義模板

Flet家庭記賬本示例自定義模板一、效果展示截圖二、Flet家庭記賬本概況介紹三、應用特色1. 簡潔直觀的用戶界面2. 全面的財務管理功能3. 實時數據監控4. 數據可視化分析5. 數據管理功能四、使用場景個人財務管理家庭賬務管理小微企業記賬學生理財教育五、主要功能模塊&#xff…

Node.js 在 Windows Server 上的離線部署方案

Node.js 在 Windows Server 上的離線部署方案 離線部署的核心是提前準備所有依賴資源(避免在線下載),并通過本地配置完成服務搭建,整體分為「依賴準備」「環境配置」「項目部署」「服務注冊」4個階段。 一、提前準備離線資源&am…

SpringAI接入openAI配置出現的問題全解析

SpringAI接入openAI配置出現的四個問題全解析1、無法下載openAI或SpringAI依賴包1.1、思路就是從哪個源下載所需的依賴包1.2、解決思路:我們可以看阿里的中央倉庫是否有集成SpringAI的依賴,從它這里下也是可以的。我們看看阿里云云效maven地址&#xff0…

自然語言處理——02 文本預處理(上)

1 認識文本預處理 概念: 文本語料在輸送給模型前一般需要一系列的預處理工作,才能符合模型輸入的要求;比如:將文本轉化成模型需要的張量、規范張量的尺寸;比如: 關于數據X:數據有沒有臟數據、數…

數據結構:二叉樹的鏈式存儲

用鏈表來表示一棵二叉樹,即用指針指向來指示元素的邏輯關系。通常的方法是鏈表中每個結點由三個域組成,數據域和左右指針域,左右指針分別用來給出該結點左孩子和右孩子所在的鏈結點的存儲地址 。 我們之前就已經說過,二叉樹是遞歸…

【Spring Boot把日志記錄到文件里面】

<?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 日志輸出格式 --><property name"LOG_PATTERN" value"%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n" /><!-- 日志…

大數據服務完全分布式部署- 其他組件(阿里云版)

ZooKeeper 安裝 官網 解壓 cd /export/server/ tar -zxvf /export/server/apache-zookeeper-3.9.3-bin.tar.gz -C /export/server/軟鏈接 ln -s /export/server/apache-zookeeper-3.9.3-bin /export/server/zookeeper配置 cd /export/server/zookeeper/ mkdir zkDatamyid…

Windows 平板/電腦 上使用 DHCPSRV 搭建 DHCP 服務器

一、DHCPSRV 核心優勢 輕量便攜:單文件綠色軟件,無需安裝 全圖形界面:比命令行工具更友好 支持IPv4/IPv6:滿足現代網絡需求 低資源占用:適合平板電腦運行(內存<10MB) 租約管理:可查看實時IP分配情況 二、超詳細配置流程 1. 下載與初始化 官網下載:http://www…

ArcGIS動態表格批量出圖

前言&#xff1a;產品介紹&#xff1a;ArcGIS動態表格擴展模塊Mapping and Charting Solutions&#xff0c;可用于插入動態表格&#xff0c;與數據驅動結合&#xff0c;出圖效率無敵。注&#xff1a;優先選擇arcgis10.2.2。 一、首先是根據自身攜帶的arcgis數據進行下載對應的…

Linux小白加油站,第三周周考

1.如何查看當前系統中所有磁盤設備及其分區結構(如磁盤名稱、大小、掛載點等)? lsblk # 顯示磁盤名稱、大小、掛載點&#xff08;P21&#xff09;2.若需對空閑磁盤(如/dev/sdb)進行交互式劃分&#xff0c;如何進入操作界面并創建一個5GB的主分區(類型為Linux默認文件系統)? …

SEO的紅利沒了,下一個風口叫GEO

一、 搜索在退場&#xff0c;答案在上臺過去二十多年&#xff0c;我們習慣了這樣的路徑&#xff1a;輸入關鍵詞 → 點開一堆藍色鏈接 → 慢慢篩出想要的信息。SEO&#xff08;搜索引擎優化&#xff09;就是圍繞這套游戲規則展開的&#xff0c;誰玩得溜&#xff0c;誰就有流量、…

Kubernetes 的 YAML 配置文件-apiVersion

Kubernetes的YAML配置文件–apiVersion 關于 Kubernetes 的 apiVersion 說明 以及 生產環境中推薦使用的版本 的完整指南,幫助你正確、安全地編寫 Kubernetes 配置文件。 一、什么是 apiVersion? 在 Kubernetes 的 YAML 配置文件中,apiVersion 字段用于指定你所使用的 Kub…