📢博客主頁:https://blog.csdn.net/2301_779549673
📢博客倉庫:https://gitee.com/JohnKingW/linux_test/tree/master/lesson
📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
📢本文由 JohnKi 原創,首發于 CSDN🙉
📢未來很長,值得我們全力奔赴更美好的生活?
文章目錄
- 🏳??🌈一、認識以太網
- 1.1 以太網幀格式
- 1.2 認識 MAC 地址
- 1.3 對比理解 MAC 地址和 IP 地址
- 1.4 認識 MTU
- 1.5 MTU 對 IP 協議的影響
- 1.6 MTU 對 UDP 協議的影響
- 1.7 MTU 對于 TCP 協議的影響
- 1.8 查看硬件地址和 MTU
- 🏳??🌈二、ARP 協議
- 2.1 ARP 協議的作用
- 2.2 ARP 協議的工作流程
- 2.2.1 查詢ARP緩存
- 2.2.2 發送ARP請求
- 2.2.3 接收并處理ARP請求
- 2.2.4 發送ARP響應
- 2.2.5 接收并處理ARP響應
- 2.2.6 數據傳輸
- 2.2.7 ARP緩存的更新和管理
- 2.3 ARP 數據報的格式
- 👥總結
11111111
11111111
11111111
11111111
**** 11111111
數據鏈路層
用于兩個設備(同一種數據鏈路節點)之間進行傳遞.
🏳??🌈一、認識以太網
- “
以太網
” 不是一種具體的網絡, 而是一種技術標準; 既包含了數據鏈路層的內容, 也包含了一些物理層的內容. 例如: 規定了網絡拓撲結構, 訪問控制方式, 傳輸速率等; - 例如以太網中的網線必須使用雙絞線; 傳輸速率有 10M, 100M, 1000M 等;
- 以太網是當前應用最廣泛的局域網技術; 和以太網并列的還有令牌環網, 無線LAN 等;
1.1 以太網幀格式
以太網的幀格式如下所示:
- 源地址和目的地址是指網卡的硬件地址(也叫
MAC
地址), 長度是 48 位,是在網卡出廠時固化的; - 幀協議類型字段有三種值,分別對應
IP
、ARP
、RARP
; - 幀末尾是
CRC
校驗碼。
1.2 認識 MAC 地址
MAC
地址用來識別數據鏈路層中相連的節點;- 長度為 48 位, 長 6 個字節. 一般用 16 進制數字加上冒號的形式來表示(例如:08:00:27:03:fb:19)
- 在網卡出廠時就確定了, 不能修改. mac 地址通常是唯一的
- 虛擬機中的 mac 地址不是真實的 mac 地址, 可能會沖突; 也有些網卡支持用戶配置 mac 地址
1.3 對比理解 MAC 地址和 IP 地址
IP
地址描述的是路途總體的 起點 和 終點;MAC
地址描述的是路途上的每一個區間的起點和終點;
1.4 認識 MTU
MTU
相當于發快遞時對包裹尺寸的限制. 這個限制是不同的數據鏈路對應的物理層, 產生的限制.- 以太網幀中的數據長度規定最小 46 字節,最大 1500 字節,,ARP 數據包的長度不夠 46 字節,要在后面補填充位;
最大值 1500
稱為以太網的最大傳輸單元(MTU),不同的網絡類型有不同的MTU;- 如果一個數據包從以太網路由到撥號鏈路上,數據包長度大于撥號鏈路的 MTU了,則需要對數據包進行分片(fragmentation);
- 不同的數據鏈路層標準的
MTU
是不同的;
1.5 MTU 對 IP 協議的影響
由于數據鏈路層 MTU 的限制, 對于較大的 IP 數據包要進行分包
.
- 將較大的
IP
包分成多個小包, 并給每個小包打上標簽(分包和加標簽); - 每個小包 IP 協議頭的 16 位標識(id) 都是相同的(標簽原則);
- 每個小包的 IP 協議頭的 3 位標志字段中, 第 2 位置為 0, 表示允許分片, 第 3 位來表示結束標記(當前是否是最后一個小包, 是的話置為 1, 否則置為 0)(標簽原則);
- 到達對端時再將這些小包, 會按順序重組, 拼裝到一起返回給傳輸層(合并小包);
- 一旦這些小包中任意一個小包丟失, 接收端的重組就會失敗. 但是 IP 層不會負責重新傳輸數據;(丟包情況)
1.6 MTU 對 UDP 協議的影響
讓我們回顧一下 UDP 協議:
- 一旦 UDP 攜帶的數據超過 1472(1500 - 20(IP 首部) - 8(UDP 首部)), 那么就會在網絡層分成多個 IP 數據報.
- 這多個 IP 數據報有任意一個丟失, 都會引起接收端網絡層重組失敗. 那么這就意味著, 如果
UDP
數據報在網絡層被分片, 整個數據被丟失的概率就大大增加了.
1.7 MTU 對于 TCP 協議的影響
讓我們再回顧一下 TCP 協議:
TCP
的一個數據報也不能無限大, 還是受制于 MTU. TCP 的單個數據報的最大消息長度, 稱為MSS
(Max Segment Size);TCP
在建立連接的過程中, 通信雙方會進行 MSS 協商.- 最理想的情況下,
MSS
的值正好是在IP
不會被分片處理的最大長度(這個長度仍然是受制于數據鏈路層的 MTU). - 雙方在發送
SYN
的時候會在TCP
頭部寫入自己能支持的 MSS 值. - 然后雙方得知對方的
MSS
值之后, 選擇較小的作為最終 MSS. MSS
的值就是在TCP
首部的 40 字節變長選項中(kind=2);
MSS 和 MTU 的關系
1.8 查看硬件地址和 MTU
使用 ifconfig
命令, 即可查看 ip 地址, mac 地址, 和 MTU;
🏳??🌈二、ARP 協議
雖然我們在這里介紹 ARP 協議, 但是需要強調, ARP 不是一個單純的數據鏈路層的協議, 而是一個介于數據鏈路層和網絡層之間的協議;
?ARP
請求主要發生在局域網中,用于同一子網內的設備通信
2.1 ARP 協議的作用
ARP 協議建立了主機 IP 地址
和 MAC 地址
的映射關系.
- 在網絡通訊時,源主機的應用程序知道目的
主機的 IP 地址
和端口號
,卻不知道目的主機的硬件地址; - 數據包首先是被網卡接收到再去處理上層協議的,如果接收到的數據包的硬件地址與本機不符,則直接丟棄;
- 因此在通訊前必須獲得目的主機的硬件地址;
2.2 ARP 協議的工作流程
- 源主機發出
ARP
請求,詢問“IP 地址是 192.168.0.1 的主機的硬件地址是多少”, 并將這個請求廣播到本地網段(以太網幀首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示廣播); - 目的主機接收到廣播的 ARP 請求,發現其中的
IP
地址與本機相符,則發送一個ARP 應答數據包給源主機,將自己的硬件地址填寫在應答包中; - 每臺主機都維護一個
ARP
緩存表,可以用 arp -a 命令查看。緩存表中的表項有過期時間 (一般為 20 分鐘),如果 20 分鐘內沒有再次使用某個表項,則該表項失效,下次還要發 ARP 請求來獲得目的主機的硬件地址
ARP協議具體工作流程:
ARP(地址解析協議)的工作流程是一個用于在同一局域網內根據
IP地址
解析出對應MAC地址
的過程。
2.2.1 查詢ARP緩存
當 主機A
需要向 主機B
發送數據時,它首先會在自己的ARP緩存中查找是否已經有主機B的IP地址與MAC地址的映射關系。
- 如果在ARP緩存中找到了主機B的MAC地址,那么主機A會直接使用該MAC地址進行數據封裝和發送,跳過后續的ARP請求和響應步驟。
- 如果在ARP緩存中沒有找到主機B的MAC地址,那么主機A會進行下一步的ARP請求
2.2.2 發送ARP請求
主機A
會構造一個ARP請求報文,該報文包含了以下內容:
源主機
的 IP地址 和 MAC地址(即主機A的IP地址和MAC地址)。目標主機
的 IP地址(即主機B的IP地址),但目標主機的 MAC 地址字段通常填充為全0,表示未知。
然后,主機A會以 廣播
的方式將ARP請求報文發送到本地網絡上的所有主機。這個廣播報文會被網絡上的每一臺主機接收到。
2.2.3 接收并處理ARP請求
網絡上的 每一臺主機
都會檢查接收到的ARP請求報文中的 目標IP地址
是否與 自己的IP地址
匹配。
- 如果不匹配,該主機將丟棄ARP請求報文,不做任何處理。
- 如果匹配(即該主機是主機B),那么主機B會進行下一步的ARP響應。
在響應之前,主機B
還會將ARP請求報文中的源主機的IP地址和MAC地址(即主機A
的IP地址和MAC地址)添加到自己的ARP緩存中,以備將來使用。
2.2.4 發送ARP響應
主機B
會構造一個ARP響應報文,該報文包含了以下內容:
- 源主機的IP地址和MAC地址(即
主機B
的 IP地址 和 MAC地址)。 - 目標主機的IP地址和MAC地址(即
主機A
的 IP地址 和 MAC地址,但這里的MAC地址是已知的,因為是從ARP請求報文中獲取的)。 - 然后,
主機B
會以 單播 的方式將ARP響應報文發送回主機A。
2.2.5 接收并處理ARP響應
主機A
接收到 主機B
發送的ARP響應報文后,會從中提取出主機B的MAC地址,并將其添加到自己的ARP緩存中,與主機B的IP地址形成映射關系。
至此,主機A
已經成功獲取到了 主機B
的MAC地址,可以開始進行數據的封裝和發送了。
2.2.6 數據傳輸
一旦獲得了目標MAC地址,主機A
就可以將數據封裝成幀,并將其發送到網絡上。這個幀包含了源MAC地址(主機A的MAC地址)、目標MAC地址(主機B的MAC地址)以及要傳輸的數據。
2.2.7 ARP緩存的更新和管理
ARP緩存
中的條目通常有一個生存時間(TTL),過期后會被自動刪除。這樣,當網絡拓撲結構發生變化時(例如,主機B的MAC地址發生變化),ARP緩存中的舊條目會被自動清除,新的ARP請求和響應過程會重新進行,以確保數據的正確傳輸。
此外,ARP緩存還可以手動清除或刷新,以適應網絡環境的變化。
綜上所述,ARP協議的工作流程是一個動態的過程,它通過ARP請求和響應來解析IP地址與MAC地址的映射關系,從而實現數據的正確傳輸。
2.3 ARP 數據報的格式
- 注意到源 MAC 地址、目的 MAC 地址在以太網首部和 ARP 請求中各出現一次,對于鏈路層為以太網的情況是多余的,但如果鏈路層是其它類型的網絡則有可能是必要的。
- 硬件類型指鏈路層網絡類型,1 為以太網;
- 協議類型指要轉換的地址類型,0x0800 為 IP 地址;
- 硬件地址長度對于以太網地址為 6 字節;
- 協議地址長度對于 IP 地址為 4 字節;
- op 字段為 1 表示 ARP 請求,op 字段為 2 表示 ARP 應答。
👥總結
本篇博文對 【LInux網絡】數據鏈路層 - 深度理解以太網和APR協議 做了一個較為詳細的介紹,不知道對你有沒有幫助呢
覺得博主寫得還不錯的三連支持下吧!會繼續努力的~