目錄
資料鏈路層
1. 認識以太網
?1.1 以太網幀格式
1.2 認識MAC地址
2. 對比理解MAC地址和IP地址
3. 認識MTU
3.1 MTU對IP協議的影響
3.2 MTU對UDP協議的影響
3.3 MTU對于TCP協議的影響
4. ARP協議
4.1 ARP協議的作用
4.2 ARP協議的作業流程
資料鏈路層

假設老濕要回老家
1. 規劃總路線

2. 每個相鄰節點之間如何傳輸資料

1. 認識以太網
"以太網" 不是一種具體的網路, 而是一種技術標準; 既包含了資料鏈路層的內容, 也包含了一些 物理層的內容. 例如: 規定了網路拓撲結構, 訪問控制方式, 傳輸速率等
例如以太網中的網線必須使用雙絞線; 傳輸速率有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地址)



2. 對比理解MAC地址和IP地址
IP地址描述的是路途總體的 起點 和 終點
MAC地址描述的是路途上的每一個區間的起點和終點

3. 認識MTU
MTU相當于發快遞時對包裹尺寸的限制. 這個限制是不同的資料鏈路對應的物理層, 產生的限制
以太網幀中的資料長度規定最小46位元組,最大1500位元組,ARP資料包的長度不夠46位元組,要在后面補填充位
最大值1500稱為以太網的最大傳輸單元(MTU),不同的網路型別有不同的MTU
如果一個資料包從以太網路由到撥號鏈路上,資料包長度大于撥號鏈路的MTU了,則需要對資料 包進行分片(fragmentation)
不同的資料鏈路層標準的MTU是不同的
3.1 MTU對IP協議的影響
由于資料鏈路層MTU的限制, 對于較大的IP資料包要進行分包
將較大的IP包分成多個小包, 并給每個小包打上標簽
每個小包IP協議頭的 16位標識(id) 都是相同的
每個小包的IP協議頭的3位標志欄位中, 第2位置為0, 表示允許分片, 第3位來表示結束標記(當前是否是最后一個小包, 是的話置為1, 否則置為0)
到達對端時再將這些小包, 會按順序重組, 拼裝到一起回傳給傳輸層
一旦這些小包中任意一個小包丟失 , 接收端的重組就會失敗. 但是IP層不會負責重新傳輸資料
3.2 MTU對UDP協議的影響
一旦UDP攜帶的資料超過1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就會在網路層分成多個IP資料報
這多個IP資料報有任意一個丟失, 都會引起接收端網路層重組失敗. 那么這就意味著, 如果UDP 資料報在網路層被分片, 整個資料被丟失的概率就大大增加了
3.3 MTU對于TCP協議的影響
TCP的一個資料報也不能無限大, 還是受制于MTU. TCP的單個資料報的最大訊息長度, 稱為 MSS(Max Segment Size)
TCP在建立連接的程序中, 通信雙方會進行MSS協商
最理想的情況下, MSS的值正好是在IP不會被分片處理的最大長度(這個長度仍然是受制于資料 鏈路層的MTU)
雙方在發送SYN的時候會在TCP頭部寫入自己能支持的MSS值
然后雙方得知對方的MSS值之后, 選擇較小的作為最終MSS
MSS的值就是在TCP首部的40位元組變長選項中(kind=2)
4. ARP協議
ARP不是一個單純的資料鏈路層的協議, 而是一個介于資料鏈路層和網路層之間的協議
4.1 ARP協議的作用
ARP協議建立了主機 IP地址 和 MAC地址 的映射關系
在網路通訊時,源主機的應用程式知道目的主機的IP地址和埠號,卻不知道目的主機的硬體地址
資料包首先是被網卡接收到再去處理上層協議的,如果接收到的資料包的硬體地址與本機不符, 則直接丟棄
因此在通訊前必須獲得目的主機的硬體地址
4.2 ARP協議的作業流程
發送資料的時候:最開始構造的是IP資料包,然后才是資料鏈路層的資料幀,最開始構造的是IP資料包,然后才是資料鏈路層的資料幀
路由器就需要把當前的資料包,轉發到下一個設備上~~
如何獲取到下一個設備是誰?那就需要知道下一個設備的mac地址~~ (明確了mac地址,才能構造出一個具體的以太網資料幀)
獲取下一個設備是誰,先獲取到下一個設備的IP(查路由表就能確定)


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293732.html
標籤:其他
下一篇:Linux常用指令(小結)
