計算機網絡(三) | 數據鏈路層 PPP協議、廣播CSMA/CD協議、集線器、交換器、擴展and高速以太網

文章目錄

  • 1 數據鏈路基本概念和問題
    • 1.1 基本概念
    • 1.2 基本問題
      • (1)封裝成幀
      • (2)透明傳輸
      • (3)差錯控制
  • 2.數據鏈路層協議
    • 2.1 點對點 PPP協議
      • 2.1.1 需要實現的
      • 2.1.2 PPP組成
      • 2.1.3 幀格式
      • 2.1.4 工作流程
    • 2.2 廣播 CSMA/CD協議
      • 2.2.1 協議要點
    • 2.3 集線器,交換器
      • 集線器
      • MAC地址
      • MAC幀格式
  • 3 擴展以太網
    • 3.1 物理層擴展方式
    • 3.2 數據鏈路層擴展方式
      • 3.2.1 交換機的自學功能
    • 3.3 虛擬局域網
  • 4 高速以太網
    • 4.1 100BASE-T
    • 4.2 吉比特以太網

內容筆記來源于謝希任老師《計算機網絡》

重點

理解MAC地址

理解交換機

理解VLAN

理解高速以太網

數據鏈路是計算機網絡的底層

1 數據鏈路基本概念和問題

1.1 基本概念

鏈路 或者叫物理鏈路 是一段點到點的物理線段(有線或者無線)中間沒有任何其他交換結點

一條鏈路只是一條通路的組成部分

數據鏈路 或者叫數據鏈路 在鏈路的基礎上加上控制協議和實現協議的軟件和硬件在這里插入圖片描述

? 現在最常用的是使用適配器(網卡)來實現這些協議的硬件和軟件,一般的適配器都包括了數據鏈路層和物理層的功能

? 數據鏈路使用的信道主要有以下兩種類型

  1. 點對點信道,使用PPP協議
  2. 廣播信道,使用CSMA/CD協議

1.2 基本問題

對于數據鏈路層而言,以下三個問題很重要

(1)封裝成幀

我們知道,互聯網上傳輸數據都以分組(即IP數據報)為傳輸單位進行傳輸,所以到了底層數據鏈路層也得保證不混淆不同的IP報

所以封裝成幀就是在網絡層的IP數據報上加上首部和尾部,構成幀

那么首部和尾部有什么作用呢?

最重要的

  • 我們首部和尾部的重要作用就是進行幀定界,通俗來講就是 區分一個幀和另一個幀(核心目的就是為了不讓IP數據報混淆)
  • 首部和尾部包含一些控制信息

所以綜合來看,一個幀包括的內容有,我們要傳輸的數據,和首部尾部

那么為了提高傳輸效率,要盡可能使得傳輸數據部分長度大于首部尾部的長度,但每一種數據鏈路協議都規定了數據部分的長度上限——稱為最大傳輸單元MTU

數據鏈路層傳送的是 幀是傳輸數據的單位

解決方式 用控制字符進行

(2)透明傳輸

傳播的數據部分出現控制字段,如開始和結束

如果不做處理的話,會導致接收方誤以為提前結束,這個數據部分的EOS應該不被接收方看見

即應該被認為是透明的,所以叫他為透明傳輸

實現的方式是怎樣的呢?

解決方式 通過字節填充解決.數據中出現控制字符的時候,前面加入一個轉義字符“ESC” 十六進制編碼1B

可能問題

就是IP層交付的數據和DL數據鏈路層實際傳輸的數據不一樣

(3)差錯控制

在傳輸過程中不可能一點都不出錯,如0變成1,1變成0,這就叫做比特差錯。對于差錯我們的解決方式是

目前采用較多的是循環冗余檢測方法CRC

發送端

原始數據M,進行n位冗余碼,商定一個除數P(位數n+1),

1 原始數據M后面加n個零做被除數D

2 D除以P得到的余數(該余數又叫幀檢驗序列FCS)加在M后面

接收端

得到的信息除以除數P,余數為0,接受,否則丟棄

注意我們上面講到的是比特差錯,CRC僅能排查比特差錯

