Linux之數據鏈路層

Linux之數據鏈路層

  • 一.以太網
    • 1.1以太網幀格式
    • 1.2MAC地址
    • 1.3MTU
  • 二.ARP協議
    • 2.1ARP協議工作流程
    • 2.2ARP協議格式
  • 三.NAT技術
  • 四.代理服務
    • 4.1正向代理
    • 4.2反向代理
  • 五.四大層的學習總結

一.以太網

在我們學習完了網絡層后我們接下來就要進入數據鏈路層的學習了,在學習完網絡層后我們知道網絡層的作用是進行路徑選擇以及完成路由,但是無論是應用層,傳輸層還是網絡層都沒有完成我們數據傳輸中最重要的一環那就是傳輸數據,上三層分別提供了數據處理,可靠性保證,路徑選擇和完成路由而真正的數據傳輸環節就需要我們現在學的數據鏈路層來完成了。數據鏈路層不同于上三層可以由具體的某項協議完成而是由一系列的協議標準來實現的。例如我們今天會仔細說的以太網。我們要了解以太網不是一種具體的網絡而是一種技術標準,以太網的內容結合了數據鏈路層和物理層。以太網是如今應用最廣泛的互聯網技術與其并列的有令牌環和無線LAN等。

1.1以太網幀格式

首先我們先來了解什么叫做以太網幀:把在數據報首部添加報頭尾部添加檢驗和的新的報文整體叫做以太網幀。所以以太網幀中分為三部分:報頭,正文和校驗和。
在這里插入圖片描述

  • 目的地址和源地址
    其中的地址代表的是網卡的硬件地址也就是MAC地址,占據了六個字節也就是48位。
  • 類型
    這里的類型指的是應用于幀數據字段的協議。類型占據了兩個字節即8位
  • 校驗和
    這里的校驗和就和TCP協議IP協議中的校驗和相同即利用CRC算法來檢查數據報是否損壞。

對于數據鏈路層來說傳輸靠的就不是IP地址了而是MAC地址因為數據報是通過一個一個的子網傳輸到目的主機的而在一個子網中傳輸靠的就是MAC地址。

1.2MAC地址

對于MAC地址我們應該不陌生了在講述協議的時候我們就提到過MAC地址的概念以及它和IP地址的區別,這里我們就來再次認識一下MAC地址。
MAC地址是來識別數據鏈路層中相連的節點也就是不同的主機或者路由器,MAC地址的長度是48位即6個字節,一般是用16進制以及符號:來進行分割例如:08:00:27:03:fb:19。對于MAC地址來說這是在我們電腦出廠之后就存儲在網卡中的并且是唯一的。
對于MAC地址和IP地址的區別我們能理解,我們可以將IP地址當作出去旅游時的起始處和目的地例如我們要從北京到上海去,那么源IP地址就是北京目的IP地址就是上海。而MAC地址則是我們在路上具體是從哪個地方到哪個地方例如從北京到上海,最開始源MAC地址就是北京目的MAC地址是河北,到了河北后源MAC地址就是河北目的MAC地址是河南以此類推直到目的MAC地址是上海。所以IP地址是不變的,MAC地址是一直在發生變化的。
在這里插入圖片描述
那么在了解了MAC地址后我們要知道MAC的作用就是完成局域網中的通信也就是完成一個子網中的通信,在局域網中一個主機想要發送數據給另外一個主機就必須通過MAC地址而不是IP地址。那么在這個通信的過程也會產生一些問題,我用圖來給大家解釋。
在這里插入圖片描述
所以在進行局域網通信的時候局域網就相當于是一個"臨界資源"因為局域網會被很多的主機來訪問,那么我們就需要對這個臨界資源進行保護也就是對局域網進行保護以免出現錯誤,例如如果局域網中同時有兩臺及以上的主機同時發送數據報那么這些數據報可能就會在碰撞域中發生碰撞從而造成數據報的損壞。
所以對于碰撞域也就是局域網來說任何時刻只允許一臺主機向局域網中發送數據報否則就有可能產生碰撞問題。想要解決碰撞問題我們可以采用碰撞檢測和碰撞避免以及劃分碰撞域的方法。

