計算機網絡【四】數據鏈路層基本概念+點到點通信(PPP協議)

數據鏈路層基本概念

路由器是網絡層設備

數據鏈路層:數據管道,傳輸的是數據包加上發送地址,接收地址,校驗的數據幀
在這里插入圖片描述

數據鏈路層的信道類型:

  • 點到點信道:使用一對一的點到點通信方式(兩個設備之間直接使用網線相連)
  • 廣播信道:使用一對多的廣播信道方式,因此過程比較復雜。廣播信道上連接的主機很多,因此必須使用專用的共享信道協議來協調這些主機的數據發送

鏈路:一條點到點的物理線路段,中間沒有其他交換節點。一條鏈路只是一條通路的一個組成部分。
數據鏈路:除了物理線路外,還必須有通信協議來控制這些數據的傳輸。若把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路。

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

數據幀

數據幀=數據包+幀頭+幀尾+物理層地址+校驗值
在這里插入圖片描述

數據鏈路層解決的問題

封裝成幀

在這里插入圖片描述

透明傳輸

在這里插入圖片描述

  • 字節填充解決透明傳輸
    發送端的數據鏈路層在數據中出現控制字符SOHEOT的前面插入一個轉義字符ESC(0x1B)
    接收端的數據鏈路在將數據發送給上一層的網絡層的時候會刪除前面的轉義字符
    如果轉義字符也出現在數據當中,那么應該在轉義字符前插入一個轉義字符。當接收端收到兩個連續的轉義字符的時候就刪除其中前面那個
    在這里插入圖片描述
    因此只有如果接收數據中含有一個ESC那么一定是數據中開始字符或者結束字符。
差錯控制

誤碼率(BER):傳輸錯誤的比特占所傳輸比特總數的比率。誤碼率和信噪比有很大的關系。
如果傳送過程中出現錯誤,路由器發現錯誤后會直接丟掉這個幀。可靠傳輸由傳輸層實現。

  • 循環冗余檢驗(CRC)
    在這里插入圖片描述
    運算過程為加上x個0以后,用x+1位數作為除數(隨便選一個)。每次進行異或操作。要確保每次會至少減少一位,意思是如果某次的余數的最高位位0,則商為0,如果最高位為1,則商為1.
    幀檢驗序列FCS為運算的余數,可以通過多種方法得到,不一定是CRC
    最后傳輸的數據是數據加上FCS,如果余數不為0,則丟棄

特點:

  • 這種檢測方法不能確定究竟是哪一個或哪幾個比特出現了差錯
  • 如果除數選擇的足夠好(位數足夠長),那么檢錯能力就很強

使用循環冗余檢驗(CRC)差錯檢測技術只能做到無差錯接受。
無差錯接收:凡是接收的幀我們幾乎都能認為是沒有差錯的。

要做到可靠傳輸(發送什么接收什么)就必須加上確認重傳機制

CRC是一種無比特差錯,而不是無傳輸差錯的檢測機制。雖然數據鏈路層要求做成無傳輸差錯的,但是目前沒有做到。

兩種情況下的數據鏈路層

點對點通信

使用PPP協議,用于點到點通信。全世界用的最多的數據鏈路層協議。

PPP協議特點:

  • 簡單
  • 封裝成幀
  • 透明傳輸
  • 差錯檢驗
  • 多種網絡層協議:可以在PPP協議種封裝TCP/IP協議,可以封裝IPX,SPx協議
  • 多種數據鏈路
  • 檢測連接狀態
  • 最大傳送單元
  • 網絡層地址協商
  • 數據壓縮協商
    缺點:
  • 不能糾錯
  • 不能流量控制
  • 不能得到序號
  • 不支持多點線路
  • 不支持半雙工或單工鏈路
PPP協議的組成
  • 數據鏈路層協議可以用于異步串行或者同步串行介質
  • 使用LCP(鏈路控制協議)建立并維護數據鏈路連接
    ADSL撥號上網賬號密碼正確、有網費數據鏈路層才會通。即LCP有身份驗證和計費功能
  • 網絡控制協議(NCP)允許點到點連接上使用多種網絡層協議

在這里插入圖片描述

PPP協議幀格式

在這里插入圖片描述

