数据链路层-------以太网协议
這里寫目錄標題
- 數據鏈路層
- 點對點協議(PPP協議)
- 以太網協議
- 認識以太網
- 以太網幀格式
- 認識MAC地址
- 對比理解MAC地址和IP地址
- 認識MTU
- MTU對上層協議的影響
- 查看硬件地址和MTU
- ARP協議(地址解析協議)
- ARP協議的作用
- ARP數據報格式
- ARP協議的工作原理
數據鏈路層
主要解決的問題就是分組在一個網絡(或者一段鏈路上)傳輸的問題。
1.什么是數據鏈路層:
- 鏈路:從一個節點到相鄰節點的一段物理線路,并且中間沒有任何其他的交換節點。(就是一條線路連接的兩個節點)
- 數據鏈路:把實現通信協議的硬件和軟件加到鏈路上,就構成了數據鏈路。(以特定的協議運送數據的路線)
- 幀:數據鏈路層主要是將傳輸的數據封裝成幀進行傳輸。
2.使用點對點信道的數據鏈路層:
- 封裝成幀:給上層交付下來的協議數據單元加上一個幀頭,加上一個幀尾。(加一個頭部,加一個尾部)
其中:
①幀頭和幀尾:包含有重要的控制信息。
②幀頭和幀尾:主要作用之一就是幀定界。(就是傳輸到另一方的時候,另一方方可以通過幀頭幀尾的界限去知道這是一個協議單元)
透明傳輸:數據鏈路層對上層的交付的數據沒有任何限制。(也就是上層只管往下交付數據,即使交付下來的數據中有幀定界的內容,也會在數據鏈路層的協議下進行調整)
①:字節填充實現透明傳輸。(面向字節的物理鏈路)
②:比特填充實現透明傳輸。(面向比特的物理鏈路)
為了提高幀的傳輸效率,應當使幀的數據部分的長度盡可能大些。(但是不能超過MTU) - 差錯檢測:比特在傳輸時可能會產生差錯。(對于這些應對措施,幀在幀尾部有一個幀檢驗序列,就是為了讓接收方的數據鏈路層檢查幀在傳輸過程中是否產生了誤碼)
檢錯方法:奇偶校驗,CRC循環冗余校驗。 - 可靠傳輸:也就是在傳輸層為tcp協議下的可靠傳輸。
3.媒體接入控制:主要分為兩類。(靜態劃分信道和動態接入控制)
①共享信道:要考慮的一個問題就是如何協調多個發送和接受站點對一個共享傳輸媒體的占用,也就是媒體接入控制MAC。(因為多臺主機連接在一個同軸電纜上,這些主機同時發送數據勢必會造成碰撞)
②靜態劃分信道:預先固定分配好信道,這類方法非常不靈活,對于突發性數據傳輸信道利用率會很低。通常在物理層使用。
信道復用:通過一條物理線路同時傳輸多路用戶信號。(當網絡中的傳輸媒體的傳輸容量大于多條單一信道傳輸的總通信量時,可以利用復用技術在一條物理線路上建立多條通信信道來充分利用傳輸媒體的帶寬)
- 頻分復用(FDM):所有用戶同時占用不同的頻帶資源并進行通信。
- 時分復用(TDM):所有用戶在不同時間占用同樣的頻帶寬度。
- 波分復用(WDM):也就是光纖,根據光波長的不同而進行分辨。
- 碼分復用(CDM):所用用戶可以在通信的時候使用同樣的頻帶進行通信。(并且不會造成干擾,是因為各個用戶使用經過特殊挑選的不同的碼型)
而對于上面的復用都可以用于多址:頻分多址(FDMA)、時分多址(TDMA)、碼分多址(CDMA),波分復用沒有。
- 復用:將單一媒體的頻帶資源劃分成很多子信道,并且這些子信道之間相互獨立,互不干擾。從整體上看,這些信道只占用該媒體頻帶資源的一部分。
- 多址:處理的是動態分配信道給用戶。這在用戶僅僅暫時性的占用信道的應用中是必須的,而所有的移動通信系統基本上都屬于這種情況。相反,在信道永久性分配給用戶的應用中,多址是不需要的(例如無線廣播或者電視廣播站)。
③動態接入控制:
- 隨機接入:所有站點通過競爭,隨機的在信道上發送數據。如果由多個站點同時發送數據,肯定會造成數據碰撞,會讓所有站點的發送都失敗,所以必須通過協議去解決這些問題。
4.使用廣播信道的熟路鏈路層(也是動態接入控制):
①:早期的共享式以太網的媒體接入控制協議CSMA/CD協議
其中:
- CS(載波監聽):每個主機在發送幀之前先檢查總線上是否被占用,如果占用則等待,如果空閑時間超過96bit時間則發送。
- MA(多址接入):多個主機連接在一條總線上,競爭使用總線。
- CD(碰撞檢測):每一個正在發送幀的主機,一邊檢測碰撞,一邊發送,一旦遇到碰撞,退避一段時間后再發送。
②:802.11無線局域網的媒體接入控制協議CSMA/CA協議
其中:也是用的載波監聽和多址接入,但是不能使用碰撞檢測。
原因:在無線局域網中,由于信道很特殊,信號強度范圍非常大,所以無線網卡接收到的信號強度往往小于發送信號強度。如果要在無線網卡上實現碰撞檢測CD,對硬件要求非常高。(并且無線電波傳播由隱蔽站問題,也就是對于相同的一個站點,由兩個不能檢測到對方的站點,但是可以檢測到同一個站點,此時這兩個站點同時給這個站點發送數據,那么發生碰撞了,它倆都不知道)
所以802.11無線局域網的媒體接入控制協議為CSMA/CA協議
- CA:碰撞避免功能。(無線信道誤碼率高,由于不可能避免所有碰撞,所以還使用了數據鏈路層的確認機制(停止等待協議),來保證數據被正確接收)
點對點協議(PPP協議)
1.點對點協議:是目前使用最廣泛的點對點數據鏈路層協議。
2.在點對點鏈路傳輸各種協議數據報提供了一個標準方法,主要由以下三部分構成:
- 對各種協議數據報的封裝方法。(也就是封裝成幀)
- 鏈路控制協議LCP。(用于建立、配置以及測試數據鏈路的連接)
- 一套網絡控制協議NCPs。(其中的每一個協議支持不同的網絡層協議)
3.幀格式:
其中: - F(標志字段):也是幀定界。(取值為0x7E)
- A(地址字段):預留位。(取值為0xFF)
- C(控制字段):預留位。(取值為0x03)
- P(協議字段):指明幀的數據部分送交哪個協議處理。(取不同值的時候,對應不同的協議處理)
例如:0x0021對應的幀數據部分是IP數據包、0xC021對應的是幀數據部分是LCP分組、0x8021對應的幀數據部分位NCP分組。 - FCS(幀檢驗序列字段):使用的是CRC循環冗余校驗法。
4.PPP協議向上不提供可靠傳輸服務。
以太網協議
認識以太網
- "以太網"不是一種具體的網絡,而是一種技術標準;既包含了數據鏈路層的內容,也包含了一些物理層的內容。(規定網絡拓撲結構,訪問控制方式,傳輸速率等)
- 以太網中網線必須使用雙絞線;傳輸速率有10M,100M,1000M等。
- 以太網是當前應用的最廣泛的局域網技術;和以太網并列的還有令牌環網,無線網LAN等。
以太網幀格式
如圖:
其中:
- 6字節的源地址和目的地址是指網卡的硬件地址(也叫MAC地址),長度為48位,是在網卡出廠時固化的;
- 2字節的幀協議類型字段三種值,分別對應IP、ARP、RARP;
- 4字節的幀末尾是CRC校驗碼。
其中:
①:MAC地址是以太網的MAC子層所使用的地址;(數據鏈路層)
②:IP地址是TCP/IP體系結構網際層所使用的地址;
③:ARP協議屬于TCP/IP體系結構的網際層,其作用是一致設備所分配到的IP地址,使用ARP協議可以通過該IP地址獲取到設備的MAC地址;
認識MAC地址
1.MAC地址的作用:當多臺主機連接到同一個廣播信道上,如果說一臺主機發送數據到廣播信道上,所有主機都會接收到,對于該廣播信道上的所有主機而言,通過發送數據上攜帶的標志信息,才能知道這個數據是不是發送給自己的。所以說MAC地址是每個主機都必須有的一個唯一的標識。(即一個數據鏈路層地址)
2.在每個主機發送的幀中必須攜帶標識發送主機和接收主機的地址。這是也是接收主機知道這個數據是不是發送給自己的。由于這類地址是用于媒體接入控制MAC,因此被稱為MAC地址。
其中:
- MAC地址一般被固化在網卡中,所以被叫做硬件地址。
- MAC地址有時被稱作為物理地址。(但不是屬于物理層)
- MAC地址是對網路歐尚各接口的唯一標識,而不是唄網絡上各設備的網絡標識。(一般情況下,用戶主機會包含一個有線局域網適配器(有線網卡)和無線局域網適配器(無線網卡),并且每個網絡適配器都有一個全球唯一的MAC地址,所以有一個設備多個網絡接口,就會有多個MAC地址,比如交換機和路由器)
3.MAC地址格式
MAC地址一般是由48個bit位(6個字節)組成,并且每個字節以16進制表示,以:進行間隔開。
如下,是Linux下的MAC地址:
但是在windows系統下,MAC地址的表示方法是中間以-進行分開的。
對比理解MAC地址和IP地址
1.IP地址:是因特網上主機和路由器所使用的地址,用于標識兩部分信息。
2.MAC地址:不具備區分不同網絡的功能
- 如果只是一個單獨的網絡,不接入因特網,那么只使用MAC地址。
- 如果主機所在的網絡要接入因特網,則IP地址和MAC地址都需要使用。
3.從網絡體系結構來看:
- IP地址屬于網絡層的內容,所以在數據單元到網絡層添加的網絡層首部具有源IP地址和目的IP地址。
- MAC地址屬于數據鏈路層的內容,所以數據單元在數據鏈路層添加的數據鏈路層首部應該封裝有源MAC地址和目的MAC地址。
4.數據包轉發過程中IP地址與MAC地址的變化情況:
- IP地址:從始至終都不會發送變化。(源IP地址和目的IP地址)
- MAC地址:在每兩個節點間的變化都是不同的,到達一個節點,就會將MAC的源端改成當前到達的這個節點的MAC地址,而將目的端MAC地址改成下一個要去的節點的MAC地址 。
認識MTU
MTU:每個數據單元的最大傳輸單元。(也就是相當于發快遞時對包裹尺寸的限制。這個限制是不同的數據鏈路對應的物理層,產生的限制。)
其中:
- 以太網幀中的數據長度規定最小46字節,最大1500字節,而ARP數據包長度如果不夠46字節的話,就必須進行填充。
- 而最大值1500字節就被稱為以太網的最大傳輸單元MTU,并且根據不同的網絡,這個MTU的大小是不同的。
- 如果一個數據包從以太網路由到撥號鏈路上,數據包長度大于撥號鏈路的MTU了,則需要對數據包進行分片(fragmentation)。
- 不同的數據鏈路層標準的MTU是不同的。
MTU對上層協議的影響
1.MTU對IP協議的影響
由于數據鏈路層MTU的限制,對于較大的IP數據包要進行分片。
如下圖:
- 當IP數據包裹到達數據鏈路層的時候,如果說此時這個包裹大于MTU,那么就會將其包裹進行分片處理,并且給每個片上加上標識。
- 每個分片的IP協議頭的16位標識(id)都是相同的。
- 每個分片的IP協議頭的3位標志字段中, 第2位置為0, 表示允許分片, 第3位來表示結束標記(當前是否是最后一個小包, 是的話置為1, 否則置為0)。
- 到達對端時再將這些小包, 會按順序重組, 拼裝到一起返回給傳輸層。
- 一旦這些小包中任意一個小包丟失, 接收端的重組就會失敗. 但是IP層不會負責重新傳輸數據。
2.MTU對UDP協議的影響
UDP協議:是用戶數據包協議。(不可靠的,無連接的服務)
- 一旦UDP攜帶的數據超過1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就會在網絡層分成多個IP數據報。
- 這多個IP數據報有任意一個丟失, 都會引起接收端網絡層重組失敗。那么這就意味著, 如果UDP數據報在網絡層被分片, 整個數據被丟失的概率就大大增加了。
3.MTU對TCP協議的影響
TCP協議:是傳輸控制協議。(可靠的,基于連接的,面向字節流)
- TCP的一個數據報也不能無限大, 還是受制于MTU。TCP的單個數據報的最大消息長度, 稱為MSS(MaxSegment Size);
- TCP在建立連接的過程中, 通信雙方會進行MSS協商。
- 最理想的情況下, MSS的值正好是在IP不會被分片處理的最大長度(這個長度仍然是受制于數據鏈路層的MTU)。
- 雙方在發送SYN的時候會在TCP頭部寫入自己能支持的MSS值。
- 然后雙方得知對方的MSS值之后, 選擇較小的作為最終MSS。
- MSS的值就是在TCP首部的40字節變長選項中(kind=2)。
MTU和MSS的關系如圖:
所以對于MTU對數據部分還是比較重要的,他會對上層的數據大小由一定的影響。
查看硬件地址和MTU
使用ifconfig命令, 即可查看ip地址, mac地址, 和MTU,如下圖:
ARP協議(地址解析協議)
ARP不是一個單純的數據鏈路層的協議, 而是一個介于數據鏈路層和網
絡層之間的協議
ARP協議的作用
1.作用:ARP協議屬于TCP/IP體系結構的網際層,其作用是已知設備所分配到的IP地址,使用ARP協議可以通過該IP地址獲取到設備的MAC地址。
2.原因:ARP協議建立了主機 IP地址 和 MAC地址 的映射關系
- 在網絡通信的時候,源主機的應用程序知道目的主機的IP地址和端口號,但是不知道目的主機的硬件地址。(MAC地址)
- 數據包是被網卡接收到再去處理上層協議的,如果接收到的數據包的硬件地址和本機不符,則丟棄。
- 因此在通信前必須獲得目的主機的硬件地址。
ARP數據報格式
如下圖:
其中,我們可以注意到:
- 源MAC地址、目的MAC地址在以太網首部和ARP請求中各出現一次,這種情況對于鏈路層為以太網的情況是多余的,而對于其他類型的網絡則是有必要的。
- 硬件類型:指數據鏈路層的網絡類型。 (例如:1為以太網)
- 協議類型:要轉換的地址類型。(例如:0x0800為IP地址)
- 硬件地址長度:對于以太網地址為6個字節。
- 協議地址長度:對于IP地址為4個字節
- op字段:1表示ARP請求;2表示ARP應答。
ARP協議的工作原理
首先我們先看下圖:
假設主機A要給主機B發送數據包,但是我們知道,主機A是不知道主機B的MAC地址,并且如果一個主機接收到的數據報上的MAC地址與自己的MAC地址不匹配的話,會直接將這個數據包丟棄,所以我們在發送數據的時候肯定會將接收方的MAC地址搞到手,而這個操作就是ARP協議的作了。
具體的原理是什么?如下:
-
首先,主機A會在自己的ARP高速緩存表中通過目的主機的IP地址找出目的主機對應的MAC地址,然后填寫在自己要發送的MAC數據幀中。如果沒有,就要繼續通過下面的方式進行。
ARP高速緩存表如下:
其中主機ARP高速緩存表中會有對應主機IP的MAC地址,并且有動態和靜態之分。
①動態:記錄的是主機自動獲取到的信息,并且生命周期默認是2分鐘。(生命周期到后,該信息會自動刪除,主要的愿意是IP地址和MAC地址的對應關系并不是永久性的,例如主機更換網卡(IP地址沒變,但是MAC地址變了))
②靜態:管理員手工設置的,不同的操作系統下的生命周期不同。(例如:系統重啟后不存在或者重啟后依然有效) -
如果高速緩存表中沒有對應的IP地址,那么主機A就會發送一個ARP請求報文的廣播幀(此時會將源端IP地址和源端MAC地址和對端IP地址封裝在里面)(廣播幀的目的地址是廣播地址,也就是全1),然后在這個網絡中的所有主機都會收到這個廣播幀,并且接收到的廣播幀會將目的端的IP地址與自己的IP地址進行比較,看看是不是發送給自己的。
-
識別到是發送給自己的廣播幀后,也就是主機B接收到后。會首先將主機A的IP地址與MAC地址記錄到自己的ARP緩存表中;然后給主機A發送ARP響應報文。(包含有主機B的IP地址和主機B的MAC地址,并且ARP響應報文被封裝在MAC幀中發送)
-
主機A接收到主機B發送過來的ARP響應報文后,解析后將其所記錄的IP地址和MAC地址記錄到自己的ARP高速緩存表中。
-
然后主機A就可以給主機B發送數據包了。
注意:ARP協議只能在一段鏈路或者一個網絡上使用。
總結
以上是生活随笔為你收集整理的数据链路层-------以太网协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 判断勾股数
- 下一篇: 移动硬盘安装Ubuntu,并确保在任何电