鏈路層和局域網
文章目錄
鏈路層協議的任何設備均稱爲節點。節點包括主機,路由器,交換機和接入點。節點之間的通信信道稱爲鏈路。在通過鏈路時,傳輸節點將數據報封裝到鏈路層幀中,並將該幀傳送到鏈路中。
鏈路層協議可能提供的服務包括:
- 成幀:將網絡層的數據報放到幀裏面,幀由一個數據字段和若干的首部字段組成。
- 鏈路接入:**媒體訪問控制(MAC)**協議規定了幀在鏈路上的傳輸規則。
- 可靠交付:通常用於易於產生高差錯率的鏈路,如無線鏈路。在差錯率比較低的鏈路,鏈路層的可靠交付被認爲是不必要的開銷。所以在許多有線鏈路不提供可靠交付。
- 差錯檢驗和糾正。
1. 差錯檢驗和糾正
1.1 奇偶校驗
奇偶校驗就是在全部數據的後面在增加一位,作爲檢驗位。如何是偶校驗,那麼所有位的1
的個位爲偶數,如何數據位1
的個數爲奇數,那麼通過把最後數據位的數據設置0
來使得所有位1
的個數爲偶數。奇校驗類似。同時還有二維的奇偶校驗,假設數據的大小爲n*n
,那麼二維奇偶校驗就是把數據寫成一個n*n
的矩陣,然後在矩陣外增一位作爲檢驗位,使之變成(n+1)*(n+1)
的矩陣。二維奇偶校驗不僅可以檢測到差錯同時還可以糾正一位的差錯。
1.2 檢驗和
將n
比特的數據分成k
比特一組的序列,也就是n%k=0
。一個簡單的方法就是把這寫k
個比特加起來,用這個和作爲差錯檢測比特。注意這樣這能檢測不能糾正。
1.3 循環冗餘檢測
循環冗餘檢測(CRC)編碼也叫做多項式編碼。現在假設發送方要發送d
比特的數據。發送方和接收方要協商一個r+1
的比特模式,稱爲生成多項式,記爲G
。規定G
的最左邊的一位必須爲1
。如下圖所示:
對於大小爲d
比特的數據,通過計算我們要在後面加上r
比特的數據,得到d+r
比特的數據。
如何發送端計算這r
比特?
答:利用公式。
在接受方如何檢驗?
答:如果用得到的d+r
比特的數據除以G
沒有餘數,則說明沒有差錯,否則就有。
2. 多路訪問鏈路和協議
在鏈路層轉發的過程中,有的是點對點的通信協議,如點對點協議(PPP)和高級鏈路控制協議(HDLC),第二中就是廣播鏈路,在廣播鏈路中存在多路訪問問題,比如在一個會議中,在一個時刻,就只能有一個人說話,如果同時由多個人說話,就會導致我們聽不清講的是什麼(假設),要解決這個問題就要有一個規定使得,在一個時間段這能有一個人說話。如果多個人說我,我們將這種情況稱爲碰撞。解決這個問題,有三種常見的方法:信道劃分協議,隨機接入協議和輪流協議。
2.1 信道劃分協議
其中典型的信道劃分協議有時分多路複用(TDM)和頻分多路複用(FDM)。如下圖
TDM通過將時間分段來實現多路複用,避免碰撞,FDM類此通過將頻率分段實現多路複用。假設鏈路的速率爲,我們通過TDM和FDM將鏈路分成了段,那麼對應於每一段的速率爲。TDM和FDM的好處是保證了每個信道的速率相同都是,然而他的主要的缺點是,即使鏈路中只有一個節點是活躍的,他的速率也是,沒法達到。
第三種信道劃分協議是碼分多址(CDMA)。CDMA對每一個節點分配一種不同的編碼,不同的結點能過同時傳輸,並且他們各自相應的接收方仍能正確接收發送方編碼的數據比特,而不在乎其他節點的干擾。
2.2 隨機接入協議
主要介紹兩種協議ALOHA和具有碰撞檢測的載波偵聽多路訪問(CSMA/CD)。
2.2.1. ALOHA協議
假設在一個節點發送完報文之前,就能檢測到來自其他節點的碰撞。
設是一個概率,ALOHA的工作流程如下:
- 當節點有要發送的節點時,立即將報文發送到鏈路中;
- 如何沒有發生碰撞,那該節點成功的傳輸了該幀,等待下一個要傳輸的幀;
- 如果發生了碰撞,那麼該節點在傳輸玩碰撞的幀之後,立即以的概率重新傳輸該幀。
根據計算可以得到ALOHA最大的效率是。
2.2.2 具有碰撞檢測的載波偵聽多路訪問(CSMA/CD)
介紹協議之前我們先來看看載波偵聽和碰撞檢測這兩種技術。
- 載波偵聽:一個節點在發送幀前先偵聽此信道。如果來自另一個節點的幀正在信道上發送,節點則等待直到檢測到一小段時間信道上沒有傳輸幀,然後在開始傳輸。
- 碰撞檢測:一個節點在傳輸幀是一直在偵聽信道。如果他檢測到有別的節點在傳輸,他立即停止傳輸,並且在重複“偵聽–空閒是傳輸”前,等待一段隨機時間。
CSMA/CD的運行過程如下:
- 適配器從網絡層一條數據報,準備鏈路層幀,並將其放入幀適配器中。
- 如果適配器偵聽到信道空閒,他開始傳輸幀。另一方面,如果適配器偵聽到信道正在忙,他將等待,直到偵聽到沒有信號能量是纔開始傳輸幀。
- 在傳輸過程中,適配器監視來自其他使用該廣播信道的適配器的信號。
- 如果適配器傳輸整個幀而未檢測到來自其他適配器的信號,該適配器完成傳輸該幀。另一方面,如果適配器在傳輸過程中檢測到來自其他適配器的信號能量,他中止傳輸該幀(ALOHA不會中止)。
- 中止傳輸後,適配器等待一個隨機時間量,然後返回步驟二。
這個隨機時間量的選擇,我們希望他能夠有下面的特點,在碰撞節點比較少的時候,時間間隔比較短;碰撞節點比較多的時候,時間間隔比較長。
解決上面的這個問題我們用的是二進制指數後退算法。就是當一個幀發生次碰撞後,他從裏面選擇一個值。當一個幀經歷多次碰撞之後,選擇的間隔的均值也會變大。對於以太網來說,一個節點等待的時間量是比特時間(發送比特進入以太網所需時間量的倍),能夠取的最大值在以內。
例子,一個幀經歷了一次碰撞後,以相同的概率從中選擇,發生兩次碰撞時,以相同的概率從中選取,然後依次類推,第次的時候,就是。
3. MAC地址
主機和路由器也具有鏈路層地址,不過不是他們本身自帶,而是他們的適配器(網絡接口)具有鏈路層地址。需要注意的是鏈路層的交換機並沒有網絡接口,所以他們並沒有鏈路層地址,這就是說,鏈路層交換機對主機和路由器來說是透明的,主機和路由器不必明確的將幀尋址到其間的交換機。
鏈路層地址有多種叫法:LAN地址,物理地址或MAC地址。MAC地址的長度爲字節,共有個可能的地址。MAC地址不想一般不會發生變化,即從出廠到報銷MAC地址不變。MAC地址通常用xx-xx-xx-xx-xx-xx
的形式來表示,例如24-ff-3a-ff-f3-3f
。在MAC地址中,也存在廣播地址ff-ff-ff-ff-ff-ff
,當鏈路層交換機收到這個地址時,會將他轉發到局域網中的所有主機或路由器中。
4. 地址解析協議(ARP)
既然存在網絡層地址(IP)和鏈路層地址(MAC),所以需要在他們之間相互轉換,就需要地址解析協議(ARP)。這是因爲在鏈路層,幀是根據MAC地址來傳輸的,所以要將地址轉化爲MAC地址。
在每臺主機和路由器中,都有一個ARP表,這張表包含地址到MAC地址的轉換,還包括這個轉換持續的時間。
4.1 在子網內發送數據報
將設現在A要向C發送一個報文,但是在A的ARP表中並沒有C的表項,現在就需要ARP協議來轉換地址。ARP查詢報文和響應報文具有相同的格式,都包含發送和接受方的地址和MAC地址。ARP查詢步驟如下:
- 查詢方,發送一個ARP查詢報文,其中的目的MAC地址爲廣播地址
ff-ff-ff-ff-ff-ff
,當交換機收到該報文時,將該查詢報文,轉發到子網內的所有路由器和主機中。 - 當報文到達主機或路由器時,主機或路由器查看報文的目的地址,如果目的地址和自己的地址相符,那麼他將發送一個響應報文,響應報文的源MAC地址就是要查詢的MAC地址,目的的和MAC地址是查詢報文的源和MAC地址;如果不一致,則沒有反應。
同時ARP協議是即插即用的,就是說一個ARP表是自動配置出來的。
4.2 發送數據報到子網外
如圖,當我們想把數據報發送到子網之外時,我們應該怎麼辦呢?
因爲ARP協議只在子網的內部生效,所以但我們去查詢一個子網之外的地址是,我們不會得到任何的響應。
想一下,數據報要到達子網的外部,首先就要經過路由器,然後通過路由器到達目的地。於是我們可以分兩步走:
- 第一步:得到第一跳路由器的MAC地址,我們可以通過ARP查詢報文得到第一跳路由器(網關路由器)的MAC地址,將報文轉發的路由器。
- 第二步:得到目的地址的MAC地址,現在報文已經在路由器裏面了,我們現在有將報文轉發到目的地址,這時又需要通過ARP查詢報文得到目的的MAC地址,然後轉發報文到目的MAC地址處。
5. 以太網幀格式
如圖是以太網的幀格式:
- 數據字段(46-1500字節):如果數據報大於1500字節,將會分片;如果數據報小於46字節,將會被填充到46字節。使用填充時,數據報包含數據報和填充字段,網絡層接受到報文後,用首部字段中的長度字段來剔除填充字段。
- 目的地址和源地址(共12字節):包含目的和源MAC地址。
- 類型字段(2字節):用來標記數據字段報文傳輸給的上層協議。
- CRC(4字節):循環冗餘檢測編碼。
- 前同步碼(8字節):以太網的幀以8個字節的前同步碼開始。前同步碼的前七個字節都是
10101010
,第八個字節是10101011
。前前同步碼的前七個字節用於喚醒接受適配器,並且將他們的時鐘和發送方的時鐘同步(因爲適配器不會以精確的速率傳輸幀,總是會有些漂移),一般來說速率有一下幾種10Mbps,100Mbps和1Gbps,但是不會很精確,會有偏差。
6. 鏈路層交換機
交換機對於子網中的主機和路由器來說是透明的,這就是說,某主機或路由器向另一個主機或路由器尋址一個幀(而不是向交換機尋址該幀),順利的將該幀發送進局域網,並不知道某交換機將會接受該幀並將它轉發到另一個節點。下面主要看交換機的幾個特點。
6.1 交換機的轉發和過濾
轉發是決定將報文導向那個接口;過濾是決定一個幀是該轉發到一個接口還是丟棄。轉發和過濾是通過交換機表實現的。一個交換機的表項包含:一個MAC地址,通向該MAC地址的交換機接口,表項放置在表中的時間。舉個例子:現在假定目的MAC地址爲fa-33-43-5f-2f-53
的幀從交換機的接口到達,交換機表中的fa-33-43-5f-2f-53
有一下幾種可能:
- 表中沒有
fa-33-43-5f-2f-53
地址的表項。交換機廣播該幀。 - 表中的一個
fa-33-43-5f-2f-53
地址的表項與接口聯繫起來。過濾即可。 - 表中的一個表項將
fa-33-43-5f-2f-53
地址與接口聯繫起來。那麼將該幀轉發到接口即可。
6.2 交換機的自學習功能
交換機的表項是自動、動態和自治的建立的,即沒有來自外部的干預,表項可以自己建立起來。所以交換機也是即插即用的。交換機的自學習通過一下的步驟實現:
- 交換機的初始爲空。
- 對於在每個接口接受到的每個入幀,該交換機在其表中儲存:①在該幀源地址字段中的MAC地址;②該幀到達的接口;③當前時間。通過這種方式可以記錄發送結點所在的局域網字段。
- 如果一段時間會,交換機沒有接受到該地址作爲源地址的幀,那麼就在表中刪除這個地址。
6.3 交換機的性質
主要有三個:消除碰撞,異質的鏈路和管理。