1. 程式人生 > >【計算機網路】資料鏈路層(一):資料幀和物理定址

【計算機網路】資料鏈路層(一):資料幀和物理定址

資料鏈路層是物理層的上層,物理層是把電腦連線起來的物理手段,它主要規定了網路的一些電氣屬性,其作用是負責傳送0和1的電訊號。資料鏈路層位於物理層的上層,簡單的闡述它的作用就是確定0和1的分組方式。

下面我們就詳細的介紹資料鏈路層。

                                     

上面是TCP/IP協議族中不同層次的協議,這個系列我們將從下往上來介紹這個TCP/IP協議。

從上可以看出,鏈路層主要有三個目的

  1. 為IP模組傳送和接收IP資料報;
  2. 為ARP模組傳送ARP請求和接收ARP應答;
  3. 為RARP傳送RARP請求和接收RARP應答。
從上面協議可知,兩個主機,其使用者之間的通訊是傳送者主機從上至下,接收者主機從下往上。傳送者使用者(應用層)的資料經由傳輸層、網路層、鏈路層,然後通過物理層(媒介)連線到接收者的物理層,然後從下往上經鏈路層、網路層、傳輸層再到應用層的接收者使用者。來回通訊的話就是彼此交換髮送者,接收者。需要注意的是,從下往上,資料報是越來越大,因為包含的地址資訊越來越多,有效載荷(資料包)是不變的。鏈路層首部包含雙方的MAC地址,網路層添加了雙方的網路地址,傳輸層則添加了雙方的端地址,層層新增,反過來,從上至下則是層層過濾。
如下圖(from RFC,page-18)

                                                    

更形象的表示:

    

接收方中的物理層接受資訊單元並將其傳送至資料鏈路層,然後其鏈路層讀取包含在傳送方的資料鏈路層預先新增在協議頭中的控制資訊,接下來去除協議頭和協議尾,剩餘部分被傳送至網路層,協議棧向上層層過濾,去除對應該層的首部後,最後到達應用層,傳送方的資料就被傳輸到接收方的應用程式。

無論在多麼複雜的網路中,從邏輯意義上講,真正的資料傳輸通道就是資料鏈路層中所定義的資料鏈路。

資料鏈路層肩負著上接網路層,下連物理層的中介作用,還需要處理其間的資料傳輸故障等。事實上,資料鏈路層在不可靠的物理介質上提供可靠的傳輸,該層的作用包括:實體地址定址、資料的成幀、流量控制,資料的檢錯,重發等。

實體地址定址:

通訊當然得知道傳送者的地址和接受者的地址,這是最基礎的。乙太網規定,所有連入網路的裝置,都必須具有“網絡卡”介面。然後資料包是從一塊網絡卡,傳輸到另一塊網絡卡的。網絡卡的地址,就是資料包的傳送地址和接收地址,叫做MAC地址,也叫實體地址,這是最底層的地址。每塊網絡卡出廠的時候,都有一個全世界獨一無二的MAC地址,長度是48個二進位制位,通常用12個十六進位制數表示。有了這個地址,我們可以定位網絡卡和資料包的路徑了。

那麼在實際通訊時,我們怎麼知道對方的MAC地址呢?這裡我們是通過ARP協議(地址解析協議),就是根據IP地址(網路層)獲取MAC地址的一個TCP/IP協議。上面有說到,傳送者從上至下,就需要在已知IP地址的情況下,獲取MAC地址傳送給接收者,自然地,接收方從下往上時,需要逐步新增對方的地址資訊,需要已知MAC地址的情況下,RARP協議(逆地址解析協議)獲得對方的IP地址。

那麼知道了對方的MAC地址,連線是如何建立的呢?

這裡簡單的說下廣播方式(目的端為給定網路上的所有主機),系統將資料包(包含MAC地址)向本網路內所有計算機發送,讓每臺計算機自己判斷,是否為接收方。

                                        

上圖,1號計算機向2號機算機發送一個數據包,同一個子網路的計算機都會收到這個包。它們讀取這個包的首部,找到接受方的MAC地址,同自身的MAC地址相比較,如果兩者相同,就接收這個包,作進一步處理,否則就丟棄。

事實上還有其餘方式如單播和多播這裡就不說明了。

資料幀封裝:

封裝簡單說就是事先對資料包進行拆分和打包,在所傳送的資料包上附加上目標地址,本地地址,以及一些用於糾錯的位元組等。對資料包進行處理時通訊雙方所遵循和協商好的規則就是協議。

先說說當今TCP/IP採用的主要的區域網技術——乙太網。 網路層傳輸的包(packet),在資料鏈路層中傳輸的是“幀”(frame)。資料包到達資料鏈路層後加上資料鏈路層的協議頭和協議尾就構成了一個數據幀。前面說到,資料部分也就是有效載荷,其各個層都是一樣的 乙太網(Ethernet)規定:一組電訊號構成一個數據包,叫做“幀”(Frame),每個幀分為兩個部分:首部(Head)和資料(Data)。                                                            
“首部”自然是包含資料包的一些說明項,如傳送者、接收者、資料型別等等,“資料”則是資料包的具體內容。不論是乙太網幀還是後面網路層的IP資料報都是這麼個格式型別。

前面說到,資料鏈路層位於物理層和網路層之間。在傳送端,資料鏈路層是接收來自網路層的資料分組,而在接收端它是接受來自物理層的位元流,所以資料鏈路層的成幀功能就包含兩層含義:一是將來自物理層的一個個位元流組裝成資料幀(成為幀同步),二是將來自網路層的資料分組封裝成資料幀。

在傳送端資料鏈路層中的幀到達物理層後就會以位元位為單位進行傳輸,而不是以幀為單位進行傳輸,在物理線路上資料的傳輸單位是位元位。傳送端以位元位方式一位位地傳輸到接收端的物理層,然後接收端的物理層把位元流向資料鏈路層傳輸,達到後又要將位元流封裝成資料幀,新增的首部資訊是通過讀取對方這就是資料鏈路層的幀組裝方式。

幀同步的目的就是要使接收端的資料鏈路層對從物理層傳輸而來的一串串位元流以幀為單位進行區分,根據幀頭和幀尾來區分一個完整幀。

乙太網和IEEE 802封裝

            

         

各個欄位的詳細說明:

目的地址(Destination Address,DA)和源地址(Source Address,SA):兩種幀都採用6位元組的目的地址和源地址(802.3允許16bit),也就是MAC地址,只有網路接口才能識別。

長度(Length)或型別(Type):從網路層來的資料包,大小可以在46—1500位元組之間變化。

校驗序列(Frame Check Sequence,FCS):FCS是位於幀尾的欄位,它用來存放迴圈冗餘校驗(CRC)。

資料鏈路層除了資料的封裝成幀之外,還需要保證資料在該層的“透明”傳輸,即使在資料鏈路層上所傳輸的資料在內容、格式及編碼上都沒有限制,也要保證資料從傳送端無差錯地在資料鏈路上傳輸到目的接收端。