計算機網絡(三)數據鏈路層

計算機網絡(三)數據鏈路層

  • 1.基本概念
  • 2.功能概述
  • 3.組幀
    • 字符計數法
    • 字符填充法
    • 零比特填充法
    • 違規編碼法
  • 4.差錯控制
    • 檢錯編碼
      • 奇偶校驗碼
      • CRC循環冗余碼
    • 糾錯編碼
      • 海明碼
    • 流量控制
      • 停止等待協議
      • 滑動窗口協議
        • 后退N幀協議(GBN)
        • 選擇重傳協議
  • 5.介質訪問控制
    • 靜態劃分信道(信道劃分介質訪問控制)
    • 動態分配信道
      • 隨機訪問介質訪問控制
        • ALOHA協議
        • CSMA協議
          • 1-堅持CSMA
          • 非堅持CSMA
          • p-堅持CSMA
        • CSMA/CD協議
        • CSMA/CA協議
      • 輪詢訪問介質訪問控制
        • 令牌傳遞協議


1.基本概念

數據鏈路層負責通過一條鏈路從一個結點向另一個物理鏈路直接相連的相鄰結點傳送數據報
在這里插入圖片描述
結點:主機、路由器
鏈路:網絡中兩個結點之間的物理通道,鏈路的傳輸介質主要有雙絞線、光纖和微波。分為有線鏈路、無線鏈路。
數據鏈路:網絡中兩個結點之間的邏輯通道,把實現控制數據傳輸協議的硬件和軟件加到鏈路上就構成數據鏈路
:鏈路層的協議數據單元,封裝網絡層數據報。

2.功能概述

數據鏈路層在物理層提供服務的基礎上向網絡層提供服務,其最基本的服務是將源自網絡層來的數據可靠地傳輸到相鄰節點的目標機網絡層。其主要作用是加強物理層傳輸原始比特流的功能,將物理層提供的可能出錯的物理連接改造成為邏輯上無差錯的數據鏈路,使之對網絡層表現為一條無差錯的鏈路。

功能一:為網絡層提供服務。
功能二:鏈路管理,即連接的建立、維持、釋放(用于面向連接的服務)。
功能三:組幀。
功能四:流量控制。
功能五:差錯控制(幀錯/位錯)

3.組幀

在這里插入圖片描述

封裝成幀就是在一段數據的前后部分添加首部和尾部,這樣就構成了一個幀。接收端在收到物理層上交的比特流后,就能根據首部和尾部的標記,從收到的比特流中識別幀的開始和結束。首部和尾部包含許多的控制信息,他們的一個重要作用:幀定界(確定幀的界限)。
幀同步:接收方應當能從接收到的二進制比特流中區分出幀的起始和終止。
組幀的四種方法:1.字符計數法,2.字符(節)填充法,3.零比特填充法,4.違規編碼法

字符計數法

在這里插入圖片描述
幀首部使用一個計數字段來標明幀內字符數。如圖中,第一個幀是5個字符,第二個是5個字符,第三個是8個,第四個是8個
缺點:如果技術字符出錯,將失去幀邊界劃分的依據,無法進行同步

字符填充法

在這里插入圖片描述
SOH作為幀的開始,EOT作為結束,當數據里又EOT,SOH時,為了避免被誤判,都會在這些特殊的字符中前加個ESC轉義字符
在這里插入圖片描述
接受方收到這些數據后,加填充的刪掉
在這里插入圖片描述
還原
在這里插入圖片描述

零比特填充法

在這里插入圖片描述
操作:1.在發送端,掃描整個信息字段,只要連續5個1,就立即填入1個0
2.在接收端收到一個幀時,先找到標志字段確定邊界,再用硬件對比特流進行掃描。發現連續5個1時,就把后面的0刪除。

保證了透明傳輸:在傳送的比特流中可以傳送任意比特組合,而不會引起對幀邊界的判斷錯誤。這種方法也容易由硬件來實現,性能優于字符填充法

違規編碼法

在這里插入圖片描述

