數據鏈路層討論的是如何把網絡層的數據封裝成幀,有效的進行通訊傳輸。算法
鏈路是指:一個結點到另外一個結點的具體的物理線路。緩存
數據鏈路是指:在鏈路上加之實現通訊協議的軟件和硬件。網絡
實現數據鏈路層的硬件和軟件主要是網卡(但適配器工做在物理層和數據鏈路層)。異步
此層的協議數據單元PDU叫作幀。這是將數據報加之首部和尾部造成的。學習
封裝成幀測試
指將數據報加之首部和尾部造成幀。首部和尾部是必要的,主要做用是幀定界、添加控制信息,以及差錯控制。編碼
透明傳輸spa
若是是文本文件,能夠用SOH/EOT充做幀開始、結束控制符,但數據中可能也出現SOH/EOT,這時須要加轉義字符ESC,如ESC-SOH,ESC-EOT,ESC-ESC,以達到透明傳輸。同步
這裏的透明指的是,數據鏈路層對傳輸的數據透明,傳輸的數據實際上感覺不到數據鏈路層所作的操做。it
差錯檢測
奇偶檢測、循環冗餘CRC等。
採用CRC,採用n+1位除數(由生成多項式獲得),獲得n位餘數,稱做幀檢驗序列FCS。
檢測時,將傳輸獲得的數據除以同一個除數,若餘數0,則能夠說無差錯。
如有差錯,直接丟棄,除此以外,不作任何操做。
故差錯檢測只是檢測了bit錯誤,並不能解決幀失序、丟失、重複等問題。
也就是說,數據鏈路層實現的是盡最大努力的交付,即不可靠的傳輸。
點對點信道主要用於用戶同ISP(驗證身份)通訊時。早期使用高級數據鏈路控制HDLC,已經淘汰,如今用的是PPP協議,即point-to-point protocol,點對點通訊協議。
由三個部分組成:
一個將數據報封裝成幀的方法
一個用來創建、配置和測試數據鏈路鏈接的鏈路控制協議LCP。
通訊雙方用以協商。
一套網絡控制協議。
每個協議支持不一樣的網絡層協議,也就是說PPP支持不一樣的網絡層協議。
格式劃分 | F | A | C | 網絡層協議 | 數據報 | FCS | F |
---|---|---|---|---|---|---|---|
具體內容 | 7E | FF | 03 | 如C021(IP) | 數據部分 | - | 7E |
字節數 | 1 | 1 | 1 | 2 | <=1500 | 2 | 1 |
其中,F,A,C都是固定的,A是地址,C字段實際上無用。
PPP協議爲實現透明傳輸,採用的策略是:
異步:字節填充(字符填充)。
在數據部分,(7E->7D,5E)、(7D->7D,5D)、(小於0x20的,前面添加7D)
同步:零比特填充
即每遇到5個1,添加一個0。
<課本p81> ,重點。
局域網(LAN)指的是一個網絡爲一個單位所擁有,地理位置和站點數據有限,統稱。局域網的工做跨越了物理層和數據鏈路層。
以太網是局域網的一種實現方式,但現在以太網佔據了絕大多數市場,故某種意義上,以太網就是局域網。
之外網的標準有DIX Ethernet V2和IEEE 802.3。兩者差異不大,如今普遍使用的是DIX Ethernet V2。
IEEE 802.3把以太網的數據鏈路層劃分爲:邏輯鏈路控制(LCP)和媒體接入控制(MAC),但LCP實際上並沒有用,如今只使用MAC層。
之外網的其餘特色:
廣播信道主要由總線式網絡,環形網,星形網等。
廣播信道的數據鏈路層討論的是如何在一個網絡中實現一對1、一對多通訊。這裏要解決的問題是,總線網絡上不能有兩個站點同時發送數據,不然就稱碰撞(衝突)。
必須有解決這個問題的協議,這就是CSMA/CD協議。
但首先應瞭解其餘幾個概念。
即網卡,實現了數據鏈路層協議,工做於物理層和數據鏈路層。
適配器的另外一個做用是實現並行通訊和串行通訊的轉換。外網--適配器爲串行,而適配器--主機爲並行。
適配器還配有ROM,實現緩存,這樣能夠實現不一樣速率的兼容。
另外,須要注意,適配器中的ROM中是硬件地址,即MAC地址,而在計算機的存儲器中存有IP地址,即軟件地址。
CSMA/CD協議全稱:載波多點監聽/碰撞檢測。他解決的問題是如何在總線局域網上進行「有效」通訊。
CSMA/CD的要點以下:
多點接入
CSMA/CD協議適用於廣播信道,容許總線上多個站點接入。協議的核心是載波監聽和碰撞檢測。
載波監聽
因爲總線型廣播信道上同一時刻只容許一個站點發送數據,故站點須要時時檢測信道上是否有其餘站點發送數據,這就是載波監聽。檢測信道經過才能得到發送權。
載波監聽發生在:一個站點發送數據以前,以及發送數據的過程當中。一旦發現有其餘站點發送數據,則當即中止發送。
順便指出,信道上發送的是基帶信號,並無載波,「載波」一詞爲借用。
碰撞檢測(衝突檢測)
碰撞檢測就是「邊發送邊監聽」。適配器邊發送數據邊檢測信道上信號變化狀況,看是否發生了 碰撞。如有兩個計算機同時發送數據,則信道上的信號電壓變化幅度會超過必定的門限值,則計算機(適配器)可以發現這種變化,後續做出進一步響應。
Question:既然每一個站點發送數據前,信道已經清空,爲何發送過程當中還要碰撞檢測(可能發生碰撞)?
Answer: 信號傳播須要時間。1Km的電纜傳播時延爲5us,記單程端到端時延爲\(t\),若A站點向B站點發送數據後,通過極短期\(e\)(\(e\)小於\(t\) us),數據還沒有到達B,\(e\)時刻B依然檢測到信道爲空,此時B也發送數據,那麼在時間\(t-e/2\) 時刻,發生碰撞,則A端在\(2t-e\)時刻檢測到碰撞發生。
另外,定義單程端到端時延的兩倍爲爭用期,由於從上面分析能夠看到,A最遲在\(2t\)時刻檢測到碰撞發生(當\(e\)趨向於0),在A發送數據\(2t\)時間內若不發生碰撞,則以後不會發生碰撞。下面對以太網應用CSMA/CD協議的具體規定。
以太網應用CSMA/CD協議,實現了半雙工通訊,其具體的規定和要點以下:
以太網發送數據採用曼徹斯特編碼。
發送前(中)載波監聽。
爭用期2t定義爲51.2us,對於10Mbit/s的以太網,能夠算出爭用期內發送了512bit數據,故也稱做512比特時間。在這個時間內,傳播的距離約爲5km,但實際上達不到這麼多。
因爲爭用期內必須發送完512bit才能檢測是否發生了碰撞,故以太網規定最短幀長爲512bit,即64字節,若數據不夠,則須要填充。
若檢測到發生碰撞,等到一段時間後再發送。具體的等待時間採用截斷二進制指數退避算法,即:
在區間\([0,1,3,...(2^k-1)]\)內隨機選出一個數\(r\),等待\(r×2t\)時間。即隨機個爭用期的時間。
具體\(k\)爲:\(重傳次數,k = Min(重傳次數,10)\)。
另外,規定重傳次數達到16次,則表示想發送數據的站點太多,丟棄該幀,向高層報告。
強化碰撞策略。一旦檢測到發生碰撞,則當即發送32或48bit的人爲干擾信號,讓全部站點都知道發生了碰撞。
幀最小間隔爲9.6us。由於以太網的幀並無個幀結束定界,故最小間隔是應有的,這樣也能夠保證接收站點來得及緩存清理和處理。
時間計算。若發送時延爲\(t0\),傳播時延爲\(t\),A發送完畢到檢測到發生碰撞的時延爲\(tB\),強化信號時延爲\(tJ\),則由於碰撞浪費的時延爲\(tB+tJ\),總線被佔用的時延爲\(tB+tJ+t\),由於最後1bit還要通過一個單程端到端時延。
說明以太網信道利用率。
發送一幀的時間是(若干個爭用期時間\(2t\))+發送時延\(T_0\) + 單程端到端時延\(t\)。可見,提升信道利用率,就要減少\(t\)和\(T0\)之比。定義:$a = \frac {t} {T_0} \(,但願\)a$越小越好。
信道極限利用率爲:假設發生碰撞,極限利用率爲:
\(S_{max}=\frac{T_0}{T_0+t}=\frac{1}{1+a}\) ,可見,\(a\)越小越好。
上面提到過,對於廣播信道,802.3將數據鏈路層劃分爲LLC和MAC,但實際上LLC無用,只討論MAC。MAC就是媒體接入控制的意思。於是,實際上廣播信道的數據鏈路層就是指MAC層。
MAC地址是一個硬件地址,於網卡的ROM中。他是一個48bit即6個字節的序列,如今使用的是EUI-48。一個地址是一個站的名字或者標識符,它由註冊管理機構RA同一頒發。前三個字節爲公司標識符,即組織惟一標識符OUI,這是生產公司申請到的。後三個字節爲擴展標識符,爲公司本身制定。
IEEE規定,MAC地址的第一字節的最低位爲I/G位,標誌是I(individual)或者G(group),爲I時爲0,表示單個站地址,G時爲1,表示組地址,用來多播。
MAC地址的第一字節的倒數第二位爲G/L位,表示全球管理(0)/本地管理(1),若不申請全球OUI,也可使用本地管理,即將G/L位置1。
這樣,實際上全球MAC共有\(2^{44}\)個。
局域網內就根據MAC地址進行發送、接受數據,當某站點接收到幀,檢查MAC目的地址是否與本機MAC相匹配,不匹配則不接受。
發送的幀包括:單播幀、廣播幀(全1)和多播幀。
MAC幀(+最前面插入8字節)格式以下:
前同步碼 | 幀開始定界符 | 目的地址 | 源地址 | 類型 | 數據 | FCS |
---|---|---|---|---|---|---|
1010..10 | 1010101011 | 目的MAC | 本站MAC | 網絡層類型 | 數據報 | CRC檢驗 |
7字節 | 1字節 | 6字節 | 6字節 | 2字節 | 46-1500字節 | 4字節 |
擴展以太網主要從下面兩方面。
工做在物理層的轉發器、集線器,將多個局域網鏈接起來,擴大碰撞域,但並不增長吞吐量。
使用工做在數據鏈路層的以太網交換機,擴大以太網。交換機能夠實現全雙工,並行,存儲數據幀緩存,以及自學習交換表(地址表)進行轉發。這種方式增長了吞吐量。
應注意自學習交換表的方法,P100,另外,爲了防止數據在物理環路上繞圈子,採用「生成樹協議STP」,將某些鏈路在邏輯上切斷,其過程相似於最小生成樹。
不一樣局域網內的幾個計算機能夠虛擬的鏈接起來構成虛擬局域網VLAN,以實現某些特定目的。
VLAN就是由一些局域網網段構成的與物理位置無關的邏輯組。
VLAN的幀增長了4個字節的VLAN標識符,標記此站點屬於哪一個VLAN。
這樣能夠防止廣播風暴。
總結工做在物理層的:轉發器、集線器hub。
工做於數據鏈路層:交換機。
工做於物理+數據鏈路層:適配器。
傳統以太網指的是10BASE T,意義10:10Mbit/s,BASE:基帶信號,T:雙絞線。
以前還有:
10BASE 5:10:10Mbit/s,BASE:基帶信號,5:500m粗纜。
10BASE 2:10:10Mbit/s,BASE:基帶信號,2:200m細纜。
如今帶寬逐漸提升,已經有:
100BASE T:100:100Mbit/s,BASE:基帶信號,T:雙絞線。
吉比特以太網、10吉比特以太網等。
將帶寬提升10倍,幀格式不變。參數\(a=\frac{t}{T_0}\),\(T_0\)變爲\(1/10\),則\(a\)增長10倍,信道利用率下降。100 BASE T採用的策略是保證最短幀長不變,爭用期減小到\(1/10\),即爭用期爲5.12us,幀最小間隔是0.96us,(這實際上是將物理線路最長長度減小到\(1/10\),實際中100BASE-TX是100m)
發送速率1G bit/s。幀格式不變,吉比特以太網能夠工做在半雙工和全雙工下,保持\(a\)不變,採起:
半雙工下
仍然保持物理線路最長爲100m(與100BASE-T同),最短幀長依然爲512bit(64字節),但爭用期再也不是512bit時間,而是512字節時間(擴大8倍),這樣,發送不足512字節的幀,須要進行填充處理,使得達到512字節,這叫載波延伸。另外,還有分組突發功能,第一個短幀採用載波延伸,後面跟着的短幀則一個接一個發送,造成長度達到1500字節的數據。(這是爲了保證不要每一個短幀都填充,只要過了爭用期就行了。)
全雙工下
不須要載波延伸和分組突發,由於不會發生衝突。
幀格式不變,只工做於全雙工,不使用CSMA/CD協議,沒有爭用期之說。
NOTE:半雙工下采用CSMA/CD,全雙工不用CSMA/CD。