1.3MTU

在講述IP協議的分包時我們就提到過MTU即網絡的最大傳輸單元也就相當于我們發快遞時的包裹大小限制,MTU的數值是不同的數據鏈路層對應的物理層產生的。所以這個值是不固定的對于以太網幀來說它規定數據長度的最小值是47個字節最大值是1500個字節如果數據報的長度不夠就需要往后面補充字節。MTU不僅會對IP協議產生影響也會對UDP,TCP協議產生影響。

對于UDP協議,我們需要讓傳輸層的數據報的有效載荷不能超過1472因為UDP協議報頭是8個字節,IP協議報頭是20個字節這樣最后剛好達到MTU。如果超過了有效載荷超過了1472那么這個數據報就會在網絡層被分片。

對于TCP協議也是相同的,只是我們在講述TCP協議時提到過TCP的數據報大小不能超過MSS也就是Max((Max Segment Size)所以這個MSS也受制于MTU的大小最好的情況就是MSS剛好是在網絡層不會被分片的大小。同時我們知道TCP是有三次握手這個行為的在三次握手中雙方會把自己的MSS大小寫入到TCP協議的頭部中從而進行協商MSS大小,在雙方得到兩方的MSS大小后會將較小的MSS值當作最終的MSS值。而這個協商的過程MSS大小就是存儲在TCP協議那40個字節的選項中的。
如果我們想要查看自己機器的MTU大小我們可以使用ifconfig這個命令。
在這里插入圖片描述

二.ARP協議

在知道了MAC地址是用于局域網之間通信的之后我們要思考一個問題了,在我們發送數據報時我們是用IP地址來定位目的主機的也就是說我們并不知道目的主機的MAC地址以至于我們無法完成局域網之間的通信,所以為了解決這個問題我們就要利用ARP協議。
ARP協議是一個存在于網絡層和數據鏈路層之間的一個協議它的作用就是完成IP地址和MAC地址的映射關系從而可以讓我們根據目的IP地址轉換為目的MAC地址來實現局域網之間的通信。

2.1ARP協議工作流程

對于ARP協議是如何完成IP地址和MAC地址的映射的我們也需要來說道說道我們一樣用圖來解釋
在這里插入圖片描述
圖中的這些詢問以及回答MAC地址的數據報就是ARP請求和ARP響應,所以在進行局域網之間的通信時通信兩方會利用ARP請求以及響應來得到雙方的MAC地址從而構建出IP地址和MAC地址的映射關系。同時我們也可以從圖出看出來一些細節:對于一個局域網中的主機來說它既可以接收ARP請求也可以接收ARP響應并且主機在接收到ARP結果后會將其暫時緩存起來直到超過規定的時間,在超過規定的時間后還想和ARP結果內存儲的目的主機進行通信的話就需要再次發送ARP請求。

2.2ARP協議格式

ARP協議和其他協議一樣也具有自己的格式,我們現在就來看看它的格式是什么樣的。
在這里插入圖片描述
對于這個數據報的格式其中很多的字段我們都是見過或者很容易就能理解的,所以我們就大致介紹并且解析其中的一些問題。

  1. 我們發現在以太網的頭部以及ARP協議中都存在目的MAC地址和源MAC地址,這是因為以太網不是數據鏈路層唯一的一種方法,如果數據鏈路層是以太網的那么這樣就是多余的但是如果數據鏈路層不是以太網的那么這種方法就是必須的了。
  2. 硬件類型是指數據鏈路層的網絡類型,1為以太網
  3. 協議類型是指要轉換的地址類型,0x0800為IP地址
  4. 硬件地址長度是數據鏈路層網絡類型的地址長度,對于以太網來說是6字節
  5. 協議地址長度是轉換的地址類型的地址長度,對于IP地址來說是4字節
  6. op字段則是標明是ARP請求還是響應,1是請求,2為響應。

三.NAT技術

在之前我們學習網絡層的時候我們就提到過NAT技術,NAT技術產生的緣由就是為了解決IPv4數量不足的而NAT技術本身我們可以將其理解成一種互相轉換私有IP和公有IP的方法。實現方法簡單來說就是在NAT路由器有兩個地址一個是私有地址也就是局域網內的IP地址一個是公有地址也就是公網內的IP地址,當局域網里有主機想要訪問外網時路由器就會將其數據報中的源IP地址轉換為公有IP地址,當外網服務器想要傳輸數據報到局域網內的主機時就會將數據報里的目的IP地址轉換為對應的主機的私有地址。所有在NAT路由器中有著一張表其中存儲著局域網內主機的私有IP地址和公有IP地址的映射關系來方便轉換,并且這個表也是又路由器自己維護的。
在這里插入圖片描述

這個處理邏輯只是最基礎的NAT技術我們可以思考一個問題局域網內有多個主機它們的私有IP地址都不同但是路由器只有一個公有IP地址那么在外網的服務器傳輸數據報回來時路由器怎么知道是傳輸給哪個主機呢?這就要用到NAPT了也就是使用IP地址+端口號的方式,具體一點就是在路由器的地址轉換表中不僅存儲了局域網主機的IP地址也存儲了對應的端口號。
在這里插入圖片描述
NAT技術實實在在的緩解了IPv4地址數量不足的問題但是它也有其限制和弊端:

  1. 無法從NAT外部向內部服務器建立連接
  2. 地址轉換表的創建和銷毀都需要額外資源
  3. 通信過程中一旦NAT路由器設備出現問題那么所有的TCP連接都會出錯

四.代理服務

在國內如果想要訪問外網的資源我們需要進行翻墻也就是通過代理來訪問外網資源。那么代理服務到底是如何實現的呢?
對于代理服務我們分為正向代理和反向代理,這兩種代理方式運用場景以及原理都不同我們需要來一個一個說。

4.1正向代理

正向代理(Forward Proxy)是一種常見的網絡代理方式,它位于客戶端和目標
服務器之間,代表客戶端向目標服務器發送請求。正向代理服務器接收客戶端的請
求,然后將請求轉發給目標服務器,最后將目標服務器的響應返回給客戶端。通過這
種方式,正向代理可以實現多種功能,如提高訪問速度、隱藏客戶端身份、實施訪問
控制等。
簡單來說正向代理就是在客戶端和網絡之間插入了一個新的代理服務器,客戶端會先把請求發送到代理服務器上再由代理服務器將其轉發給目的服務器,響應也是先發送到代理服務器上再轉發到客戶端上。
在這里插入圖片描述
正向代理的功能特點:

  • 緩存功能:正向代理服務器可以緩存經常訪問的資源,當客戶端再次請求這些資
    源時,可以直接從緩存中獲取,提高訪問速度。
  • 內容過濾:正向代理可以根據預設的規則對請求或響應進行過濾,如屏蔽廣告、
    阻止惡意網站等。
  • 訪問控制:通過正向代理,可以實現對特定網站的訪問控制,如限制員工在工作
    時間訪問娛樂網站。
  • 隱藏客戶端身份:正向代理可以隱藏客戶端的真實 IP 地址,保護客戶端的隱私。
  • 負載均衡:在多個目標服務器之間分配客戶端請求,提高系統的可擴展性和可靠
    性。

應用場景:

  • 企業網絡管理:企業可以通過正向代理實現對員工網絡訪問的管理和控制,確保員工
    在工作時間內專注于工作,避免訪問不良網站或泄露公司機密。
  • 公共網絡環境:在公共場所如圖書館、學校等提供的網絡環境中,通過正向代理可以
    實現對網絡資源的合理分配和管理,確保網絡使用的公平性和安全性。
  • 內容過濾與保護:家長可以通過設置正向代理來過濾不良內容,保護孩子免受網絡上
    的不良信息影響。
  • 提高訪問速度:對于經常訪問的網站或資源,正向代理可以通過緩存機制提高訪問速
    度,減少網絡延遲。
  • 跨境電商與海外訪問:對于跨境電商或需要訪問海外資源的企業和個人,正向代理可
    以幫助他們突破網絡限制,順暢地訪問海外網站和資源。

4.2反向代理

反向代理服務器是一種網絡架構模式,其作為 Web 服務器的前置服務器,接收
來自客戶端的請求,并將這些請求轉發給后端服務器,然后將后端服務器的響應返回
給客戶端。這種架構模式可以提升網站性能、安全性和可維護性等。
同樣簡單來說反向代理是在目的服務器和網絡之間插入了一個新的服務器,當我們使用客戶端向目的服務器傳輸數據時我們無法直接訪問目的服務器而是要將數據先發送到反向代理服務器中再由它將數據轉發到目的服務器中,響應也是先由目的服務器傳輸到反向代理服務器上再傳輸給客戶端。聽著好像和正向代理服務相似都是插入一個中間服務器但是其中的功效則完全不同,正向服務是為了保護客戶端而反向服務則是為了保護服務器。
在這里插入圖片描述
功能特點:

  • 負載均衡:反向代理服務器可以根據配置的負載均衡策略,將客戶端的請求分發
    到多個后端服務器上,以實現負載均衡。這有助于提升網站的整體性能和響應速度,
    特別是在高并發場景下。
  • 安全保護:反向代理服務器可以隱藏后端 Web 服務器的真實 IP 地址,降低其被
    直接攻擊的風險。同時,它還可以配置防火墻、訪問控制列表(ACL)等安全策略,
    對客戶端的請求進行過濾和限制,以保護后端服務器的安全。
    -緩存加速:反向代理服務器可以緩存后端 Web 服務器的響應內容,對于重復的
    請求,它可以直接從緩存中返回響應,而無需再次向后端服務器發起請求。這可以大
    大減少后端服務器的負載,提升網站的響應速度。
  • 內容過濾和重寫:反向代理服務器可以根據配置的規則對客戶端的請求進行過濾
    和重寫,例如添加或刪除請求頭、修改請求路徑等。這有助于實現一些特定的業務需
    求,如 URL 重寫、用戶認證等。
  • 動靜分離:在大型網站中,通常需要將靜態資源和動態資源分開處理。通過將靜
    態資源部署在反向代理服務器上,可以直接從反向代理服務器返回靜態資源的響應,
    而無需再次向后端服務器發起請求。這可以大大提升靜態資源的訪問速度。
    應用場景:
  • CDN(Content Delivery Network,內容分發網絡)就是采用了反向代理的原理

五.四大層的學習總結

  1. 應用層
  • 應用層的作用: 滿足我們日常需求的網絡程序, 都是在應用層
  • 能夠根據自己的需求, 設計應用層協議
  • 了解 HTTP 協議
  • 理解 DNS 的原理和工作流程
  1. 傳輸層
  • 傳輸層的作用: 負責數據能夠從發送端傳輸接收端.
  • 理解端口號的概念.
  • 認識 UDP 協議, 了解 UDP 協議的特點.
  • 認識 TCP 協議, 理解 TCP 協議的可靠性. 理解 TCP 協議的狀態轉化.
  • 掌握 TCP 的連接管理, 確認應答, 超時重傳, 滑動窗口, 流量控制, 擁塞控制, 延
    遲應答, 捎帶應答特性.
  • 理解 TCP 面向字節流, 理解粘包問題和解決方案.
  • 能夠基于 UDP 實現可靠傳輸.
  • 理解 MTU 對 UDP/TCP 的影響
  1. 網絡層
  • 網絡層的作用: 在復雜的網絡環境中確定一個合適的路徑.
  • 理解 IP 地址, 理解 IP 地址和 MAC 地址的區別.
  • 理解 IP 協議格式.
  • 了解網段劃分方法
  • 理解如何解決 IP 數目不足的問題, 掌握網段劃分的兩種方案. 理解私有 IP 和公
    網 IP
  • 理解網絡層的 IP 地址路由過程. 理解一個數據包如何跨越網段到達最終目的地.
  • 理解 IP 數據包分包的原因. ? 了解 ICMP 協議. ? 了解 NAT 設備的工作原理.
  1. 數據鏈路層
  • 數據鏈路層的作用: 兩個設備(同一種數據鏈路節點)之間進行傳遞數據
  • 以太網是一種技術標準; 既包含了數據鏈路層的內容, 也包含了一些物理層的內
    容. 例如: 規定了網絡拓撲結構, 訪問控制方式, 傳輸速率等;
  • 以太網幀格式
  • 理解 mac 地址
  • 理解 arp 協議
  • 理解 MTU

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

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

相關文章

MySQL的基礎語法2(函數-字符串函數、數值函數、日期函數和流程函數 )

目錄 一、字符串函數 1.常見字符串函數 ?編輯 2.字符串函數的基本使用 3.字符串函數的數據庫案例演示 二、數值函數 1.常見數值函數(如下): 2.數值函數的基本使用 3.數值函數的數據庫案例演示 三、日期函數 1.常見的日期函數 2.日…

全新版租賃商城小程序源碼系統 源碼開源支持二開+圖文搭建教程

在互聯網商業的浪潮中,租賃業務憑借其獨特的優勢,正逐漸成為市場的新寵。對于開發者而言,快速搭建一個功能完備的租賃商城小程序,不僅能滿足市場需求,還能為自己的業務拓展帶來新的機遇。分享一款全新版租賃商城小程序…

Cent OS7+Docker+Dify

由于我之前安裝了Dify v1.0.0,出現了一些問題:無法刪除,包括:知識庫中的文件、應用、智能體、工作流,都無法刪除。現在把服務器初始化,一步步重新安裝,從0到有。 目錄 1、服務器重裝系統和配置…

OSI 七層模型和四層模型(TCP/IP 模型)

文章目錄 前言一、OSI 七層模型二、TCP/IP 四層模型三、運行協議及設備1. OSI 七層模型2. TCP/IP 四層模型3. 運行協議4. 各類設備的作用 總結 前言 OSI 七層模型和四層模型(TCP/IP 模型)是兩種常見的網絡協議分層架構,它們的主要區別如下&a…

AI的未來:機遇、挑戰與發展方向

📝個人主頁🌹:一ge科研小菜雞-CSDN博客 🌹🌹期待您的關注 🌹🌹 1. 引言 人工智能(AI)已經成為當今世界最具革命性的技術之一,它正在深刻改變各個行業&#x…

javascript實現一個函數,將字符串中的指定子串全部替換為另一個字符串的原理,以及多種方法實現。

大白話javascript實現一個函數,將字符串中的指定子串全部替換為另一個字符串的原理,以及多種方法實現。 在JavaScript里,要是你想把字符串里的指定子串都替換成另外一個字符串,有不少方法可以實現。下面我會詳細介紹實現的原理&a…

硬件基礎--16_公式梳理

公式梳理 歐姆定律: IU/R 1.歐姆定律有局限性,僅適用于純電阻電路(或者說純電阻元器件,純電阻設備) 2.純電阻電路:消耗的電能僅轉化為熱能,沒有其他形式的能量轉換。 功率計算:PUI 1.導出公式:PU2 /R 2.導出公式:PI2 R 焦耳定律:QI2 Rt 1.導…

npm i 出現的網絡問題

npm i 出現的網絡問題 解決方案: npm config list 查看.npmrc文件中是否配置了proxy刪除.npmrc文件中的proxy,保存。重新執行npm i命令。 順便說說解決這個問題的心里路程 每次安裝vue的環境的時候,經常遇到npm安裝一些插件或者是依賴的時…

使用vue cli 5.0 在vscode中運行vue命令報錯

1、運行 vue -- version 報錯 2、在cmd 命令行 執行 vue --version 正常 3、在終端中輸入 get-ExecutionPolicy,查看當前權限 4、執行 set-executionpolicy remotesigned 命令設置為可用模式,但是報錯 5、使用管理員打開power shell 執行 G…

瑞芯微 RKrga接口 wrapbuffer_virtualaddr 使用筆記

一、源碼 官方在librga中給了很多 demo 以供參考&#xff0c;例如 imresize 操作&#xff1a; /** Copyright (C) 2022 Rockchip Electronics Co., Ltd.* Authors:* YuQiaowei <cerf.yurock-chips.com>** Licensed under the Apache License, Version 2.0 (the &qu…

Spring MVC:從歷史演變到實戰入門

1. Java Web的發展歷史與MVC模式 1.1 Model I與Model II的演進 Model I&#xff08;JSPJavaBean&#xff09; 作為早期Java Web開發的主流模式&#xff0c;其核心架構如下&#xff1a; graph LR A[客戶端] --> B[JSP頁面] B --> C{業務邏輯} C --> D[JavaBean] D -…

AI賦能,防御無界:群聯云防護如何顛覆傳統DDoS防御格局?

一、AI驅動的動態防御體系 智能流量調度 群聯云防護通過AI算法實時分析流量特征&#xff0c;動態分配清洗節點。當檢測到攻擊時&#xff0c;系統能在秒級內將流量切換至備用節點&#xff0c;避免單點過載。相較傳統高防IP依賴靜態規則&#xff0c;群聯的調度策略可減少50%的誤封…

R --- Error in library(***) : there is no package called ‘***’ (服務器非root用戶)

步驟 步驟一&#xff1a;在自己目錄下創建R包安裝路徑步驟二&#xff1a;配置用戶本地的R庫路徑步驟三&#xff1a;安裝缺失的包&#xff08;在終端&#xff09;步驟四&#xff1a;驗證安裝 步驟一&#xff1a;在自己目錄下創建R包安裝路徑 mkdir -p ~/R_libs步驟二&#xff1…

HarmonyOS NEXT狀態管理實踐

在HarmonyOS NEXT開發中&#xff0c;狀態管理是構建高效、響應式應用的核心。本文深入探討狀態管理的最佳實踐&#xff0c;結合代碼示例與案例分析&#xff0c;幫助開發者掌握這一關鍵技能。 一、狀態管理裝飾器的合理使用 HarmonyOS NEXT提供多種狀態管理裝飾器&#xff0c;…

excel 時間戳 轉日期

在Excel中&#xff0c;將時間戳轉換為日期格式&#xff0c;可以使用以下步驟和方法&#xff1a; 一、了解時間戳 時間戳&#xff08;Timestamp&#xff09;通常是從1970年1月1日&#xff08;UTC時間&#xff09;開始的秒數或毫秒數。這個時間點被稱為“Unix紀元”或“Unix時間…

Python CSV 數據分析:問題排查與解決全記錄

Python CSV 數據分析&#xff1a;問題排查與解決全記錄 前段時間&#xff0c;我接到一個任務&#xff0c;需要對公司的銷售數據進行分析。這些數據存儲在 CSV 文件里&#xff0c;本想著用 Python 處理起來會很輕松&#xff0c;結果卻狀況百出。下面&#xff0c;就跟大家講講我…

一些常用開發軟件下載地址

1. Matlab官方下載地址 MATLAB Runtime 是運行由 MATLAB 編譯的應用程序&#xff08;如 .exe、.jar 或 .dll&#xff09;所必需的組件&#xff0c;無需安裝完整 MATLAB。 &#x1f517; MathWorks 官方下載頁面&#xff1a; https://www.mathworks.com/products/compiler/mat…

06-SpringBoot3入門-常見注解(簡介)

1、Controller ResponseBody Controller是Spring MVC 中的注解&#xff0c;負責處理 HTTP 請求。 ResponseBody是Spring MVC 中的注解&#xff0c;用于直接將方法的返回值作為 HTTP 響應體。 2、RestController RestController Controller ResponseBody 3、RequestMappin…

ubuntu24.04.2 NVIDIA GeForce RTX 4060筆記本安裝驅動

https://www.nvidia.cn/drivers/details/242281/ 上面是下載地址 sudo chmod x NVIDIA-Linux-x86_64-570.133.07.run # 賦予執行權限把下載的驅動復制到家目錄下&#xff0c;基本工具準備&#xff0c;如下 sudo apt update sudo apt install build-essential libglvnd-dev …

【數據庫相關MySql、Redis、MongoDB】

一、三種數據庫的對比 MongoDB、MySQL 和 Redis 是三種不同類型的數據庫系統&#xff0c;它們在數據模型、存儲方式、性能特點、適用場景等方面存在顯著區別。以下是它們的詳細對比&#xff1a; 1. 數據模型 MySQL 類型&#xff1a;RDBMS&#xff08;關系型數據庫&#xff0…