在資料鏈路層,乙太網負責乙太網編址,這通常稱為硬體編址或 mac 編址。乙太網還負責把來自網路層的分組封裝成幀。
乙太網編址使用固化在每個乙太網網絡卡(nic)中的 mac (media access control,介質訪問控制)位址。mac (硬體)位址長 48 位,採用十六進製制格式。
oui(organizationally unique identifier,組織唯一識別符號)是由 ieee 分配給組織(廠商)的,它包含 24 位,而組織給其生產的每個網絡卡都分配乙個唯一的全域性管理位址,該位址長 24 位。檢視上圖您會發現最高位是 i/g(individual/group) 位:如果它的值為 0,我們就可以認為相應的位址為某台裝置的 mac 位址,很可能出現在mac 報頭的源位址部分;如果它的值為 1,我們就可以認為相應的位址要麼是乙太網中的廣播位址或組播位址,要麼是令牌環和 fddi 中的廣播位址或功能位址。
接下來是 g/l 位(全域性/本地位,也稱為 u/l 位,其中 u 表示 universal):如果這一位為 0,則表示相應的位址為全域性位址,由 ieee 分配;如果為 1,則表示相應的位址為本地管理位址。在乙太網位址中,右邊 24 位為本地管理(製造商分配)的編碼,特定製造商在生產第乙個網絡卡時,通常將這部分設定為 24 個 0,然後遞增,直到 24 個1。
資料鏈路層負責將位元合併成位元組,再將位元組封裝成幀(frame)。在資料鏈路層我們使用幀封裝來自網路層的分組,以便通過特定型別的介質進行傳輸。
乙太網工作站的職責是,使用 mac 幀格式彼此傳遞資料幀。它利用 crc(cyclic redundancy check,迴圈冗餘校驗)提供錯誤檢測功能,記住,僅僅是檢測,不是糾錯。
下圖說明了 802.3 幀和乙太網幀的格式:
注意:使用一種幀封裝另一種幀稱為隧道技術。
下面詳細介紹各個字段。
前導碼
交替的 0 和 1,在每個分組的開頭提供 5mhz 的時鐘訊號,讓接收裝置能夠跟蹤到來的位元流。
幀起始位置分隔符(sfd)/同步
前導碼為 7byte,而 sfd(同步)為 1byte。sfd 的值為 10101011,其中最後兩個1讓接收方能夠識別中間的 0 和 1 交替模式,進而同步並檢查到資料開頭。
目標位址 (da)
包含乙個 48 位的值,且 lsb(least significant bit,最低有效位)優先。接收方根據 da 判斷到來的分組是否是傳送給特定節點的。目標位址可以是單播位址、廣播位址或組播 mac 位址。廣播位址全為 1(十六進製制格式下全為f),廣播傳送給所有裝置,而組播只傳送給網路中一組類似的節點。
源位址(sa)
sa 是乙個 48 位的 mac 位址,用於標識傳輸裝置,也使用 lsb 優先格式。在 sa 欄位中,不能包含廣播位址或組播位址。
長度或型別
802.3 幀使用長度字段,而 ethernet_ii 幀使用型別字段標識網路層協議。802.3 不能標識上層協議,只能用於專用 lan,如 ipx。
資料
這是網路層傳遞給資料鏈路層的幀,其長度為 46-1500 bytes。
幀校驗序列(fcs)
fcs 字段位於,用於儲存 crc(cyclic redundancy check,迴圈冗餘校驗)結果的幀的幀尾。crc 是一種數學演算法,建立每個幀時都將執行它。作為接收方的主機收到幀並執行 crc 時,其結果必須相同,否則接收方將認為發生了錯誤,進而將幀丟棄。
主機通過網路將資料傳輸給另一台裝置時,資料將經歷封裝:osi 模型的每一層都使用協議資訊將資料報裝起來。每層都只與其在接收裝置上的對等層通訊。
為了通訊和交換資訊,每層都使用 pdu(protocaol data unit,協議資料單元)。pdu 包含在每一層給資料新增的控制資訊。這些控制資訊通常被新增在資料字段前面的報頭中,但也可能被新增在報尾中。
osi 模型每一層都對資料進行封裝來形成 pdu,pdu 的名稱隨報頭提供的資訊而異。這些 pdu 資訊僅在接收裝置的對等層被讀取,然後剝離,然後資料被交給下一層。
下圖顯示了各層的 pdu 及每層新增的控制資訊:
該圖說明了如何對上層使用者資料進行轉換,以便通過網路傳輸。然後,資料被交給傳輸層,而傳輸層通過傳送同步分組來建立到接收裝置的虛電路。接下來,資料流被分割成小塊,傳輸層報頭被建立並放在資料字段前面的報頭中,此時的資料塊稱為資料段(一種pdu)。我們可以對每個資料段進行排序,以便在接收端按傳送順序重組資料流。
接下來,每個資料段都交給網路層進行編址,並在網際網路絡中路由。為讓每個資料段前往正確的網路,這裡使用邏輯位址(如ip位址)。對於來自傳輸層的資料段,網路層協議給它新增乙個控制報頭,這樣就生成了分組或資料報。在接收主機上,傳輸層和網路層協同工作以重建資料流,但它們不負責將 pdu 放到本地網段上--這是將資訊傳輸給路由器或主機的唯一途徑。
資料鏈路層負責接收來自網路層的分組,並將其放到網路介質(電纜或無線)上。資料鏈路層將每個分組封裝成幀,其中幀頭包含源主機的硬體位址。如果目標裝置在遠端網路中,則幀將被傳送給路由器,以便在網際網路絡中路由。到達目標網路後,新的正被用來將分組傳輸到目標主機。
要將幀放到網路上,首先必須將其轉換為數碼訊號。幀是有 1 和 0 組成的邏輯編組,網路層負責將這些 0 和 1 編碼成數碼訊號,供本地網路中的裝置讀取。接收裝置將同步數碼訊號,並從中提取 1 和 0 (解碼)。接下來,裝置將重組幀,執行 crc,並將結果與幀中 fcs 欄位的值進行比較。如果它們相同,裝置從幀中提取分組,並將其他部分丟棄,這個過程稱為拆封。分組被交給網路層,而網路層將檢查分組位址。如果位址匹配,資料段被從分組中提取出來,而其他部分將被丟棄。資料段將在傳輸層處理,而後者負責重建資料流,然後向傳送方確認,指出接收方收到了所有資訊。然後傳輸層將資料流交給上層應用程式。
在傳送端,資料封裝的過程大致如下:
1. 使用者資訊被轉換為資料,以便通過網路進行傳輸。
2. 資料被轉換為資料段,傳送主機和接收主機之間建立一條可靠的連線。
3. 資料段被轉換為分組或資料報,連線位址被新增在報頭中,以便能夠在網際網路絡中路由分組。
4. 分組或資料報被轉換為幀,以便在本地網路中測試。硬體(乙太網)位址被用於唯一標識本地網段中的主機。
5. 幀被轉換為位元,並使用資料編碼方法和時鐘同步方案。
下**釋了資料封裝的過程:
傳輸層使用埠號標識虛電路和上層程序,如下圖所示:
使用面向連線的協議(即tcp)時,傳輸層將資料流轉換為資料段,並建立一條虛電路以建立可靠的會話。接下來,它對每個資料段進行編號,並使用確認和流量控制。如果你使用的是 tcp,虛電路將由源埠號和目標埠號已經源 ip 位址和目標 ip 位址(稱為套接字)標識。主機只能使用不小於 1024 的埠號。目標埠號標識了上層程序(應用程式),在接收主機可靠地重建資料流後,資料流將被交給程序(應用程式)。
下面讓我們回到資料封裝的過程。
給資料塊新增傳輸層報頭資訊後,便形成了資料段;隨後,資料段和目標 ip 位址一起唄交給網路層。(目標ip位址是隨資料流一起由上層交給傳輸層的,它是由上層使用名稱解析方法(可能是dns)發現的。)
網路層在每個資料段的前面新增報頭和邏輯位址(ip位址)。給資料段新增報頭後,形成的 pdu 為分組。分組包含乙個協議字段,該欄位指出了資料段來自何方(udp或tcp),這樣當分組到達接收主機後,傳輸層便能夠將資料段交給正確的協議。
網路層負責獲悉目標硬體位址(這種位址指出了分組應傳送到本地網路的什麼地方),為此,它使用 arp(address resolution protocol,位址解析協議)。網路層檢視目標 ip 位址,並將其與主機的 ip 位址和子網掩碼進行比較。如果比較表明分組是前往本地主機的,則 arp 請求被用於請求該主機的硬體位址;如果分組是前往遠端主機的,ip 將獲悉預設閘道器(路由器)的 ip 位址。
接下來,網路層將分組向下傳遞給資料鏈路層,一同傳遞的還有本地主機或缺省閘道器的硬體位址。資料鏈路層在分組前面新增乙個報頭,這樣資料塊將變成真(之所以稱其為幀,是因為同時給分組新增了報頭和報尾,使其類似於書檔)。幀包含乙個乙太網型別(ether-type)字段,它指出了分組來自哪種網路層協議。現在,將對幀執行crc 校驗,並將結果放在幀尾的 fcs 欄位中。
至此,可以用每次 1 位元的方式將幀向下傳遞給網路層了,而網路層將使用比特定時規則(bit timing rule)將資料編碼成數碼訊號。網段中的每台裝置都將同步時鐘,從數碼訊號中提取 1 和 0,並重建幀。重建幀後,裝置執行 crc,以確保幀是正確的。如果一切順利,主機將檢查目標 mac 位址和目標 ip 位址,以檢查這個幀是不是傳送給它的。
乙太網資料的封裝
我們在上一文中介紹了乙太網5層模型,這一節我想學習一下乙太網資料封裝與解封的知識,了解乙太網資料是如何傳輸的。一 資料封裝 當我們應用程式用tcp傳輸資料的時候,資料被送入協議棧中,然後逐個通過每一層,知道最後到物理層資料轉換成位元流,送入網路。而再這個過程中,每一層都會對要傳送的資料加一些首部資訊...
乙太網和資料封裝
csma cd 載波偵聽多路訪問 衝突檢測 幫助裝置共享頻寬的協議,可避免兩台裝置同時在網路介質上傳輸資料。乙太網幀 乙太網格式 乙太網幀的各個字段 1 前導碼 交替的0和1,在每個分組的開頭提供5mhz的時鐘訊號,讓接受裝置能夠跟蹤到來的位元流 2 幀起始位置分隔符 sfd 同步 同步並檢測資料開...
網路學習 4 乙太網基礎
如上圖所示,ethernet ii格式的乙太網幀有五個部分組成,d.mac s.mac type data和fcs。1 d.mac是目的mac位址,表示該幀的接收者。目的mac位址可以是單播mac 組播mac或者廣播mac。2 s.mac是源mac位址,表示該幀的傳送者。源mac位址只能是乙個單播m...