A段是地址,因為是點對點傳輸,所以是固定的FF,沒有起什么作用
C段是控制字段,但是沒有使用,一般是03
協議中的兩個字節表示數據包中是什么內容
標志字段F=0x7E
PPP是面向字節的,所有PPP幀的長度都是整數字節

  • 字節填充實現透明傳輸
    將信息字段中出現的每個0x7E(01111111)字節轉換成0x7D 0x5E(0111111001011111)
    如果信息字段中出現0x7D(01111110)的字節,則將其轉換為2字節序列(0x7D,0x5D(0111111001011110)
    如果信息字段中出現ASCLL碼的控制字符(數值小于0x20)則在前面加入一個0x7D
    最后接收的時候再轉換為原來的信息

  • 零比特填充方法實現透明傳輸
    如果信息字段發送的不是字節,而是二進制流,則在發送端,只要發現5個連續的1就在其中填入一個0。在接收的時候每接收5個1就刪除一個0。

  • 不使用序號和確認機制
    在數據鏈路層出現差錯概率不大時,使用比較簡單的PPP協議比較合理
    在因特網環境下,PPP的信息字段放入的數據是IP數據報。數據鏈路層的可靠傳輸并不能夠保證網絡層的傳輸也是可靠的
    幀檢驗序列FCS字段可保證無差錯接受

PPP協議的工作狀態(撥號上網的過程):當用戶撥號撥入ISP時,路由器的調制解調器對撥號做出確認,并建立一條物理連接。PC機向路由器發送一系列的LCP分組(封裝成多個PPP幀)。這些分組及其響應選擇一些PPP參數,進行網絡層配置,NCP給新接入的PC機分配一個臨時的IP地址,時PC機成為因特網上的一個主機。
通信完畢時,NCP釋放網絡層鏈接,收回原來分配出去的IP地址。接著,LCP釋放數據鏈路層連接,最后釋放物理層鏈接。

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

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

相關文章

Linux網絡編程——tcp并發服務器(poll實現)

https://blog.csdn.net/lianghe_work/article/details/46535859想詳細徹底地了解poll或看懂下面的代碼請參考《Linux網絡編程——I/O復用之poll函數》 代碼&#xff1a;#include <string.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#…

二分查找的最大比較次數

二分查找很簡單&#xff0c;可是對于一個區間長度為n的數組&#xff0c;最大的比較次數為多少呢&#xff1f; 對于標準的二分查找&#xff0c;我們每次從區間[l,r)中取一個值&#xff0c;和中間值mid(lr)>>1進行比較&#xff0c;然后將數組分為[l,mid) [mid1,r)&#xf…

Linux網絡編程——I/O復用函數之epoll

https://blog.csdn.net/lianghe_work/article/details/46544567一、epoll概述epoll 是在 2.6 內核中提出的&#xff0c;是之前的 select() 和 poll() 的增強版本。相對于 select() 和 poll() 來說&#xff0c;epoll 更加靈活&#xff0c;沒有描述符限制。epoll 使用一個文件描述…

操作系統【三】內存管理基礎+連續內存分配

內存的基礎知識 內存分為按字節編址&#xff08;8位&#xff09;和字編制&#xff08;不同計算機不一樣&#xff0c;64位計算機就是64位&#xff0c;即8個字節&#xff09; 相對地址邏輯地址 絕對地址物理地址 從邏輯地址到物理地址的轉換由裝入解決。 裝入的三種方式 絕對…

MSG_PEEK標志

https://blog.csdn.net/aspnet_lyc/article/details/28937229 MSG_PEEK標志可以用來讀取套接字接收隊列中可讀的數據&#xff0c;一些情況會用到它&#xff0c;比如為了避免不阻塞而先檢查套接字接收隊列中可讀的數據長度&#xff0c;再采取相應操作。當然&#xff0c;不阻塞也…

快速排序詳解+各種實現方式

快速排序的思想大體來說比較簡單&#xff0c;就是從數組中挑選一個數字當做樞紐&#xff0c;然后將比樞紐大的和比樞紐小的分別放在樞紐的兩邊&#xff0c;再遞歸地對兩邊進行操作&#xff0c;從而進行分治解決問題。平均情況下快速排序是復雜度為O(nlogn)O(nlogn)O(nlogn)&…

C++的單例模式與線程安全單例模式(懶漢/餓漢)

https://www.cnblogs.com/qiaoconglovelife/p/5851163.html1 教科書里的單例模式我們都很清楚一個簡單的單例模式該怎樣去實現&#xff1a;構造函數聲明為private或protect防止被外部函數實例化&#xff0c;內部保存一個private static的類指針保存唯一的實例&#xff0c;實例的…

計算矩陣的逆和行列式的值(高斯消元+LU分解)

計算矩陣的逆 選主元的高斯消元法 樸素的高斯消元法是將矩陣A和單位矩陣放在一起&#xff0c;通過行操作&#xff08;或者列操作&#xff09;將A變為單位矩陣&#xff0c;這個時候單位矩陣就是矩陣A的逆矩陣。從上到下將A變為上三角矩陣的復雜度為O(n3n^3n3)&#xff0c;再從下…

Linux網絡編程——tcp并發服務器(epoll實現)

https://blog.csdn.net/lianghe_work/article/details/46551871通過epoll實現tcp并發回執服務器&#xff08;客戶端給服務器發啥&#xff0c;服務器就給客戶端回啥&#xff09; 代碼如下&#xff1a;#include <string.h>#include <stdio.h>#include <stdlib.h&g…

證明AVL樹的上界和下界

對于n個節點的AVL樹&#xff0c;其高度最低的時候肯定為葉子節點只在最后一層和倒數第二層的時候。即對于2k?1<n≦2k1?12^k-1< n\leqq 2^{k1}-12k?1<n≦2k1?1的時候下界都為kkk。因此下界為h┌log2(n1)┐?1h\ulcorner log_2(n1)\urcorner-1h┌log2?(n1)┐?1 對…

淺談dup和dup2的用法

https://blog.csdn.net/u012058778/article/details/78705536一、dup和dup2函數 這兩個函數都可以來復制一個現有的文件描述符&#xff0c;他們的聲明如下&#xff1a;#include <unistd.h>int dup(int fd);int dup2(int fd, int fd 2); 123 關于dup函數&#xff0c;當我…

C++ cin 實現循環讀入

習慣了使用while(~scanf("%d",x)){}來實現循環讀入&#xff0c;但是有時候使用泛型編程的時候就必須使用C中的cin&#xff0c;但是當我想要實現循環讀入的時候卻發現有些困難。 我們可以看一下下面這個簡單的例子&#xff1a; #include <iostream>using name…

BFPTR算法詳解+實現+復雜度證明

BFPTR算法是由Blum、Floyed、Pratt、Tarjan、Rivest這五位牛人一起提出來的&#xff0c;其特點在于可以以最壞復雜度為O(n)O(n)O(n)地求解top?ktop-ktop?k問題。所謂top?ktop-ktop?k問題就是從一個序列中求解其第k大的問題。 top?ktop-ktop?k問題有許多解決方法&#xff…

C++子類對象隱藏了父類的同名成員函數(隱藏篇)

https://blog.csdn.net/alpha_love/article/details/75222175#include <iostream>#include <stdlib.h>#include <string>using namespace std;/*** 定義人類: Person* 數據成員: m_strName* 成員函數: attack()*/class Person{public:Person(){cout<<&…

隨機化快速排序+快速選擇 復雜度證明+運行測試

對于快速排序和快速選擇我之前的文章已經有詳細的說明&#xff0c;需要了解的同學可以移步 傳送門&#xff1a;快速排序&#xff5c;快速選擇(BFPTR) 所謂隨機化其實就是選擇樞紐的時候使用隨機數選擇而已&#xff0c;實現起來很簡單。但是我們使用隨機數如何保證復雜度呢&am…

C++子類父類成員函數的覆蓋和隱藏實例詳解

https://www.jb51.net/article/117380.htm函數的覆蓋覆蓋發生的條件&#xff1a; &#xff08;1&#xff09; 基類必須是虛函數&#xff08;使用virtual 關鍵字來進行聲明&#xff09; &#xff08;2&#xff09;發生覆蓋的兩個函數分別位于派生類和基類 &#xff08;3&#xf…

【Linux基礎】Linux的5種IO模型詳解

引入 為了更好的理解5種IO模型的區別&#xff0c;在介紹IO模型之前&#xff0c;我先介紹幾個概念 1.進程的切換 &#xff08;1&#xff09;定義 為了控制進程的執行&#xff0c;內核必須有能力掛起正在CPU上運行的進程&#xff0c;并恢復以前掛起的某個進程的執行。即從用戶…

計算機網絡【五】廣播通信+以太網

局域網的拓撲 廣域網使用點到點通信 局域網使用廣播通信 可以隨意向網絡中添加設備。 總線網星形網&#xff0c;使用集線器。現在多使用星形網絡。環狀網樹形網 其中匹配電阻用來吸收總線上傳播的信號。 共享通信媒體 靜態劃分信道 頻分復用、時分復用、波分復用、碼分復用…

聊聊Linux 五種IO模型

一篇《聊聊同步、異步、阻塞與非阻塞》已經通俗的講解了&#xff0c;要理解同步、異步、阻塞與非阻塞重要的兩個概念點了&#xff0c;沒有看過的&#xff0c;建議先看這篇博文理解這兩個概念點。在認知上&#xff0c;建立統一的模型。這樣&#xff0c;大家在繼續看本篇時&#…

操作系統【四】分頁存儲管理

連續分配方式的缺點&#xff1a; 固定分區分配&#xff1a;缺乏靈活性&#xff0c;產生大量的內部碎片&#xff0c;內存的利用率較低 動態分區分配&#xff1a;會產生許多外部碎片&#xff0c;雖然可以用緊湊技術處理&#xff0c;但是緊湊技術的時間代價較高 基本分頁存儲管理…