网络-数据链路层回顾
數(shù)據(jù)鏈路層是干嘛的?
網(wǎng)絡(luò)層是研究分組怎樣從一個網(wǎng)絡(luò)通過路由器轉(zhuǎn)發(fā)到另一個網(wǎng)絡(luò)
數(shù)據(jù)鏈路層主要研究在同一個局域網(wǎng)中,分組怎樣從一個主機傳送到另一個主機(不經(jīng)過路由器)
數(shù)據(jù)鏈路層主要使用兩種信道:
點對點信道:使用一對一的點對點通信方式,使用PPP協(xié)議。
廣播信道:使用一對多的廣播通信方式,使用CSMA/CD協(xié)議。
數(shù)據(jù)鏈路層的三個需要解決的基本問題:封裝成幀、透明傳輸、差錯檢測
了解以太網(wǎng)MAC層的硬件地址
適配器、轉(zhuǎn)發(fā)器、集線器、網(wǎng)橋、以太網(wǎng)交換機的作用以及適用場合
兩個主機進行通信時數(shù)據(jù)鏈路層的地位
主機H1通過電話線上網(wǎng),中間經(jīng)過三個路由器(R1,R2和R3)連接到遠程主機H2。中間經(jīng)過的網(wǎng)絡(luò)可以是多種的。
如下圖中所示的:電話網(wǎng)、局域網(wǎng)、廣域網(wǎng)。
當(dāng)主機H1向H2發(fā)送數(shù)據(jù)時,從協(xié)議的層次上觀察,數(shù)據(jù)的流動如下圖所示。
主機H1和H2都有完整的五層協(xié)議棧,但是由路由器轉(zhuǎn)發(fā)分組時使用的協(xié)議棧只有下面三層。
數(shù)據(jù)進入路由器后先從物理層開始最后上升的網(wǎng)絡(luò)層,在轉(zhuǎn)發(fā)表中查找到下一跳的地址后,再下到物理層轉(zhuǎn)發(fā)出去。
當(dāng)我們專門研究數(shù)據(jù)鏈路層的問題時,我們可以只關(guān)心在協(xié)議棧中水平方向的各個數(shù)據(jù)鏈路層,如下圖所示。
H1的鏈路層---->R1的鏈路層---->R2的鏈路層---->R3的鏈路層---->H2的鏈路層
H1和H2的通信可以看成是由四段不同的數(shù)據(jù)鏈路層通信組成,即:H1--->R1,R1---->R2,R2---->R3,R3---->H2
這四段不同的鏈路層可能采用不同的鏈路層協(xié)議。
使用點對點信道的數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路和幀
首先我們需要區(qū)分什么是鏈路什么是數(shù)據(jù)鏈路
- 鏈路(物理鏈路):就是從一個結(jié)點到相鄰結(jié)點的一段物理線路(有線或無線),中間沒有任何其他的交換結(jié)點。
兩個計算機之間的通信路徑,往往需要經(jīng)過許多這樣的鏈路。鏈路只是通信路徑的組成部分
- 數(shù)據(jù)鏈路(邏輯鏈路):數(shù)據(jù)鏈路層上傳輸數(shù)據(jù),在有物理線路之外,還需要有一些必要的通信協(xié)議來控制這些數(shù)據(jù)的傳輸。若把實現(xiàn)這些協(xié)議的硬件和軟件加到鏈路上,就構(gòu)成了數(shù)據(jù)鏈路。
數(shù)據(jù)鏈路層一般通過網(wǎng)絡(luò)適配器(硬件和軟件)來實現(xiàn)這些協(xié)議
- 幀:點對點信道的數(shù)據(jù)鏈路層的協(xié)議數(shù)據(jù)單元。
數(shù)據(jù)鏈路層把網(wǎng)絡(luò)層交下來的數(shù)據(jù)構(gòu)成幀發(fā)送到鏈路上,以及把接收到的幀中的數(shù)據(jù)取出并上交給網(wǎng)絡(luò)層
網(wǎng)絡(luò)層協(xié)議數(shù)據(jù)單元---IP數(shù)據(jù)報(數(shù)據(jù)報、分組、包)
點對點數(shù)據(jù)鏈路層進行通信的主要步驟:
? ? ? ?假設(shè)兩個結(jié)點AB之間進行,則只需關(guān)注這兩個節(jié)點的網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層
?
需要解決的三個基本問題
- 封裝成幀
什么是封裝成幀?
在一段數(shù)據(jù)的前后分別添加首部和尾部,這樣就構(gòu)成了一個幀。
如何封裝成幀?
網(wǎng)絡(luò)層的IP數(shù)據(jù)報傳送到數(shù)據(jù)鏈層就成為幀的數(shù)據(jù)部分。
在幀的數(shù)據(jù)部分的前面和后面分別添加上首部和尾部,就構(gòu)成一個完整的幀。
這個完整的幀就是數(shù)據(jù)鏈路層的數(shù)據(jù)傳送單元
幀的首部和尾部的作用
1.進行幀界定:接收到物理層上交的比特流后,就能根據(jù)首部和尾部的標(biāo)記,從收到的比特流中識別幀的開始和結(jié)束
2.添加一些必要的控制信息
幀界定
幀的開始和結(jié)束的標(biāo)記使用專門指明的控制字符:
在一個幀的最前面添加SOH(Start Of Header)控制字符,表示幀的首部開始
在一個幀的末尾添加EOT(End Of Transmission)表示幀的結(jié)束。
SOH和EOT只是控制字符的名稱。并不是真正的字符S、O、H(或者E、O、T)。
它們十六進制編碼分別為01(二進制為00000001)04(二進制為00000100)
最大傳送單元MTU(Maximum Transfer Unit)——每一種鏈路層協(xié)議都規(guī)定的所能傳送的幀的數(shù)據(jù)部分長度上限
- 透明傳輸
什么是透明傳輸?
無論什么比特組合的數(shù)據(jù)都能通過這個數(shù)據(jù)鏈路層。也就是說數(shù)據(jù)鏈路層對這些數(shù)據(jù)來說是透明的
怎么實現(xiàn)透明傳輸?
因為幀的開始和結(jié)束的標(biāo)記使用專門指明的控制字符。
因此,所傳輸?shù)臄?shù)據(jù)中的任何8比特的組合一定不允許和用作幀界定的控制字符的比特編碼一樣。
為了解決透明傳輸問題,我們就需要解決在數(shù)據(jù)中可能出現(xiàn)的控制字符SOH或者EOT不被解釋為控制字符
解決了以上問題就能實現(xiàn)透明傳輸。
解決辦法:字節(jié)填充或者字符填充
在發(fā)送端的數(shù)據(jù)鏈路層的數(shù)據(jù)中出現(xiàn)控制字符 SOH 或者 EOT 的前面插入一個轉(zhuǎn)義字符 ESC (其十六進制編碼是1B,二進制是00011011)
如果轉(zhuǎn)義字符也出現(xiàn)在數(shù)據(jù)當(dāng)中,解決方法仍然是在轉(zhuǎn)義字符前面插入一個轉(zhuǎn)義字符
在接收端的數(shù)據(jù)鏈路層在把數(shù)據(jù)送往網(wǎng)絡(luò)層之前刪除這個插入的轉(zhuǎn)義字符,因此當(dāng)接收端收到連續(xù)兩個轉(zhuǎn)義字符時,就刪除其中前面的一個。
以上操作被稱為字節(jié)填充(byte stuffing)或字符填充(character stuffing)
- 差錯檢測
在傳輸過程中可能會產(chǎn)生差錯,如0變成1,或者1變成0。這稱為比特差錯。
在傳輸過程中沒有出現(xiàn)比特差錯,但出現(xiàn)幀丟失、幀重復(fù)、幀失序這三種情況,則屬于傳輸差錯,比特差錯是傳輸差錯的一種
在一段時間內(nèi),傳輸錯誤的比特占所傳輸比特總數(shù)的比率稱為誤碼率BER(Bit Error Rate)
如何解決比特差錯?
目前在數(shù)據(jù)鏈路層廣泛使用 循環(huán)冗余檢驗CRC(Cyclie Redundancy Check) 的檢錯技術(shù)
原理:在發(fā)送端的數(shù)據(jù)鏈路層傳輸?shù)臄?shù)據(jù)后面添加冗余碼
? ? ? ? ? ?在接收端的數(shù)據(jù)鏈路層收到的數(shù)據(jù)以幀為單位進行CRC檢驗
? ? ? ? ? ?檢驗得出的余數(shù)是否為0。是,表示無差錯就接受該幀;不是,表示有差錯,但不確定哪里出錯就丟棄該幀。
為了進行檢錯而添加的冗余碼稱為 幀檢測序列FCS(Frame Check Sequence)
如何解決傳輸差錯?
在CRC檢錯的基礎(chǔ)上,增加幀編號、確認和重傳機制
即:收到正確的幀就要向發(fā)送端發(fā)送確認。
? ? ? ?發(fā)送端在一定的期限內(nèi)若沒有收到對方的確認,就認為出現(xiàn)了差錯,因而就進行重傳,直到收到對方的確認為止。
?
為了提高通信效率,通信質(zhì)量良好的有線傳輸鏈路,數(shù)據(jù)鏈路層協(xié)議不使用確認和重傳機制
也就是不要求數(shù)據(jù)鏈路層向上提供可靠傳輸?shù)姆?wù)。如果出現(xiàn)差錯,那么改正的任務(wù)交給上層協(xié)議
?? ??? (如,運輸層的TCP協(xié)議)完成。?? ?
通信質(zhì)量較差的無線傳輸鏈路,數(shù)據(jù)鏈路層協(xié)議使用確認和重傳機制,數(shù)據(jù)鏈路層向上提供可靠傳輸?shù)姆?wù),如無線網(wǎng)絡(luò)
?
點對點協(xié)議PPP
由來:因為早期通信線路質(zhì)量不好,因此在數(shù)據(jù)鏈路層使用的協(xié)議是能實現(xiàn)可靠傳輸?shù)?高級數(shù)據(jù)鏈路控制HDLC(High-level Data Link Control)協(xié)議
隨著通信線路質(zhì)量的提高,現(xiàn)在HDLC已經(jīng)很少使用了,改為使用相對簡單的PPP協(xié)議
PPP協(xié)議就是用戶計算機和ISP進行通信所使用的數(shù)據(jù)鏈路層協(xié)議
每一個ISP都從因特網(wǎng)的管理機構(gòu)或從一個更大的ISP申請到一批IP地址。ISP擁有與因特網(wǎng)通過高速通信專線相連的路由器。大的ISP還擁有屬于自己的通信線路,小的ISP則向電信公司租用通信線路。用戶在某一個ISP繳費登記后(或購買了該ISP的上網(wǎng)卡),就可用自己的計算機通過調(diào)制解調(diào)器、電話線路接入到該ISP。用戶在接通ISP后,ISP就分配給該用戶一個臨時IP地址。用戶計算機在獲得了臨時的IP地址后,就成為連接在因特網(wǎng)上的主機,因而就可以使用因特網(wǎng)所提供的各種服務(wù),當(dāng)用戶結(jié)束通信后,ISP就把剛才分配給該用戶的IP地址收回,以便再分配給后面接通ISP的其他用戶使用。
PPP協(xié)議應(yīng)滿足的需求
- 簡單
因為IEFE設(shè)計的因特網(wǎng)體系結(jié)構(gòu)中把最復(fù)雜的部分放在TCP協(xié)議中。
網(wǎng)際層協(xié)議IP則相對簡單提供不可靠傳輸,因此下一層的數(shù)據(jù)鏈路層不必提供比IP更復(fù)雜的協(xié)議
因此數(shù)據(jù)鏈路層的幀不需要糾錯、不需要序號、不需要流量控制
- 封裝成幀
PPP協(xié)議必須規(guī)定特殊的字符為幀定界符
- 透明性
PPP協(xié)議必須保證數(shù)據(jù)傳輸?shù)耐该餍?#xff0c;傳輸?shù)臄?shù)據(jù)中有和定界符一樣的比特組合時,需要解決這個問題(字節(jié)或者字符填充)
- 多種網(wǎng)絡(luò)層協(xié)議
PPP協(xié)議必須能夠在同一條物理鏈路上同事支持多種網(wǎng)絡(luò)層協(xié)議的運行,如IP何IPX等
- 多種類型鏈路
PPP協(xié)議還必須能夠在多種類型的鏈路上運行
- 差錯檢測
能夠?qū)邮斩耸盏降膸M行檢測,并立即丟掉有差錯的幀
- 檢測連接狀態(tài)
能夠自動檢測鏈路是否處于工作狀態(tài)
- 最大傳輸單元
能夠設(shè)置最大傳送單元MTU的標(biāo)準(zhǔn)默認值(MTU的標(biāo)準(zhǔn)默認值為1500字節(jié))
- 網(wǎng)絡(luò)層地址協(xié)商
PPP協(xié)議必須提供一種機制使通信的兩個網(wǎng)絡(luò)層(如兩個IP層)的實體能夠通過協(xié)商通知或能夠配置彼此的網(wǎng)絡(luò)地址
協(xié)商的算法應(yīng)盡可能簡單,并且嫩夠在所有的情況下得出協(xié)商結(jié)果
- 數(shù)據(jù)壓縮協(xié)商
PPP協(xié)議必須提供一種方法來協(xié)商使用數(shù)據(jù)壓縮算法
?
PPP協(xié)議的組成
PPP協(xié)議由三部分組成
1.一個將IP數(shù)據(jù)報封裝到串行鏈路的方法
PPP既支持異步鏈路(無奇偶檢驗的8比特數(shù)據(jù)),也支持面向比特的同步鏈路。
IP數(shù)據(jù)報在PPP幀中就是其信息部分,該大小受MTU控制
2.一個用來建立,配置和測試數(shù)據(jù)鏈路連接的 鏈路控制協(xié)議LCP(Link Control Protocol)
3.一套 網(wǎng)絡(luò)控制協(xié)議NCP(Network Control Protocol),其中的每一個協(xié)議支持不同的網(wǎng)絡(luò)層協(xié)議,如IP、OSI的網(wǎng)絡(luò)層、DECnet等
?
PPP協(xié)議的幀格式
4個首部字段(分別為1、1、1、2字節(jié))+信息字段(不超過1500字節(jié))+尾部字段(分別為2、1字節(jié))
各字段含義
首部字段:四個字段
第一個字段:標(biāo)志字段 F(Flag),幀定界符,表示一個幀開始。規(guī)定為0x7E(十六進制的7E,二進制01111110),1字節(jié)。
注意:連續(xù)兩個幀之間只需要一個標(biāo)志字段。如果出現(xiàn)兩個標(biāo)志字段,表示一個空幀,應(yīng)丟棄
第二個字段:地址字段 A。規(guī)定為0xFF(即11111111),1字節(jié)。
第三個字段:控制字段 C。規(guī)定為0x03(即00000011),1字節(jié)。
第四個字段:協(xié)議字段。2字節(jié)。
? ? ? ? ? ? ? ? ? ? ?規(guī)定協(xié)議字段為0x0021時,PPP幀的信息字段就是IP數(shù)據(jù)報
? ? ? ? ? ? ? ? ? ? ?若協(xié)議字段為0xC021時,PPP幀的信息字段就是LCP的數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ?若協(xié)議字段為0x8021時,PPP幀的信息字段就是網(wǎng)絡(luò)層的控制數(shù)據(jù)
?
信息字段:長度可變,不超過1500字節(jié)
尾部字段:兩個字段
第一個字段:使用CRC的幀檢驗序列FCS,1字節(jié)。
第二個字段:標(biāo)志字段 F(Flag)。幀定界符,表示一個幀結(jié)束。規(guī)定為0x7E(十六進制的7E,二進制01111110),1字節(jié)。
?
字節(jié)填充
信息字段中出現(xiàn)和標(biāo)志字段一樣的比特(0x7E)組合時
需要使用一些方法使這種形式上和標(biāo)志字段一樣的比特組合不出現(xiàn)在信息字段中
當(dāng)PPP使用異步傳輸(逐個字符的傳送)時,把轉(zhuǎn)義字符定義為0x7D(即01111101),并使用字節(jié)填充
1.把信息字段中出現(xiàn)的每一個0x7E字節(jié)轉(zhuǎn)變成2字節(jié)序列(0x7D,0x5E)
2.若信息字段中出現(xiàn)一個0x7D的字節(jié)(即出現(xiàn)了和轉(zhuǎn)義字段一樣的比特組合),則把0x7D轉(zhuǎn)變成2字節(jié)序列(0x7D,0x5D)
3.若信息字段中出現(xiàn)ASCII碼的控制字符(即數(shù)值小于0x20的字符),則在該字符前面加入一個0x7D字節(jié),并改變該字符的編碼
零比特填充
PPP協(xié)議進行同步傳輸(一連串的比特連續(xù)傳送)時,采用零比特填充的方法來實現(xiàn)透明傳輸
標(biāo)志字段是0x7E,二進制為01111110
1.在發(fā)送端,先掃描整個信息字段(硬件或者軟件)只要發(fā)現(xiàn)有連續(xù)的5個1就立即填入一個0,保證不出現(xiàn)6個連續(xù)的1。
2.在接收端收到一個幀時,先找到標(biāo)志字段 F 確定一個幀的邊界
? ?然后再用硬件對其中的比特流進行掃描
? ?每發(fā)現(xiàn)5個連續(xù)1時,就把這5個連續(xù)1后的一個0刪除
?
PPP協(xié)議的工作狀態(tài)
PPP鏈路初始化過程:
設(shè)備之間無鏈路---------> 物理鏈路----------> LCP鏈路---------->已鑒別的LCP鏈路---------->已鑒別的LCP鏈路和NCP鏈路
?
PPP鏈路的起始和終止?fàn)顟B(tài)永遠是 鏈路靜止(Link Dead)狀態(tài)
此時用戶PC和ISP的路由器之間并不存在物理層的連接
1.當(dāng)用戶撥號接入ISP后,就建立了一條從用戶PC到ISP的物理鏈路。
? ?用戶在屏幕上點擊連接按鈕,路由器就能夠檢測調(diào)制解調(diào)器發(fā)出的載波信息。
? ?雙方就建立了物理層連接,PPP進入 鏈路建立(Link Establish)狀態(tài)。
? ?目的是建立鏈路層的LCP連接
2.用戶PC向ISP發(fā)送一系列的?鏈路控制協(xié)議LCP分組(封裝成多個PPP幀),以便建立連接
? ?LCP開始協(xié)商一些配置選項,發(fā)送LCP的配置請求幀(Configure-Request)
? ?該幀是一個PPP幀,協(xié)議字段設(shè)置為LCP對應(yīng)的代碼,信息字段包含特定的配置請求
? ?LCP的配置選項包括:
? ?鏈路上的最大幀長
? ?所使用的的鑒別協(xié)議(authentication protocol)的規(guī)約(有的話)
? ?不使用PPP幀中的地址和控制字段(因為這兩個字段的值是固定的,沒有任何信息量,可以在PPP幀的首部中省略這兩個? 字節(jié))
3.這些分組及其響應(yīng)選擇了將要使用的一些PPP參數(shù)
? ?發(fā)送了LCP的配置請求幀后,獲得響應(yīng)。
? ?鏈路的另一端可以發(fā)送以下幾種響應(yīng)中的一種:
? ?配置確認幀(Configure-Ack):所有選項都接受
? ?配置否認幀(Configure-Nak):所有選項都理解但不接受
? ?配置拒絕幀(Configure-Reject):選項有的無法識別或不能接受,需要協(xié)商
? ?協(xié)商結(jié)束后就建立了LCP鏈路,接著就進入 鑒別(Authenticate)狀態(tài)。鑒別狀態(tài)只允許傳送LCP協(xié)議的分組、鑒別協(xié)議的分組、以及監(jiān)測鏈路質(zhì)量的分組。
? ?如果使用口令鑒別協(xié)議PAP(Password Authtication Protocol),則需要發(fā)起通信的一方發(fā)送身份標(biāo)識符和口令,可以允許用戶重試若干次。
? ?需要更好的安全性,則可使用更復(fù)雜的口令握手鑒別協(xié)議CHAP(Challenge-Handshake Authtication Protocol),在CHAP協(xié)議下,若鑒別身份失敗,則轉(zhuǎn)到 鏈路終止(Link Terminate)狀態(tài)。成功,則進入 網(wǎng)絡(luò)層協(xié)議(NetWork-Layer Protocol)狀態(tài)
4.接著進行網(wǎng)絡(luò)層配置,網(wǎng)絡(luò)控制協(xié)議NCP 給新接入的用戶分配一個臨時的IP地址
? ?PPP鏈路兩端的網(wǎng)絡(luò)控制協(xié)議NCP根據(jù)網(wǎng)絡(luò)層的不同協(xié)議互相交換網(wǎng)絡(luò)層特定的網(wǎng)絡(luò)控制分組。通過同一個PPP協(xié)議進行通信
? ?如:IP協(xié)議,就使用NCP中支持IP的協(xié)議---IP控制協(xié)議IPCP(IP Control Protocol).
? ? ? ? ? 把IPCP分組封裝成PPP幀(協(xié)議字段為0x8021)在鏈路上傳送。
? ? ? ? ??網(wǎng)絡(luò)層配置完后,鏈路進入到 鏈路打開(Link Open)狀態(tài),此時就可以進行數(shù)據(jù)通信。
此時,用戶就是因特網(wǎng)上的一個有IP地址的主機了
數(shù)據(jù)傳輸結(jié)束后,由鏈路的一端發(fā)出終止請求LCP分組(Terminate-Request)請求終止鏈路連接
在收到對方發(fā)來的終止確認LCP分組(Terminate-Ack)后,轉(zhuǎn)到 鏈路終止?fàn)顟B(tài)
當(dāng)調(diào)制解調(diào)器載波停止后,回到 鏈路靜止?fàn)顟B(tài)
通信完畢,NCP釋放網(wǎng)絡(luò)層連接,收回原來分配出去的IP地址,LCP釋放數(shù)據(jù)鏈路層連接,最后釋放物理層連接。
PPP協(xié)議不是一個純粹的數(shù)據(jù)鏈路層協(xié)議,還包含了物理層和網(wǎng)絡(luò)層的內(nèi)容
?
使用廣播信道的數(shù)據(jù)鏈路層
廣播信道可以進行1對多通信,局域網(wǎng)使用的就是廣播信道。
局域網(wǎng)的數(shù)據(jù)鏈路層
局域網(wǎng)
局域網(wǎng)特點:網(wǎng)絡(luò)為一個單位所擁有,且地理范圍和沾點數(shù)目均有限
優(yōu)點:1.有廣播功能,從一個站點可以很方便的訪問全網(wǎng)。局域網(wǎng)上的主機可以共享連接在局域網(wǎng)上的各種硬件和軟件資源
? ? ? ? ? ?2.便于系統(tǒng)的擴展和逐漸的演變,各設(shè)備的位置可靈活調(diào)整和改變
? ? ? ? ? ?3.提高了系統(tǒng)的可靠性、可用性、和生存性
局域網(wǎng)按照網(wǎng)絡(luò)拓撲進行分類:星形網(wǎng)(通過集線器)、環(huán)形網(wǎng)、總線網(wǎng)。
為了讓眾多用戶能夠合理而方便地共享通信媒體資源,我們使用共享信道技術(shù)
通過兩種方法來解決:
- 靜態(tài)劃分信道
如:頻分復(fù)用、時分復(fù)用、波分復(fù)用、碼分復(fù)用等。用戶只要分配到了信道就不會和其他用戶發(fā)生沖突。代價高,但不適用于局域網(wǎng)
- 動態(tài)媒體接入控制(也叫多點接入)
信道不在用戶通信時固定分配給用戶,又分為兩類:隨機接入、受控接入
隨機接入:所有用戶隨機發(fā)送信息,但是如果恰巧兩個用戶在同一時刻發(fā)送信息,則會發(fā)生碰撞,因此,必須有解決碰撞的網(wǎng)絡(luò)協(xié)議
受控接入:所有用戶必須服從一定的控制。如:分散控制的令牌局域網(wǎng)和集中控制的多點線路探詢(也叫輪詢)
以太網(wǎng)的標(biāo)準(zhǔn)
以太網(wǎng):一種基帶總線局域網(wǎng)--演變成-->兩個標(biāo)準(zhǔn)的局域網(wǎng):DIX Ethernet V2的局域網(wǎng)與 IEEE的802.3標(biāo)準(zhǔn)的局域網(wǎng)
因為商業(yè)原因802委員會制定了幾個不同的局域網(wǎng)標(biāo)準(zhǔn),如802.4令牌總線網(wǎng)、802.5令牌環(huán)網(wǎng)等。
802委員會把數(shù)據(jù)鏈路層拆分成兩個子層:
邏輯鏈路控制LLC(Logical Link Control)子層
媒體接入控制MAC(Medium Access Control)子層
接入到傳輸媒體有關(guān)的內(nèi)容都放在MAC子層,LLC子層則與傳輸媒體無關(guān)
?
通過總線可以實現(xiàn)廣播通信方式:當(dāng)一臺計算機發(fā)送數(shù)據(jù)時,總線上所有計算機都能檢測到這個數(shù)據(jù)。
再通過每個計算機的MAC地址和數(shù)據(jù)幀中的目的地址匹配達到廣播中的一對一通信
以太網(wǎng)特點:
以太網(wǎng)提供的服務(wù)是盡最大努力的交付,是不可靠的交付。只處理傳輸差錯,通過CRC檢測。差錯幀則交給高層協(xié)議處理
以太網(wǎng)是隨機接入,通過CSMA/CD(載波監(jiān)聽多點接入/碰撞檢測 Carrier Sense Multiple Access with Collision Detection)來解決碰撞
以太網(wǎng)發(fā)送的數(shù)據(jù)都是用曼徹斯特編碼的信號
以太網(wǎng)規(guī)定了一個最短幀長為64字節(jié),即512bit。6+6+2+46+4
因此,凡是長度小于64字節(jié)的幀都是由于沖入而異常中止的無效幀
?
適配器的作用
本來是主機箱內(nèi)插入的一塊網(wǎng)絡(luò)接口板(或者是在筆記本電腦中插入一塊PCMCIA卡---個人計算機存儲器卡接口適配器)就是現(xiàn)在的網(wǎng)卡,現(xiàn)在基本都集成在主板上了,適配器上裝有處理器和存儲器(RAM和ROM)
適配器與局域網(wǎng)之間的通信通過電纜或雙絞線等以串行方式進行
適配器與計算機之間的通信則通過I/O總線以并行傳輸方式進行
因此,適配器的一個重要作用就是進行數(shù)據(jù)串行傳輸和并行傳輸?shù)霓D(zhuǎn)換,通過安裝緩存來提高效率
適配器收到正確的幀,就使用中斷來通知該計算機并交付協(xié)議棧中的網(wǎng)絡(luò)層
計算機要發(fā)送IP數(shù)據(jù)報時,就由協(xié)議棧把IP數(shù)據(jù)報向下交給適配器,組裝成幀后發(fā)送到局域網(wǎng)
注意:計算機的硬件地址就在適配器的ROM中。
? ? ? ? ? ?計算機的軟件地址——IP地址則在計算機的存儲器中
CSMA/CD協(xié)議
CSMA/CD(載波監(jiān)聽多點接入/碰撞檢測 Carrier Sense Multiple Access with Collision Detection)
多點接入:表明是總線型網(wǎng)絡(luò)
載波監(jiān)聽:就是檢測信道。不管在發(fā)送前,還是發(fā)送中,每個站都必須不停地檢測信道
發(fā)送前檢測信道,是為了獲取發(fā)送權(quán),如果檢測出已經(jīng)有其他站在發(fā)送,則自己就暫時不許發(fā)送數(shù)據(jù),必須要等到信道變?yōu)榭臻e時才能發(fā)送。
發(fā)送中檢測信道,是為了及時發(fā)現(xiàn)有沒有其他站的發(fā)送和本站發(fā)送的碰撞,這就是碰撞檢測。
碰撞檢測:也就是邊發(fā)送邊監(jiān)聽。即適配器邊發(fā)送邊檢測信道上的信號電壓的變化情況,以便判斷自己在發(fā)送數(shù)據(jù)時其他站是否也在發(fā)送數(shù)據(jù)。
由此可見,在使用CSMA/CD協(xié)議時,一個站不可能同時進行發(fā)送和接收(但必須邊發(fā)送邊監(jiān)聽信道)。
因此使用CSMA/CD協(xié)議的以太網(wǎng)不可能進行全雙工通信,只能進行雙向交替通信(半雙工通信)
以太網(wǎng)的MAC層
硬件地址、又叫物理地址或MAC地址(因為這種地址用在MAC幀中)
名字指出我們所要尋找的那個資源,地址指出那個資源在何處,路由告訴我們?nèi)绾蔚竭_該處
MAC地址:6字節(jié)(48位)的全球地址,局域網(wǎng)上的每一臺計算機中固化在適配器的ROM中的地址
前三個字節(jié)由IEEE的注冊管理機構(gòu)RA(Registration Authority)分配,廠家必須購買
后三個字節(jié)則由廠家自行分配。
最后得到的48位的地址稱為EUI-48(擴展的唯一標(biāo)識符 Extended Unique Identifier)
第一字節(jié)最低位為I/G位(Individual/Group):為0表示一個單個站地址,為1表示組地址
第一字節(jié)的最低第二位為G/L位(Global/Local):為0表示全球管理,是向IEEE的RA購買的。為1表示本地管理,用戶可以任意分配網(wǎng)絡(luò)上的地址,以太網(wǎng)幾乎不理會這個G/L位
字節(jié)順序有兩種:
第一種:就是把每個字節(jié)的最低位寫在最左邊(最左邊的最低位是第一位),IEEE802.3標(biāo)準(zhǔn)就是采用這種記法
第二種:是把每一個字節(jié)的最高位寫在最左邊(最左邊的最高位時第一位)
兩種記法都是按照順序傳輸?shù)?/strong>
適配器從網(wǎng)絡(luò)上每收到一個MAC幀就先用硬件檢查MAC幀中的目的地址。
如果是發(fā)往本站的幀就收下,進行其他處理;否則就丟棄,不做其他處理。
發(fā)往本站的幀有三種:
1.單播(unicast)幀(一對一):收到的幀的MAC地址與本站的硬件地址相同
2.廣播(broadcast)幀(一對全體):發(fā)送給本局域網(wǎng)上的所有站點的幀(全1地址)
3.多播(multicast)幀(一對多):發(fā)送給本局域網(wǎng)上一部分站點的幀
所有適配器必須能夠識別單播和廣播地址。有的適配器可用編程方法識別多播地址
只有目的地址才能使用廣播地址和多播地址
以太網(wǎng)適配器還能設(shè)置一種特殊工作方式,混雜方式
即:只要聽到有幀在以太網(wǎng)上傳輸就都悄悄的接收下來,不管這些幀發(fā)往哪個站。
這樣做就是竊聽其他站點的通信而不終端其他站點的通信
嗅探器就是用了設(shè)置為混雜方式的網(wǎng)絡(luò)適配器
?
MAC的幀格式
以太網(wǎng)的MAC幀格式有兩種標(biāo)準(zhǔn):
DIX Ethernet V2標(biāo)準(zhǔn)(即以太網(wǎng)V2標(biāo)準(zhǔn))
IEEE的802.3標(biāo)準(zhǔn)
其中,使用最多的是以太網(wǎng)V2標(biāo)準(zhǔn)的MAC幀格式。而且現(xiàn)在市場上流行的基本都是以太網(wǎng)V2的MAC幀格式。
以太網(wǎng)MAC幀格式組成
由五個字段組成:
目的地址字段(6字節(jié))+源地址字段(6字節(jié))+類型字段(2字節(jié))+數(shù)據(jù)字段(MTU46-1500字節(jié)之間)+FCS(4字節(jié))
如果MAC幀格式中數(shù)據(jù)字段小于46字節(jié),則MAC子層會在數(shù)據(jù)字段的后面加入一個整數(shù)字節(jié)的填充字段,來保證MAC幀長不小于64字節(jié)
上一層協(xié)議如何知道填充字段的長度呢?
在IP協(xié)議中,其首部就有一個總長度字段。因此總長度加上填充字段應(yīng)等于MAC幀數(shù)據(jù)字段的長度。
在實際傳送中還會在MAC幀前面插入8個字節(jié),分為兩個字段
第一個字段:前同步碼(1和0的交替碼)
作用:來讓接收端的適配器在接收MAC幀時能夠迅速地調(diào)整其時鐘頻率,使它和發(fā)送端的時鐘同步
第二個字段是幀開始定界符,定義為10101011
它的前6位和前同步碼一樣,最后兩個連續(xù)的1就是告訴接收端的適配器MAC幀的信息要來了,請注意接收
注意:以太網(wǎng)上的傳輸單位是? 幀
? ? ? ? ? ?各幀之間還必須有一定的間隙。
? ? ? ? ? ?因此,接收端只需要找到幀開始定界符就可以了。不需要使用幀結(jié)束符定界符,也不需要插入字節(jié)來保證透明傳輸
無效MAC幀的情況:
1.幀的長度不是整數(shù)個字節(jié)
2.用收到的幀檢驗序列FCS查出偶差錯
3.收到的幀的MAC客戶數(shù)據(jù)字段打長度不在46-1500字節(jié)之間。MAC幀長度不在64-1518字節(jié)之間
無效的MAC幀則進行丟棄,不進行重傳
在數(shù)據(jù)鏈路層擴展以太網(wǎng)
需要使用網(wǎng)橋
網(wǎng)橋
網(wǎng)橋工作在數(shù)據(jù)鏈路層,它根據(jù)MAC幀的目的地址對收到的幀進行轉(zhuǎn)發(fā)和過濾
當(dāng)網(wǎng)橋接收到一個幀時,先檢查此幀的目的地址(目的MAC地址),然后再確定將該幀轉(zhuǎn)發(fā)到哪一個接口,或者是把它丟棄(過濾)
網(wǎng)橋的內(nèi)部結(jié)構(gòu)
最簡單的網(wǎng)橋有兩個接口。復(fù)雜的網(wǎng)橋可以有更多的接口。
兩個以太網(wǎng)通過網(wǎng)橋連接起來后,就成為一個覆蓋更大的以太網(wǎng),原來的每個以太網(wǎng)就可以稱為一個網(wǎng)段(segment)
上圖中接口1和接口2各連接到一個網(wǎng)段
網(wǎng)橋依靠轉(zhuǎn)發(fā)表來轉(zhuǎn)發(fā)幀,轉(zhuǎn)發(fā)表也叫轉(zhuǎn)發(fā)數(shù)據(jù)庫或路由目錄。
如:網(wǎng)橋從接口1收到A發(fā)給E的幀,則在查找轉(zhuǎn)發(fā)表后,把這個幀送到接口2轉(zhuǎn)發(fā)到另一個網(wǎng)段,使E能夠收到這個幀
若網(wǎng)橋從接口1收到A發(fā)給B的幀,就丟棄這個幀,因為轉(zhuǎn)發(fā)表中,轉(zhuǎn)發(fā)給B的幀應(yīng)當(dāng)從接口1轉(zhuǎn)發(fā)出去,而現(xiàn)在是從接口1中接收到的幀,說明A和B在同一個網(wǎng)段中,B能夠直接收到這個幀而不需要借助于網(wǎng)橋轉(zhuǎn)發(fā)
注意:網(wǎng)橋在轉(zhuǎn)發(fā)幀時,不改變幀的源地址
網(wǎng)橋內(nèi)部的接口管理軟件和網(wǎng)橋協(xié)議實體來完成上述操作
網(wǎng)橋的好處:
1.過濾通信量,增大吞吐量
2.擴大物理范圍
3.提高了可靠性
出現(xiàn)網(wǎng)絡(luò)故障,一般只影響個別網(wǎng)段
4.可互聯(lián)不同物理層,不同MAC子層和不同速率的以太網(wǎng)
網(wǎng)橋的缺點:
1.增加時延
因為需要對接收的幀進行存儲和查找轉(zhuǎn)發(fā)表,轉(zhuǎn)發(fā)之前還需要進行CSMA/CD算法
2.導(dǎo)致廣播風(fēng)暴
網(wǎng)橋只適用于用戶數(shù)不太多(不超過幾百個)和通信量不太大的以太網(wǎng),否則會因為傳播過多的廣播信息產(chǎn)生網(wǎng)絡(luò)阻塞
透明網(wǎng)橋
目前使用的最多的網(wǎng)橋,即,以太網(wǎng)上的站點并不知道所發(fā)送的幀將經(jīng)過哪幾個網(wǎng)橋
網(wǎng)橋是按照存儲轉(zhuǎn)發(fā)方式工作的,一定是先把整個幀收下來再進行處理,不管氣目的地址是什么。
集線器或轉(zhuǎn)發(fā)器是逐比特轉(zhuǎn)發(fā)
透明網(wǎng)橋是一種即插即用(plug-and-play device),只要把網(wǎng)橋加入到局域網(wǎng)中,不用人工配置轉(zhuǎn)發(fā)表網(wǎng)橋就能工作
網(wǎng)橋通過自學(xué)習(xí)算法處理收到的幀(這樣逐步建立轉(zhuǎn)發(fā)表),使用生成樹(spanning tree)算法確保任何兩個站之間只有一條路徑
自學(xué)習(xí)算法原理:
網(wǎng)橋只要每收到一個幀,就記下其源地址和進入網(wǎng)橋的接口,作為轉(zhuǎn)發(fā)表中的一個項目
注意:轉(zhuǎn)發(fā)表中并沒有“源地址”一欄,只有“地址”一欄。
在建立轉(zhuǎn)發(fā)表時,是把幀首部中的源地址寫在“地址”一欄下面
在轉(zhuǎn)發(fā)幀時,根據(jù)收到的幀的首部中的目的地址來轉(zhuǎn)發(fā)的。
網(wǎng)橋自學(xué)習(xí)和轉(zhuǎn)發(fā)幀的一般步驟:
1.網(wǎng)橋收到幀后先進行自學(xué)習(xí)。查找轉(zhuǎn)發(fā)表中與收到幀的源地址有無想匹配的項目。如沒有,就在轉(zhuǎn)發(fā)表中增加一個項目(源地址、進入的接口和時間)如有,則把原有的項目進行更新
2.轉(zhuǎn)發(fā)幀。查找轉(zhuǎn)發(fā)表中與收到幀的目的地址有無相匹配的項目。如沒有,則通過所有其他接口(除了進入網(wǎng)橋的接口)進行轉(zhuǎn)發(fā)。如有,則按轉(zhuǎn)發(fā)表中給出的接口進行轉(zhuǎn)發(fā),若轉(zhuǎn)發(fā)表中給出的接口就是該幀進入網(wǎng)橋的接口,則丟棄這個幀
?
總結(jié)
以上是生活随笔為你收集整理的网络-数据链路层回顾的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js打开新窗口并且不被拦截
- 下一篇: 企业微信公众平台(4)KTV 3G网站建