可以用“高-高”,“低-低”來定界幀的起始和終止。
由于字節計數法中Count字段的脆弱性(其值若有差錯將導致災難性后果)及字符填充實現
上的復雜性和不兼容性,目前較普遍使用的幀同步法是比特填充違規編碼法

4.差錯控制

傳輸中的差錯是由于噪聲引起的
全局性:1.由于線路本身電氣特性所產生的隨機噪聲(熱噪聲),是信道固有的,隨機存在的。
局部性:2.外界特定的短暫原因所造成的沖擊噪聲,是產生差錯的主要原因。
全局性

解決辦法:提高信噪比來減少或避免干擾。

檢錯編碼

奇偶校驗碼

在這里插入圖片描述
簡單地說,就是發送方發送數據地時候,如果采用奇校驗,1的個數是奇數,而如果是偶校驗,則是偶校驗
奇偶校驗碼特點:只能查出奇數個錯誤,檢錯能力50%。

CRC循環冗余碼

發送端和接收端雙方會事先商定一個多項式G(x)
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
例:要發送的數據是1101 0110 11,采用CRC校驗,生成多項式是10011,那么最終發送的數據應該是?

在這里插入圖片描述

接收端檢錯過程:
把收到的每一個幀都除以同樣的除數,然后檢查得到的余數R。
1.余數為0,判定這個幀沒有差錯,接受。
2.余數為不為0,判定這個幀有差錯(無法確定到位),丟棄。
FCS的生成以及接收端CRC檢驗都是由硬件實現,處理很迅速,因此不會延誤數據的傳輸。

糾錯編碼

海明碼

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

流量控制

較高的發送速度和較低的接收能力的不匹配,會造成傳輸出錯,因此流量控制也是數據鏈路層的一項重要工作。數據鏈路層的流量控制是點對點的,而傳輸層的流量控制是端到端的。
數據鏈路層流量控制手段:接收方收不下就不回復確認。
傳輸層流量控制手段:接收端給發送端一個窗口公告。

停止等待協議

在這里插入圖片描述
在這里插入圖片描述
1.數據幀丟失或檢測到幀出錯
如果在發送過程中數據幀丟失或檢測到幀出錯,此時發送端會接收不到回應,超時計時器在每次發送的時候都會啟動,超時后重傳幀數據
【注】1.每發一個幀,都會保留它的副本,以防出錯或幀丟失
2.數據幀和確認幀都必須編號
在這里插入圖片描述
2.ACK丟失

在這里插入圖片描述

3.ACK遲到
在這里插入圖片描述
缺點:信道利用率比較低,要等到收到ACK后才能在發

滑動窗口協議

后退N幀協議(GBN)

發送窗口:發送方維持一組連續的允許發送的幀的序號
在這里插入圖片描述
接收窗口:接收方維持一組連續的允許接收幀的序號。

在這里插入圖片描述

如果2幀在傳輸過程中丟失,接收端只會順序的接收幀,所有之后收到3,4,5幀都會丟棄,同時發送,ACK1,表示幀1已經收到,希望發送端發送幀2來, 而另一邊,發送端幀2計時器出現超時,重新發送幀2.
在GBN中發送端是無需收到上一個ACK后才能開始發送下一幀,而是可以連續發送,而接收到需要按順序的接收到幀,失序的幀都會丟棄,相較于停止-等待協議,信道利用率提高,但是,由于接收端只能按序接收幀,也是它的一個缺點

選擇重傳協議