實際上除了比特差錯,還有其他差錯,就是幀丟失,幀重復和幀失序

其中我們要注意的是僅僅排除比特差錯是不夠的,實現了無比特差錯的傳輸叫做無差錯傳輸

但是只有排除了所有錯誤,如幀丟失,幀重復和幀失序之后才能叫做可靠傳輸,即發送什么就收到什么

這些排除錯誤的方法(幀編號,確認和重傳機制)是往往是更高層來實現的

2.數據鏈路層協議

2.1 點對點 PPP協議

使用最多的是點對點協議PPP

我們前面反復提到互聯網用戶如果想要連入互聯網,必須連接到某個ISP,其中我們的PPP協議廣泛應用于本地計算機和ISP的數據鏈路層的通信

2.1.1 需要實現的

PPP協議需要實現的一些功能

那么除了我們剛才講到的 封裝成幀,透明傳輸,差錯檢測這些基本問題,還實現了簡單高效,支持多種網絡層協議,支持多種類型鏈路,檢測連接狀態,數據壓縮算法的協商

2.1.2 PPP組成

一個將IP數據報封裝到串行鏈路的方法,是同步還是異步

一個鏈路控制協議LCP(建立,配置,和測試數據鏈路的連接

一套網絡控制協議NCP(支持多種網絡層協議)

2.1.3 幀格式

開始結束字段 F=0x7E 1字節

地址字段 A=0xFF 因為是點對點,所以設置就維持不變 1字節

控制字段 C=0x03 1字節

開始結束和地址字段,控制字段實際上沒有攜帶什么信息。他是最初設計的時候考慮之后可能會用到,但目前為止也沒有用到

協議字段 不同值代表不同協議 2字節

如0x0021時,是IP數據報,若為0xC021 ,則為LCP數據報

信息字段 要傳輸的IP數據報或,鏈路控制數據,網絡控制數據等

檢驗字段 FCS

a

對于透明傳輸問題

異步傳輸方法是——字節填充法

? 當信息字段中出現和標志字段一樣的比特(0x7E)組合時,在前面添加轉義字符0x7D,同時把0x7E變為0x5E傳輸。整體變為(0x7D,0x5E)傳輸

? 當信息字段出現轉義符(0x7D)的時候,在前面再添加一個轉義字符0x7D,同時把0x7D變為0x5D傳輸。整體變為(0x7D,0x5D)傳輸

? 當信息中出現ASCLL控制碼時候,也同理

同步傳輸方法是——零比特填充法

發送端,先掃描整個信息字段(往往硬件實現)只要發現有5個連續的1,則立即填入一個0,因此經過這種比特的填充后,信息字段就不會出現6個1 的情況

接收端,首先找到標志字段F確定邊界,然后用硬件對內部比特流掃描去掉0

2.1.4 工作流程

建立工作狀態

  1. 用戶撥號接入ISP后,建立了一條從用戶個人電腦到ISP的物理連接
  2. 用戶個人電腦向ISP發送一系列的鏈路控制協議LCP分組(封裝成多個PPP幀),以便建立LCP連接。這些分組及其響應選擇了一些將要選擇的PPP參數
  3. 進行網絡層配置,NCP給新接入的用戶分配一個臨時IP,正式接入互聯網

通信完畢

  1. NCP釋放網絡層連接,收回去分配出去的IP
  2. LCP釋放數據鏈路層連接
  3. 釋放物理層連接

2.2 廣播 CSMA/CD協議

接下來重點討論局域網部分的一對多通信,其中以太網可以看成是一種實現局域網通信的技術標準(目前逐漸大家把它當作局域網的同義詞。以太網的拓撲結構有環形的,星形的等等。局域網主要用雙絞線,速率更高

開始之前,先探討一個問題——我們本地的計算機是怎么連到局域網的?

其中一個關鍵部件是適配器(網卡)

適配器是什么

適配器

網絡接口板子又稱作通信適配器或者網卡

他的核心作用如下

適配器的功能

? 進行串行并行轉換

? 對數據進行緩存

? 在計算機的操作系統安裝設備驅動程序

? 實現以太網協議

計算機通過適配器和局域網進行通信

好的,我們已經了解了連接到局域網的關鍵設備,適配器

接下來一個重要問題就是,多用戶如何共享信道資源,一般兩種方式

  1. 靜態劃分信道——頻分復用,時分復用,碼分復用等代價價高, 不適合于這個局域網

  2. 動態媒體接入控制——又稱為多點接入,信道并非在用戶通信時固定分配給用戶,這里又分為兩類

  • 隨機接入:即所有用戶可以隨機地發送信息,如果恰巧有兩個用戶在同一時刻發送信息,那么在共享媒體上就要發生碰撞,使得用戶的發送都失敗。因此,必須有解決碰撞的網絡協議

  • 受控接入:用戶不能隨機的發送信息,而必須服從一定的控制,這類的典型代表有分散控制令牌環局域網和集中控制的多點線路探詢,或輪詢

由于局域網信道質量比較高(距離短),所以設計的時候要盡可能的簡單

為此,局域網采取了如下的措施

  1. 以太網提供的是無連接(不必先建立連接就可以直接發送數據)的不可靠(對發送的數據幀不進行編號,不要求確認)服務,以太網采用CSMA/CD協議,意味著載波監聽多點接入\碰撞檢測

  2. 以太網的數據采用曼徹斯特編碼

2.2.1 協議要點

半雙工通信

多點接入 表示計算機以多點的方式連接在一根總線上

載波監聽 每一個站點在發送數據前先檢測一下總線上有沒有其他計算機在發送數據

載波監聽的問題

監聽到空閑的其實并不一定是空閑的哦!所以需要碰撞檢測

以太網端到端往返時延的兩倍2t稱為爭用期或碰撞窗口,如果這段時間還沒有檢測到碰撞,這次發送就不會碰撞,當發送碰撞后,還會發送強化碰撞,即人為發送干擾信息,保證所有用戶都知道已經發生了碰撞

碰撞檢測 檢測到碰撞后立即停止發送,繼續發送人為干擾信號(以便讓所有用戶知道發生了碰撞)等待一段隨機時間后發送。

那么這個隨機時間如何計算呢? 隨機時間計算

1 基本退避時間為爭用期2t (以太網取51.2us為爭用期)

2 從整數集合 [ 0 , 1 , 2 , . . . , ( 2 k ? 1 ) ] [0,1,2,...,(2^k-1)] [0,1,2,...,(2k?1)]中隨機取出一個數記為r,k=min[重傳次數,10]

3 重傳時延就是r倍的基本退避時間

4 如果重傳16次依然不能成功時丟棄幀,向高層報告

由于以太網取51.2us為爭用期,對于10Mbit/s的網絡而言,這期間可以發送512比特(64字節),如果發生沖突一定是在64節內,這會導致檢測到沖突停止發送從而數據小于64節所以64字節為最短有效幀長

還有幀間最小間隔即96幀,方便剛剛收到數據幀的站接收緩存清理,做好接受下一幀的準備

總結來看

該協議的要點:

1 準備發送:適配器從網絡層獲得一個分組,加上以太網的首部和尾部組成以太網幀。放入適配器的緩存中,發送之前檢測信道

2 檢測信道:若檢測信道忙,則不停檢測,一直等待信道轉為空閑,且超過96幀后,發送過程中繼續監測信道,如果超過爭用期后還是未檢測到碰撞,就認為發送成功,否則立刻停止發送,然后利用指數退避算法再次發送

接下來我們探討一下局域網的信道利用率

參數a

T 0 = L / C T_0=L/C T0?=L/C L是幀長 C是數據發送速率,T0是幀發送時間

a = t / T 0 a=t/T_0 a=t/T0? 參數a等于以太網單端時延與幀的發送時間T_0的比

a接近0的時候,表示一發生碰撞就會被檢測出來,信道利用率很高

a越大,爭用期所占比例增大,發生一次碰撞就浪費許多資源

當數據率一定時候,以太網的連線長度受到限制,否則t數值就會太大,以太網幀長不能太短,否則會導致T0值太小,a太大

理想信道利用率

image-20231001144501740

上面式子告訴我們 a a a要遠小于,才能提高這個利用率

2.3 集線器,交換器

使用接線器比起剛剛的無源的總線結構更靠譜一些

集線器

星形拓撲結構,中心叫集線器,目前使用雙絞線或光纖

一個集線器有許多個端口

集線器工作在物理層,僅僅簡單地做轉發,不進行碰撞檢測

前面我們講到適配器,那么局域網的各個電腦如何區分要發送的目的地呢

就是通過適配器的MAC地址,他是固化在適配的ROM中,全球唯一

MAC地址

MAC地址又叫做硬件地址,物理地址

通常表示為48位, 6字節

表示的時候用12個16進制數,每2個16進制數之間用冒號隔開,如08:00:20:0A:8C:6D

地址段前三個字節由IEEE的注冊管理機構RA向廠家分配,后三個字節由廠家自行分配

在這里插入圖片描述

IEEE規定地址字段的第一字節的最低位為I/G位

I/G=0時候,地址字段表示一個單站地址

I/G=1時候,地址字段表示一個組地址,用來廣播

當48位都為1時候,為廣播地址,只能作為目的地址

IEEE規定地址字段的第一字節的最低第二位為G/L位

G/L位=0時候,是全球管理

IG/L位=1時候,是本地管理

當48位都為1時候,為廣播地址,只能作為目的地址

MAC幀格式

常用以太網V2格式

在這里插入圖片描述

源地址目標地址 上面講到的MAC地址

類型 上一層使用的什么協議

數據字段

? 最小長度=64-18字節的頭尾=46

? 最長1500

檢測字段FCS

前同步碼 8個字節,前7個實現MAC幀同步,第8個幀開始定界符

幀間最小間隔 9.6us

總結:

互聯網=通過路由協議聯通的N個局域網。

局域網=以太網+TCP/IP協議。

以太網=基于廣播(MAC尋址)和碰撞檢測機制 CSMA/CD 的網絡。

( 以太網是一種計算機局域網技術

3 擴展以太網

我們知道,以太網的兩臺主機距離不能太遠,但是往往比如校園內,一些主機的距離可能蠻遠的

要實現這樣距離較遠的通信,我們就需要擴展以太網

所以我們要搞清楚拓展的核心目的

那么拓展主要有兩種方式,物理層上擴展,和數據鏈路層擴展

3.1 物理層擴展方式

  1. 很早之前拓展是通過接轉發器

  2. 而現在拓展的簡單方法就是使用光纖,用到光纖調制解調器,能夠到達幾公里的范圍

  3. 還有一種方式就是多個集線器,連接成覆蓋更大范圍的多級星型結構

    比如一個學校有三個學院,每個學院配備一個集線器,最后再通過一個主干集線器連接在一起

    多級集線器的優點是,可以跨院通信,同時擴大了范圍,缺點是碰撞域變大了(三個獨立的碰撞域合成了一個),同時沒有緩存功能,不同學院必須使用相同的以太網技術

3.2 數據鏈路層擴展方式

擴展方式主要通過交換機,交換機工作在數據鏈路層

特點

  1. 交換機實質是一個多端口的網橋,通常有十幾個或者更多個端口,全雙工工作方式
  2. 具有存儲器,能夠進行幀緩存
  3. 即插即用,避免人為配置,通過內部幀交換表實現,要了解交換機更新交換表的自學算法
  4. 用戶獨占信道,增大了交換機總容量
  5. 有多種速率端口

3.2.1 交換機的自學功能

交換表組成: MAC地址,端口,寫入時間

如果交換表內沒有自己要發送的對方的地址,則進行廣播通知每一個主機,其他主機收到后看看是否是要發送給自己,不是的話則過濾掉,是的話則接收,同時將對應的信息加入交換表。如果有的話則直接一對一發送

3.3 虛擬局域網

當前面的擴展方式進行很多的擴展的時候,就會遇到一些問題

首先一整個以太網是一個廣播域,那么以太網上經常就會出現大量廣播幀,浪費資源

其次,不利于信息的安全

所以提出虛擬局域網,核心思想是把一個較大的局域網分割為很多較小的局域網,每一個局域網是一個廣播域

實現方式是在MAC幀的基礎上嵌入了VLAN標簽,一個虛擬局域網可以跨越多個交換機

4 高速以太網

4.1 100BASE-T

是在雙絞線上傳輸100Mbit/s的系帶信號的星形拓撲結構,比之前的100Mbit/s快了很多

4.2 吉比特以太網

即傳輸速率是1Gbit/s

之前我們講到大多通過電話線等方式接入互聯網

但實際現在更多的是通過以太網進行寬帶接入,比如我們現在只要登錄校園網就可以訪問外網了

拓展

了解一下網速單位

Mbps是Mb/s 而不是MB/S”。

運營商說的1M寬帶的M是指Mb/s,也就是Mbps,運營商為什么喜歡說這個呢?數據傳輸大多是以“位”(bit,又名“比特”)為單位的,數據的傳輸以及運營商在流量收費的時候都是按照比特來計算的

所以比如運營商說1M帶寬,那么也就意味著是1Mb/s,也就是0.125MB/s

在這里插入圖片描述

我自己實際測試了網速

如圖是300M-500M帶寬

那么也就意味著是37.5MB/s到62.5MB/s

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

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

相關文章

內網穿透的應用-如何結合Cpolar內網穿透工具實現在IDEA中遠程訪問家里或者公司的數據庫

文章目錄 1. 本地連接測試2. Windows安裝Cpolar3. 配置Mysql公網地址4. IDEA遠程連接Mysql小結 5. 固定連接公網地址6. 固定地址連接測試 IDEA作為Java開發最主力的工具,在開發過程中需要經常用到數據庫,如Mysql數據庫,但是在IDEA中只能連接本…

配置BFD多跳檢測示例

BFD簡介 定義 雙向轉發檢測BFD(Bidirectional Forwarding Detection)是一種全網統一的檢測機制,用于快速檢測、監控網絡中鏈路或者IP路由的轉發連通狀況。 目的 為了減小設備故障對業務的影響,提高網絡的可靠性,網…

“==”和“equals”的區別

“”和“equals”的區別 Java中“”和“equals”的區別在于,它們比較的內容不同。""比較的是對象的引用是否相等,而equals比較的是對象的值是否相等。 具體來說,以下是兩個操作符之間的區別: “”比較的是對象的引用&…

【鏈表Linked List】力扣-117 填充每個節點的下一個右側節點指針II

目錄 問題描述 解題過程 官方題解 問題描述 給定一個二叉樹: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每個 next 指針,讓這個指針指向其下一個右側節點。如果找不到下一個右側節點,則將 next 指針設置為 N…

C++中字符串詳解

在C語言中只能通過字符串數組來模擬字符串,沒有字符串類型。在C引入了string類來表示字符串類型。從而用它定義字符串。 在C語言中: char str[] "abc"; char str[] {a,b,c,\0}; char* str "abc"; //這三種形式是C語言…

因為高考考砸了,我學了計算機

2015年,是我高中的最后一年。 2023年,我已在計算機領域工作十多個年頭。 我出生在東部省份的一個不沿海小縣城,在那里度過了我高考前的17年。起點平平,沒有任何特長傍身,也可以說是毫無亮點;成績中等&#…

代碼隨想錄算法訓練營第四十五天 _ 動態規劃_ 70. 爬樓梯、322.零錢兌換、279.完全平方數、139.單詞拆分。

學習目標: 動態規劃五部曲: ① 確定dp[i]的含義 ② 求遞推公式 ③ dp數組如何初始化 ④ 確定遍歷順序 ⑤ 打印遞歸數組 ---- 調試 引用自代碼隨想錄! 60天訓練營打卡計劃! 學習內容: 70. 爬樓梯 動態規劃五步曲&…

中文語音標注工具FunASR(語音識別)

全稱 A Fundamental End-to-End Speech Recognition Toolkit(一個語音識別工具) 可能大家用過whisper(openAi),它【標注英語的確很完美】,【但中文會出現標注錯誤】或搞了個沒說的詞替換上去,所…

【Fiddler】IDEA配置Fiddler

由于遇上了個迷之請求,接口調用正常,OkHttpClient調用正常,RestTemplate調用失敗,所以想看看發送的報文是怎樣的,所以就下了個Fiddler 問題 下載安裝,以及如何安裝證書,網上太多相同文章了&…

APP備案,最新獲取安卓簽名文件中MD5等信息方法

1.通過簽名文件獲取SHA1和SHA256 直接通過cmd執行命令 keytool -list -v -keystore xxxxx/xxx/xx/xxx.keystore輸入后回車會提示輸入密碼庫口令,直接輸入Keystore密碼(輸入過程中終端上不會顯示,輸完回車就行) 2.獲取md5 由于…

redis集群(cluster)筆記

1. 定義: 由于數據量過大,單個Master復制集難以承擔,因此需要對多個復制集進行集群,形成水平擴展每個復制集只負責存儲整個數據集的一部分,這就是Redis的集群,其作用是提供在多個Redis節點間共享數據的程序…

IDEA啟動失敗報錯解決思路

IDEA啟動失敗報錯解決思路 背景:在IDEA里安裝插件失敗,重啟后直接進不去了,然后分析問題解決問題的過程記錄下來。方便下次遇到快速解決。也是一種解決問題的思路,分享出去。 啟動報錯信息 Internal error. Please refer to https…

加索引后 sql loader-951

加索引后 sql loader-951 現象解決過程最終解決 現象 之前使用sqlldr正常,加表索引后使用sqlldr時 報錯 SQL Loader-951 解決過程 百度,說可能是鎖表(或者表未提交) 查看沒有對應未commit數據,且沒有鎖表。查看對應…

【筆記 Python 01】基本數據類型、基本類型

文章目錄 類型是否可轉換基本類型匯總集合 set【創建】【添加元素】【刪除】【清空】【差集】【交集】【并集】【update 批量更新】【set → numpy】 元組 tuple ()【描述】【優點】【元組的創建】【元組的插入】【刪除元組】 字典 dict {}【創建空列表】【創建列表】【字典的獲…

ke14--10章-1數據庫JDBC介紹

注冊數據庫(兩種方式),獲取連接,通過Connection對象獲取Statement對象,使用Statement執行SQL語句。操作ResultSet結果集 ,回收數據庫資源. 需要語句: 1Class.forName("DriverName");2Connection conn DriverManager.getConnection(String url, String user, String…

抖音各加密參數說明和獲取(含代碼)

?X-Bogus:X-Bogus是一種防數據包偽造的一個參數, 又稱為x偽造,主要用于反爬蟲,這個是某節公司下面基礎服務,這個反爬蟲機制幾乎用在了它所有的產品中,不過,只要是能正常使用,這些東…

什么是Non EC

今天在填一個表單時,里面有個Non EC的選項,不解其意。原來是歐盟成員國國民的意思,因為歐盟法規各方面比較嚴厲,所以會單列出來,作為一個條件。 互聯網查詢結果如下: Non-EC是指非歐盟(EU&#…

PHP基礎 - 常量字符串

常量 在PHP中,常量是一個簡單值的標識符,定義后默認是全局變量,可以在整個運行的腳本的任何地方使用。常量由英文字母、下劃線和數字組成,但數字不能作為首字母出現。 PHP中定義常量的方式是使用define()函數,其語法如下: bool define( string $name, mixed $value [,…

使用人工智能優化常見業務流程

在現代商業環境中,人工智能(AI)正在改變企業的運營方式。將人工智能集成到業務流程中可以提高效率和準確性,從而節省大量時間和成本。 這使員工能夠專注于更具戰略性的任務。人工智能在商業中的應用范圍從自動化日常任務到提供高級分析,以做…

【mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar安裝】linux安裝mysql5.7

之前安裝的時候遇到了很多問題,浪費了一些時間。整理出這份教程,照著做基本一遍過。 這是安裝包: 鏈接:https://pan.baidu.com/s/1gBuQBjA4R5qRYZKPKN3uXw?pwd1nuz 1.下載安裝包,上傳到linux。我這里就放到downloads目錄下面…