鏈路層和局域網

鏈路層和局域網


鏈路層協議的任何設備均稱爲節點。節點包括主機,路由器,交換機和WiFiWiFi接入點。節點之間的通信信道稱爲鏈路。在通過鏈路時,傳輸節點將數據報封裝到鏈路層幀中,並將該幀傳送到鏈路中。

鏈路層協議可能提供的服務包括:

  • 成幀:將網絡層的數據報放到幀裏面,幀由一個數據字段和若干的首部字段組成。
  • 鏈路接入:**媒體訪問控制(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比特?

答:利用公式R=(D2r) % GR = (D*2^r) \space \% \space G

在接受方如何檢驗?

答:如果用得到的d+r比特的數據除以G沒有餘數,則說明沒有差錯,否則就有。

2. 多路訪問鏈路和協議

在鏈路層轉發的過程中,有的是點對點的通信協議,如點對點協議(PPP)和高級鏈路控制協議(HDLC),第二中就是廣播鏈路,在廣播鏈路中存在多路訪問問題,比如在一個會議中,在一個時刻,就只能有一個人說話,如果同時由多個人說話,就會導致我們聽不清講的是什麼(假設),要解決這個問題就要有一個規定使得,在一個時間段這能有一個人說話。如果多個人說我,我們將這種情況稱爲碰撞。解決這個問題,有三種常見的方法:信道劃分協議,隨機接入協議和輪流協議

2.1 信道劃分協議

其中典型的信道劃分協議有時分多路複用(TDM)頻分多路複用(FDM)。如下圖

TDM通過將時間分段來實現多路複用,避免碰撞,FDM類此通過將頻率分段實現多路複用。假設鏈路的速率爲RbpsRbps,我們通過TDM和FDM將鏈路分成了NN段,那麼對應於每一段的速率爲R/NbpsR/Nbps。TDM和FDM的好處是保證了每個信道的速率相同都是R/NbpsR/Nbps,然而他的主要的缺點是,即使鏈路中只有一個節點是活躍的,他的速率也是R/NbpsR/Nbps,沒法達到RR

第三種信道劃分協議是碼分多址(CDMA)。CDMA對每一個節點分配一種不同的編碼,不同的結點能過同時傳輸,並且他們各自相應的接收方仍能正確接收發送方編碼的數據比特,而不在乎其他節點的干擾。

2.2 隨機接入協議

主要介紹兩種協議ALOHA和具有碰撞檢測的載波偵聽多路訪問(CSMA/CD)

2.2.1. ALOHA協議

假設在一個節點發送完報文之前,就能檢測到來自其他節點的碰撞

pp是一個概率,ALOHA的工作流程如下:

  1. 當節點有要發送的節點時,立即將報文發送到鏈路中;
  2. 如何沒有發生碰撞,那該節點成功的傳輸了該幀,等待下一個要傳輸的幀;
  3. 如果發生了碰撞,那麼該節點在傳輸玩碰撞的幀之後,立即以pp的概率重新傳輸該幀。

根據計算可以得到ALOHA最大的效率是1/(2e)1/(2e)

2.2.2 具有碰撞檢測的載波偵聽多路訪問(CSMA/CD)

介紹協議之前我們先來看看載波偵聽和碰撞檢測這兩種技術。

  • 載波偵聽:一個節點在發送幀前先偵聽此信道。如果來自另一個節點的幀正在信道上發送,節點則等待直到檢測到一小段時間信道上沒有傳輸幀,然後在開始傳輸。
  • 碰撞檢測:一個節點在傳輸幀是一直在偵聽信道。如果他檢測到有別的節點在傳輸,他立即停止傳輸,並且在重複“偵聽–空閒是傳輸”前,等待一段隨機時間。

CSMA/CD的運行過程如下:

  1. 適配器從網絡層一條數據報,準備鏈路層幀,並將其放入幀適配器中。
  2. 如果適配器偵聽到信道空閒,他開始傳輸幀。另一方面,如果適配器偵聽到信道正在忙,他將等待,直到偵聽到沒有信號能量是纔開始傳輸幀。
  3. 在傳輸過程中,適配器監視來自其他使用該廣播信道的適配器的信號。
  4. 如果適配器傳輸整個幀而未檢測到來自其他適配器的信號,該適配器完成傳輸該幀。另一方面,如果適配器在傳輸過程中檢測到來自其他適配器的信號能量,他中止傳輸該幀(ALOHA不會中止)。
  5. 中止傳輸後,適配器等待一個隨機時間量,然後返回步驟二。

這個隨機時間量的選擇,我們希望他能夠有下面的特點,在碰撞節點比較少的時候,時間間隔比較短;碰撞節點比較多的時候,時間間隔比較長。

解決上面的這個問題我們用的是二進制指數後退算法。就是當一個幀發生nn次碰撞後,他從{0,1,,2n1}\{0,1,···,2^n-1\}裏面選擇一個KK值。當一個幀經歷多次碰撞之後,KK選擇的間隔的均值也會變大。對於以太網來說,一個節點等待的時間量是K512K·512比特時間(發送512512比特進入以太網所需時間量的KK倍),nn能夠取的最大值在1010以內。

例子,一個幀經歷了一次碰撞後,以相同的概率從{0,1}\{0,1\}中選擇KK,發生兩次碰撞時,以相同的概率從{0,1,2,3}\{0,1,2,3\}中選取KK,然後依次類推,第nn次的時候,就是{0,1,2,3,,2n1}\{0,1,2,3,···,2^n-1\}

3. MAC地址

主機和路由器也具有鏈路層地址,不過不是他們本身自帶,而是他們的適配器(網絡接口)具有鏈路層地址。需要注意的是鏈路層的交換機並沒有網絡接口,所以他們並沒有鏈路層地址,這就是說,鏈路層交換機對主機和路由器來說是透明的,主機和路由器不必明確的將幀尋址到其間的交換機。

鏈路層地址有多種叫法:LAN地址,物理地址或MAC地址。MAC地址的長度爲66字節,共有2482^{48}個可能的地址。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地址來傳輸的,所以要將IPIP地址轉化爲MAC地址。

在每臺主機和路由器中,都有一個ARP表,這張表包含IPIP地址到MAC地址的轉換,還包括這個轉換持續的時間。

4.1 在子網內發送數據報

將設現在A要向C發送一個報文,但是在A的ARP表中並沒有C的表項,現在就需要ARP協議來轉換地址。ARP查詢報文和響應報文具有相同的格式,都包含發送和接受方的IPIP地址和MAC地址。ARP查詢步驟如下:

  • 查詢方,發送一個ARP查詢報文,其中的目的MAC地址爲廣播地址ff-ff-ff-ff-ff-ff,當交換機收到該報文時,將該查詢報文,轉發到子網內的所有路由器和主機中。
  • 當報文到達主機或路由器時,主機或路由器查看報文的目的IPIP地址,如果目的IPIP地址和自己的IPIP地址相符,那麼他將發送一個響應報文,響應報文的源MAC地址就是要查詢的MAC地址,目的的IPIP和MAC地址是查詢報文的源IPIP和MAC地址;如果不一致,則沒有反應。

同時ARP協議是即插即用的,就是說一個ARP表是自動配置出來的。

4.2 發送數據報到子網外

如圖,當我們想把數據報發送到子網之外時,我們應該怎麼辦呢?

因爲ARP協議只在子網的內部生效,所以但我們去查詢一個子網之外的IPIP地址是,我們不會得到任何的響應。

想一下,數據報要到達子網的外部,首先就要經過路由器,然後通過路由器到達目的地。於是我們可以分兩步走:

  • 第一步:得到第一跳路由器的MAC地址,我們可以通過ARP查詢報文得到第一跳路由器(網關路由器)的MAC地址,將報文轉發的路由器。
  • 第二步:得到目的地址的MAC地址,現在報文已經在路由器裏面了,我們現在有將報文轉發到目的IPIP地址,這時又需要通過ARP查詢報文得到目的IPIP的MAC地址,然後轉發報文到目的MAC地址處。

5. 以太網幀格式

如圖是以太網的幀格式:

  • 數據字段(46-1500字節):如果IPIP數據報大於1500字節,將會分片;如果IPIP數據報小於46字節,將會被填充到46字節。使用填充時,數據報包含數據報和填充字段,網絡層接受到報文後,用IPIP首部字段中的長度字段來剔除填充字段。
  • 目的地址和源地址(共12字節):包含目的和源MAC地址。
  • 類型字段(2字節):用來標記數據字段報文傳輸給的上層協議。
  • CRC(4字節):循環冗餘檢測編碼。
  • 前同步碼(8字節):以太網的幀以8個字節的前同步碼開始。前同步碼的前七個字節都是10101010,第八個字節是10101011。前前同步碼的前七個字節用於喚醒接受適配器,並且將他們的時鐘和發送方的時鐘同步(因爲適配器不會以精確的速率傳輸幀,總是會有些漂移),一般來說速率有一下幾種10Mbps,100Mbps和1Gbps,但是不會很精確,會有偏差。

6. 鏈路層交換機

交換機對於子網中的主機和路由器來說是透明的,這就是說,某主機或路由器向另一個主機或路由器尋址一個幀(而不是向交換機尋址該幀),順利的將該幀發送進局域網,並不知道某交換機將會接受該幀並將它轉發到另一個節點。下面主要看交換機的幾個特點。

6.1 交換機的轉發和過濾

轉發是決定將報文導向那個接口;過濾是決定一個幀是該轉發到一個接口還是丟棄。轉發和過濾是通過交換機表實現的。一個交換機的表項包含:一個MAC地址,通向該MAC地址的交換機接口,表項放置在表中的時間。舉個例子:現在假定目的MAC地址爲fa-33-43-5f-2f-53的幀從交換機的xx接口到達,交換機表中的fa-33-43-5f-2f-53有一下幾種可能:

  • 表中沒有fa-33-43-5f-2f-53地址的表項。交換機廣播該幀。
  • 表中的一個fa-33-43-5f-2f-53地址的表項與接口xx聯繫起來。過濾即可。
  • 表中的一個表項將fa-33-43-5f-2f-53地址與接口yxy \ne x聯繫起來。那麼將該幀轉發到yy接口即可。

6.2 交換機的自學習功能

交換機的表項是自動、動態和自治的建立的,即沒有來自外部的干預,表項可以自己建立起來。所以交換機也是即插即用的。交換機的自學習通過一下的步驟實現:

  1. 交換機的初始爲空。
  2. 對於在每個接口接受到的每個入幀,該交換機在其表中儲存:①在該幀源地址字段中的MAC地址;②該幀到達的接口;③當前時間。通過這種方式可以記錄發送結點所在的局域網字段。
  3. 如果一段時間會,交換機沒有接受到該地址作爲源地址的幀,那麼就在表中刪除這個地址。

6.3 交換機的性質

主要有三個:消除碰撞,異質的鏈路和管理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章