![在這里插入圖片描述](https://img-blog.csdnimg.cn/74cc55a9e8d840188ae6d8cf2cf3382f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2hlbnNoaWRhXw==,size_20,color_FFFFFF,t_70,g_se,x_16)

在這里插入圖片描述

5.介質訪問控制

靜態劃分信道(信道劃分介質訪問控制)

1.頻分多路復用FDM
2.時分多路復用TDM
3.波分多路復用WDM
4.碼分多路復用

動態分配信道

隨機訪問介質訪問控制

ALOHA協議

純ALOHA協議:不監聽信道,不按時間槽發送,隨機重發
在這里插入圖片描述
沖突如何檢測?
如果發生沖突,接收方在就會檢測出差錯,然后不予確認,發送方在一定時間內收不到就判斷發生沖突。
沖突如何解決?
超時后等一隨機時間再重傳。

時隙ALOHA協議:把時間分成若干個相同的時間片,所有用戶在時間片開始時刻同步接入網絡信道,若發生沖突,則必須等到下一個時間片開始時刻再發送
在這里插入圖片描述

1.純ALOHA比時隙ALOHA吞吐量更低,效率更低。
2.純ALOHA想發就發,時隙ALOHA只有在時間片段開始時才能發。

CSMA協議

CS:載波偵聽/監聽,每一個站在發送數據之前要檢測一下總線上是否有其他計算機在發送數據。
當幾個站同時在總線上發送數據時,總線上的信號電壓擺動值將會增大(互相疊加)。當一個站檢測到的信號電壓擺動值超過一定門限值時,就認為總線上至少有兩個站同時在發送數據,表明產生了碰撞,即發生了沖突。
MA:多點接入,表示許多計算機以多點接入的方式連接在一根總線上。
協議思想:發送幀之前,監聽信道
在這里插入圖片描述

1-堅持CSMA

1-堅持CSMA思想:如果一個主機要發送消息,那么它先監聽信道。空閑則直接傳輸,不必等待。忙則一直監聽,直到空閑馬上傳輸。如果有沖突(一段時間內未收到肯定回復),則等待一個隨機長的時間再監聽,重復上述過程。
優點:只要媒體空閑,站點就馬上發送,避免了媒體利用率的損失。
缺點:假如有兩個或兩個以上的站點有數據要發送,沖突就不可避免。

非堅持CSMA

非堅持指的是對于監聽信道忙之后就不繼續監聽。
非堅持CSMA思想:如果一個主機要發送消息,那么它先監聽信道。空閑則直接傳輸,不必等待。忙則等待一個隨機的時間之后再進行監聽。
優點:采用隨機的重發延遲時間可以減少沖突發生的可能性。
缺點:可能存在大家都在延遲等待過程中,使得媒體仍可能處于空閑狀態,媒體使用率降低

p-堅持CSMA

p-堅持指的是對于監聽信道空閑的處理。
p-堅持CSMA思想:如果一個主機要發送消息,那么它先監聽信道。空閑則以p概率直接傳輸,不必等待;概率1-p等待到下一個時間槽再傳輸。忙則持續監聽直到信道空閑再以p概率發送。若沖突則等到下一個時間槽開始再監聽并重復上述過程。
優點:既能像非堅持算法那樣減少沖突,又能像1-堅持算法那樣減少媒體空閑時間的這種方案。

在這里插入圖片描述

CSMA/CD協議

CS:載波偵聽/監聽,每一個站在發送數據之前以及發送數據時都要檢測一下總線上是否有其他計算機在發送數據。
MA:多點接入,表示許多計算機以多點接入的方式連接在一根總線上。
CD:碰撞檢測(沖突檢測),“邊發送邊監聽”,適配器邊發送數據邊檢測信道上信號電壓的變化情況,以便判斷自己在發送數據時其他站是否也在發送數據

CSMA/CA協議

1.發送數據前,先檢測信道是否空閑。
2.空閑則發出RTS(request to send),RTS包括發射端的地址、接收端的地址、下一份數據將持續發送的時間等信息;信道忙則等待。
3.接收端收到RTS后,將響應CTS(clear to send)。
4.發送端收到CTS后,開始發送數據幀(同時預約信道:發送方告知其他站點自己要傳多久數據)。
5.接收端收到數據幀后,將用CRC來檢驗數據是否正確,正確則響應ACK幀。
6.發送方收到ACK就可以進行下一個數據幀的發送,若沒有則一直重傳至規定重發次數為止(采用二進制指數退避算法來確定隨機的推遲時間)。

CSMA/CD與CSMA/CA相同點:CSMA/CD與CSMA/CA機制都從屬于CSMA的思路,其核心是先聽再說。換言之,兩個在接入信道之前都須要
進行監聽。當發現信道空閑后,才能進行接入。
不同點

  1. 傳輸介質不同:CSMA/CD 用于總線式以太網【有線】,而CSMA/CA用于無線局域網【無線】。
    2.載波檢測方式不同:因傳輸介質不同,CSMA/CD與CSMA/CA的檢測方式也不同。CSMA/CD通過電纜中電壓的變化來檢測,當數據發生碰撞時,電纜中的電壓就會隨著發生變化;而CSMA/CA采用能量檢測(ED)、載波檢測(CS)和能量載波混合檢測三種檢測信道空閑的方式。
    3.CSMA/CD檢測沖突,CSMA/CA避免沖突,二者出現沖突后都會進行有上限的重傳。

輪詢訪問介質訪問控制

令牌傳遞協議

令牌:一個特殊格式的MAC控制幀,不含任何信息。控制信道的使用,確保同一時刻只有一個結點獨占信道。每個結點都可以在一定的時間內(令牌持有時間)獲得發送數據的權利,并不是無限制地持有令牌。
在這里插入圖片描述

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

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

相關文章

libevent網絡編程例子(1)

轉載:http://blog.csdn.net/huangyimo/article/details/46806193 這篇文章介紹下libevent在socket異步編程中的應用。在一些對性能要求較高的網絡應用程序中,為了防止程序阻塞在socket I/O操作上造成程序性能的下降,需要使用異步編程&#xf…

計算機網絡(四)網絡層

計算機網絡(四)網絡層一、概述和功能TCP/IP協議棧IP數據報格式IP數據報分片二、ipv4網絡地址轉換(NAT)子網劃分子網掩碼ARP協議(地址解析協議)DHCP協議ICMP協議二、ipv6ipv4和ipv6的區別IPv6基本地址類型IP…

Linux下基于socket和多線程的聊天室小程序

轉載:http://blog.csdn.net/robot__man/article/details/52460733 要求:基于TCP編寫,一個聊天室最多100人。 客戶端:   1、用戶需要登錄,登錄時只需要輸入一個昵稱即可無需判斷昵稱是否重復(如果其他功…

操作系統(一)計算機系統概述

操作系統(一)計算機系統概述一、操作系統的概念二、功能和目標資源的管理者向上層提供服務對硬件的擴展三、操作系統的特征并發共享虛擬異步四、操作系統的發展與分類手工操作階段批處理階段單道批處理系統多道批處理系統分時操作系統實時操作系統操作系…

Linux下使用socket傳輸文件的C語言簡單實現

轉載:http://blog.csdn.net/ljd_1986413/article/details/7940938 服務器程序和客戶端程序應當分別運行在兩臺計算機上。 在運行服務器端的計算機終端執行:./file_server 在運行客戶端的計算終端上執行:./file_client ipaddr_server 然后根…

操作系統(二)進程管理

ui 操作系統(二)進程管理一、進程程序和進程進程控制塊(PCB)進程的組成進程的特征進程的狀態與轉換進程狀態的轉換進程的組織鏈接方式索引方式進程的控制進程的創建進程的終止進程阻塞進程喚醒進程切換進程通信共享存儲消息傳遞管…

gethostbyname()函數說明

轉載&#xff1a;http://www.cnblogs.com/cxz2009/archive/2010/11/19/1881611.html gethostbyname()函數說明——用域名或主機名獲取IP地址 包含頭文件 #include <netdb.h> #include <sys/socket.h> 函數原型 struct hostent *gethostbyna…

操作系統(三)內存管理

操作系統&#xff08;三&#xff09;內存管理一、程序執行過程裝入的三種方式鏈接的三種方式二、內存管理的概念內存空間的分配與回收連續分配管理方式單一連續分配固定分區分配動態分區分配首次適應算法最佳適應算法最壞適應算法鄰近適應算法非連續分配管理方式基本分頁存儲管…

操作系統(四)文件管理

操作系統&#xff08;四&#xff09;文件管理一、文件系統基礎1.文件邏輯結構無結構文件有結構文件2.文件目錄文件控制塊&#xff08;FCB&#xff09;目錄結構單級目錄兩級目錄結構多級目錄結構無環圖目錄結構3.文件保護口令保護加密保護訪問控制4.文件共享硬鏈接軟鏈接5.文件系…

struct stat結構體簡介

轉載&#xff1a;http://www.cnblogs.com/CSU-PL/archive/2013/06/06/3120757.html 在使用這個結構體和方法時&#xff0c;需要引入&#xff1a; <sys/types.h> <sys/stat.h> struct stat這個結構體是用來描述一個linux系統文件系統中的文件屬性的結構。 可以有兩種…

如何在Ubuntu上安裝GCC編譯器

如何在Ubuntu上安裝GCC編譯器1.首先更新包列表sudo apt update2.安裝build-essential軟件包&#xff1a; sudo apt install build-essential3.驗證GCC編譯器是否已成功安裝&#xff0c;請使用gcc --version命令打印GCC版本 rootubuntu:/home/csd# gcc --version

操作系統(五)輸入/輸出(I/O)管理

操作系統&#xff08;五&#xff09;輸入/輸出&#xff08;I/O&#xff09;管理一、I/O控制器二、I/O控制方式程序直接控制方式中斷驅動方式DMA方式通道控制方式I/O軟件層次結構假脫機技術設備的分配與回收緩沖區單緩沖雙緩沖循環緩沖區緩沖池一、I/O控制器 I/O設備由機械部件…

Linux下的I/O多路復用select,poll,epoll淺析

轉載&#xff1a;http://blog.csdn.net/u011573853/article/details/52105365 一&#xff0c;什么是I/O多路復用 所謂的I/O多路復用在英文中其實叫 I/O multiplexing. 就是單個線程&#xff0c;通過記錄跟蹤每個I/O流(sock)的狀態&#xff0c;來同時管理多個I/O流 。) I/O mu…

計算機組成原理(一)計算機系統概述

計算機組成原理&#xff08;一&#xff09;計算機系統概述一、計算機系統層次結構馮諾伊曼機計算機工作過程多級層次結構一、計算機系統層次結構 馮諾伊曼機 特點&#xff1a; 計算機由五大部件組成指令和數據以同等地位存于存儲 器&#xff0c;可按地址尋訪指令和數據用二進…

計算機組成原理(二)數據的表示和運算

計算機組成原理&#xff08;二&#xff09;數據的表示和運算一、BCD碼二、奇偶校驗碼三、海明碼四、循環冗余校驗碼&#xff08;CRC&#xff09;五、乘法運算原碼乘法補碼乘法六、除法運算原碼除法補碼除法七、浮點數的表示與運算浮點數的運算一、BCD碼 組合式BCD碼&#xff1…

select read write

轉載&#xff1a;http://blog.csdn.net/beginning1126/article/details/8057498 [cpp] view plaincopy <p style"color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px; text-align: left; "><span style"font-size:14px;…

數據結構(七)圖的遍歷(遞歸非遞歸方法)

圖的遍歷&#xff08;遞歸非遞歸方法&#xff09;#include<iostream> #include<stdio.h> #include<stack> #include<queue> using namespace std;typedef char VertexType; typedef int EdgeType;#define MAXVEX 100 #define INF 65535 bool visited[M…

Linux IO復用區別與epoll詳解

轉載&#xff1a;http://blog.csdn.net/hacker00011000/article/details/52160590 一、select、poll、epoll之間的區別總結[整理]   select&#xff0c;poll&#xff0c;epoll都是IO多路復用的機制。I/O多路復用就通過一種機制&#xff0c;可以監視多個描述符&#xff0c;一…

簡單圖和多重圖

一、簡單圖 ?? ① 不存在重復邊&#xff1b; ?? ② 不存在頂點到自身的邊&#xff1b; 二、多重圖 ??① 某兩結點之間邊數多于一條&#xff1b; ??② 允許頂點通過一條邊和自己關聯&#xff1b;

C++筆記:select多路復用機制

轉載&#xff1a;http://blog.csdn.net/qdx411324962/article/details/42499535 函數作用&#xff1a; 系統提供select函數來實現多路復用輸入/輸出模型。select系統調用是用來讓我們的程序監視多個文件句柄的狀態變化的。程序會停在select這里等待&#xff0c;直到被監視的文件…