计算机网络(谢希仁 第七版) 数据链路层 个人笔记
寫此博文目的:整理知識點方便自己以后復習和深入的學習
?
數據鏈路層
1)數據鏈路:除了物理線路外,還必須有通信協議來控制這些數據的傳輸,若把這些協議的軟件和硬件加到鏈路上,就構成了數據鏈路
數據鏈路層傳輸的數據單位:幀
?
幀從生成到發送的一個過程:由應用層,傳輸層,網絡層形成的數據報,在數據鏈路層封裝成幀,然后通過數據鏈路傳輸到另外一個結點
?
鏈路層的基本功能:
1)封裝成幀
加頭:在哪里開始(開始標志)
加尾:在哪里結束(結束標志)
首尾還包含控制信息和最大傳輸單元(最大傳輸長度)
SOH:首部
EOT:尾部
規定首尾頭的長度加起來要小于原始報文的長度(軟性規定)
2)透明傳輸(理解透明二字,表示無論什么樣比特組合的數據都能通過數據鏈路層)
字符填充發保證數據鏈路傳輸的透明性
以下是字符填充法:
如果數據報文中由和頭SOH,尾(EOT)相同的部分怎么辦?
答:數據報文中出現的SOH和EOT(不代表頭尾的)前面一個轉義字符ESC
如果由ESC這個數據的話,也是在ESC前面加ESC
這樣無論什么樣的數據,數據鏈路層都能傳輸
3)差錯檢測
數據可靠性的保證
循環冗余校驗CRC
1)在發送端,數據報文后面加冗余碼
n位數據+k位冗余碼生成完整的一個幀
冗余碼的生成:
數據m:1010001101(10位)
假設n=5,p=110101
然后用二進制的模2運算進行2的n次方乘以m的運算
具體:m后面加n個0,得到n+k位除數除以p得到余數r
如果r不夠n位,則前面補0
二進制的除法:和十進制的除法(豎式)不同在于沒有減法,而是直接異或
異或:相同為0,不同為1
在接收端:
CRC校驗:把收到的每一個幀都除以相同的除數p(模2運算),然后檢測余數r,r=0,則數據無誤
即a/b 商c余d 那么 b*c+d==c
幀檢驗序列:是數據+冗余碼生成的序列
注意幀檢驗序列和循環冗余校驗的區別,一個是序列,一個是方法
CRC是無差錯接受:凡是接收的幀都沒有傳輸差錯,由差錯的幀就丟棄而不接受
確認和重傳機制:流量控制
4)流量控制(確認和重傳機制)
彌補主機a,b之間的帶寬差異
發送下一個幀之前先確認上一個幀傳輸成功(等待接收端發送過來的接收成功信號)
(ack信號)
發送方:
1. 從主機中取一個幀
2. 進數據幀發送到數據鏈路層的發送緩存里
3. 將發送緩存里的數據幀發送出去
4. 等待
5. 若收到ack信號,則跳轉到1
接收方:
1. 等待
2. 若收到數據幀,則放入接收緩存中
3. 先進行冗余校驗,正確則上交給主機
4. 向發送端發送ack信息
5. 跳轉到1
沒有流量控制的話,就是不停的發不停的發,由流量控制的話,就發送一個幀,收到ack信號再發
可靠性的保證
采用流量控制的時候數據傳輸可能出現的四種情況:
1)正常情況
2)數據幀出錯:接收端進行CRC校驗之后發現數據錯誤,則向發送端發送NAK信號
3)數據幀丟失:接收端一直沒有接收到數據,如果發送端沒有超時計時器的話會一直得到接收端返回信號
4)返回信號丟失:發送端在超時計時器時間內沒有收到接收信號,則重發
重傳時間限定:發送的平均值
第四種因為返回信號丟失,所以發送端會一直發,那么接收端就存在接收了重復幀的問題
解決方法:給發送幀編號,然后直接去重
幀編號因為幀很多,占用的比特就大(1,2,3,......n)
所以用0,1表示幀編號,0,1區分這個幀和前面幀的不同(0,1區分上下幀)
?
鏈路層代表協議:ppp協議
Ppp協議就是用戶計算機和因特網服務提供者(ISP)進行通信所用的數據鏈路層協議
?
ppp協議的特點:
1)簡單
2)封裝成幀
3)透明性
4)多種網絡層協議:在同一條物理鏈路上同時支持多種網絡層協議,向上兼容
5)ppp能在多種類型的物理鏈路上運行,向下兼容(ppp協議保證遵循ppp協議的二進制既能轉換為電信號和光信號
6)差錯檢測
7)檢測鏈接狀態:檢測物理鏈路是否處于鏈接狀態
8)最大傳輸單元:一幀最多能傳輸多少數據
9)網絡層地址協商:識別路由結點,mac地址(網卡上的,唯一16進制地址)
10)數據壓縮協商:不經過任何有損數據的操作,對數據進行重復率刪除
?
ppp協議的組成:
1)封裝成幀的方法
2)鏈路控制協議LCP:保證鏈路是連通的,保證跟誰連,跟誰不連,還有mac地址(物理上的管理)
3)網絡控制協議NCP:怎么從數據報文是給你的?所以還需要識別的進程(邏輯層面的管理)
?
ppp協議的幀格式:
1)各字段的意義
標志字段F仍為0x7F
地址字段A為0xFF,網絡層所用
控制字段C為0x03
ppp有一個2個字節的協議字段
協議字段為0x0021時,ppp幀的信息子段就是ip數據報
協議字段為0xC021時,則是ppp鏈路控制數據
協議字段為0x8021時,則是網絡控制數據
2)ppp協議采用字符填充法來保證透明傳輸(硬件實現)
出現0x7E自動轉換為2字節序列:0x7D和0x5E
出現0x7D自動裝完0x7D,0x5D
Assic碼:7位2進制 128
前32個和最后一個都是控制字符
為區分控制字符和普通字符,在控制字符前面加上0x7D用來區分
3)零比特填充法:5個連續的1則填入一個0
除開開始和結束標志的0x7F,中間出現的0x7F出現5個連續的1就填充一個0,這樣就能區分數據0x7f和結束標志0x7f:填充完畢之后,遇到5個連續的1,如果后面有0,那么他是數據0x7f,如果沒有0,那么他是結束標志0x7f
數據鏈路層的兩個子層:邏輯鏈路控制層LLC和媒體接入控制MAC(物理設備)
現在實際制造過程兩層的概念很模糊
?
通信適配器:又叫網卡
網卡的重要功能:
1)進行串并轉換(從傳輸層拿到的東西封裝成幀在物理線路上進行傳輸)
2)對數據進行緩存(流量控制中的緩存存放地點)
3)在計算機的操作系統安裝設備驅動程序
4)實現以太網協議(PPP協議)
?
CSMA/CD協議:避免數據鏈路層的數據“碰撞”影像數據準確性的協議
?
局域網廣播發送方式:B發送一個數據,總線上的每一個工作的計算機都能檢測到B發送的數據,總線上每個在工作的計算機都會檢測B發送的數據,如果是發送給自己的就接收,如果不是就放棄
優點:
1)不需要先建立鏈接再發送數據,可以直接發送
2)不必對發送的數據幀進行編號,也不必確認重傳(局域網默認通信狀況非常好,不存在誤差
CSMA/CD協議:載波監聽多點接入/碰撞檢測
1)多點接入:在總線上任意接入
2)載波監聽:發送數據前先檢測一下總線上是否有其他計算機在發送數據
3)碰撞檢測:當總線上檢測到兩個電波,就認為發生了碰撞,現在不發送數據
檢測出來發送碰撞之后,立即停止發送數據,等待隨機時間后再發送
因為存在發送時延,雖然存在碰撞檢測,但還是有可能會發生碰撞
碰撞時間是一個往返時間,不確定,這是2M網只有200k的原因
爭用期:一旦檢測到碰撞,等待一定時間在發送,這個時間叫爭用期或者碰撞窗口
經過爭用期這段時間還沒有檢測到碰撞,那么這次發送不會發生碰撞
長度:51.2us(現用的)
所以發送一個數據后,只有等待一個爭用期才能確定這個數據沒有發生碰撞,完整到達了
二進制指數類型避退算法:確定碰撞后最多重傳次數
強化碰撞:發送一條干擾信號,讓發生了碰撞的事件讓大家都知道,避免再次碰撞
因為物理層存在不同的傳輸方式(傳輸介質的不同),所以數據鏈路層需要彌補物理層的這些差異,給上層提高服務!!!
?
集線器:轉發器,相當于一段總線,目的是接收有點失真的信號,修補一下,然后再發生出去,這樣可以減少遠距離傳輸的失真數據
以太網上的物理層工作器件
?
數據傳輸總時間分為四個部分:
1)發送時間:網卡一比特一比特的發送出去需要時間
2)傳輸時間:從網口出來到目的端的時間
3)傳輸時間中的等待時間:中間的轉發器轉法數據需要一個一個來
4)處理時間:比如冗余錯誤檢測需要時間
以太網的信道利用率:
1)發送時間
2)傳輸時間
發送時間/(發送時間+傳輸時間)
因為以太網中存在碰撞所以發送時間和傳輸時間占的比重很大,所以算信道利用率的時候只算這兩個
解釋一下:
以太網信道利用率S=發送成功時間/(Nr個等待時間+發送成功時間+確認傳輸成功信號時間)
A:總發送成功的概率(總體)
P:每一次成功的概念(個體)
S最后只和參數a有關
參數a:a的意思參考前面
所以a要小的話,則幀長L必須盡可能大
以太層的MAC地址:局域網中,硬件地址又叫物理地址(MAC地址)
避免物理設備識別和重名(48比特,6個字節)
?
MAC構成:
前3個字節:機構唯一標識符(廠商)
后三個字節:廠商自己決定的(生產日期,型號等)
正常情況下,一個物理設備的MAC地址是全球唯一的,但路由器除外,因為它又兩個網卡,所以又兩個硬件地址
MAC層拿到有一個MAC幀之后,硬件檢驗一下是我的,就收下,不是我的,就是不接收,是我的又分為了三種情況:
1)單播幀:明確知道該幀是發給誰的,一對一
2)廣播幀:拿到幀之后,不確定是發給誰的,只確定是發給我這總線上的某一個的,所以對該幀進行廣播
3)多播幀:通過集線器往其他總線上再廣播一次
?
MAC幀格式的兩種標準格式:
V2標準(書本以該為例),802.3標準
MAC地址:目的地址(6個字節)+源地址(6個字節)+類型(在數據鏈路層支持哪些協議,2個字節)+數據(最少64字節,小于則填充)+幀檢測冗余序列(3個字節)
前8個字節+MAC地址
前8個字節中的7個字節:用來進行MAC幀的比特同步,準備工作
前8個字節中的最后一個字節:正式開始接收MAC層的標志,因為在同步過程中不是發一個就接收一個的,可能會漏掉,所以需要標識符
?
接收MAC幀的檢驗:
1)幀的長度應該是整數個字節
2)冗余檢驗序列FCS有差錯
3)數據段長度不在46-1500之間(過小或者過大)
4)有效幀長位64-1518之間
5)無差錯傳輸(出差錯就丟棄)
幀間最小時間間隔:確認這個幀沒有發送碰撞或者發生了碰撞(9.6us)
一個站在檢測到總線開始空閑之后,還要等待9.6us才能再次發送數據
?
物理層擴展以太網:集線器
多層集線器疊加:
使用集線器在物理層擴展以太網:
優點:
1.擴大局域網的覆蓋地理范圍
2.擴大了碰撞域
缺點:
1.雖然碰撞域大了,單總的吞吐率并未提高
2.不能連接不同傳輸速率的網線
?
網橋:工作在數據鏈路層,也是擴展以太網
特點:
具有過濾幀的功能(只要拿到幀解析出來以后就知道往哪里送,發送給誰
網橋替代集線器,網橋的一個端口出來的線就相當于一個總線,網橋表記錄站地址和端口,即該數據從那個機器來的,通過我的那個端口進來的
比集線器更節約資源,帶有目的性的傳輸,而不是集線器的盲目傳輸
網橋帶來的優點:
1. 過濾了通信量
原因說明:1和3的通信不影響4 5 6的通信,他們不在一個碰撞域上,如果使用的是集線器,那么他們就是在同一個集線器上的
2. 擴大了物理范圍(各地的連接,網狀)
3. 提高了可靠性
原因說明:2,3之間斷了,不影響4 5 6之間的通信
4)可連接不同速率的的網
缺點:
1)儲存轉法增加了時延(站-端口表)
2)MAC子層沒有流量控制功能
3)具有不同MAC子層的網段橋接在一起時延更大(光信號,點信號)
4)只適用于用戶數不太多的局域網(不超過幾百個),否則會因為過多的廣播信息產生網絡堵塞,產生廣播風暴(因為用戶多導致轉法表太大!!)
?
網橋按照以下算法處理收到的幀和建立轉發表
1)從端口x收到無差錯的幀(有差錯就丟棄了),然后在轉法表中查找此幀的目的站的MAC地址
2)
查到了:查出到此目的地的MAC地址應該走的端口號,如果該端口號就是x,那么此幀不要再從網橋發出去了,如果不是x,就從該端口號把此幀轉發出去
沒有查到:向網橋除x以外的所有端口轉發此幀
2)如果源站不在轉發表中,則將源站的MAC地址加入轉發表且登記該幀進入網橋的端口號
3)如果源站在表中則更新計時器,否則不更新
?
網橋轉發表登記的信息:
站地址:收到幀的源MAC地址
端口:收到的幀進入網橋的端口號
時間:收到的幀進入該網橋的時間
?
網橋轉發表計時器的作用:網橋使用了支撐樹算法,避免網橋轉發的幀在網絡中不停的兜圈子!!
看圖即可明白:
支撐樹算法的核心思想:
每隔幾秒要每一個網橋廣播其標識號和它所知道的其他所有在網上的網橋
選擇一個網橋作為支撐樹的一個跟,然后以最短路徑為依據,找到樹上的每一個結點,當局域網中網橋數量很多時,可以劃分成多給支撐樹
(個人現在的理解是避免產生環)
?
交換機
本質:工作在數據鏈路層的集線器(集線器是工作在物理層的),功能和網橋的功能類似
交換機的特點:
1)每個端口都與主機相連,工作在全雙工方式
2)連通的端口對,使得端口對的主機能像獨占網線一樣,進行沒有碰撞的數據傳輸
3)交換速率高
上面的局域網中還存在集線器的原因:交換機太貴了,小地方沒有必要用
虛擬局域網VLAN(邏輯分組)
舉例:A4發送信息,先是該樓層的交換機收到,解析一下,發現A4屬于VLAN組1,所以查找VLAN1組員的端口,如果該樓層沒有VLAN組1的成員的話,就把信息給整棟樓的總交換機,然后整棟樓的總交換機,查找VLAN組1的成員所在樓層,將信息給該樓層的交換機,然后改樓層的交換機發給組員(其實就是一種邏輯的分組,關鍵是解析你是哪個VLAN組的)
?
虛擬局域網協議允許在以太網幀格式中插入一個4字節的標志符,叫做VLAN標記,用來指明發送改幀的工作站屬于哪一個虛擬局域網
?
有交換機的以太網在全雙工方式下工作不會存在碰撞(以太網的功能特性),屬于不使用CSMA/CD碰撞協議
?
吉比特以太網在半雙工下,必須進行哦碰撞檢測,由于數據率提高了,為保證時延帶寬積變小,必須減小電纜長度或者增加幀的長度
增加幀長度的方法就叫載波延申(不足512字節,填充特殊字符)
?
分組突發:當很多的短幀要發送的時候,你要對他們都進行載波延申,一個個的都填充字符就很麻煩,你只要將這些短幀間留有最小的間隔,將他們當作填充了特殊字符以后的幀發送(實際上沒有填充特殊字符,都是有用的信息),直到大于限定幀長度(1500字節)或者稍多一點
?
全雙工下不使用載波延申和分組突發,因為不存在碰撞
轉載于:https://www.cnblogs.com/yinbiao/p/9726460.html
總結
以上是生活随笔為你收集整理的计算机网络(谢希仁 第七版) 数据链路层 个人笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core Identit
- 下一篇: CDK上安装kube-dashboard