目錄
一. 以太網
1.1 認識以太網
1.2 網卡與以太網
1.3?以太網幀格式
二. 認識MAC地址
三. MAC地址 與 IP地址 的區別
4.1 定義
4.2 分配方式
4.3 工作層次
4.4 地址格式
4.5?尋址方式
四. ARP協議?
4.1 引入?
4.2 ARP的概念
4.3 ARP工作原理
五. MTU 與 MSS?
?5.1 MTU?
5.2 MSS?
?5.3 TCP分段與IP分片?
5.4 避免分片?
一. 以太網
1.1 認識以太網
? ?以太網(Ethernet)不是一種具體的網絡,而是一種廣泛使用的局域網(LAN)技術,它規定了物理層和數據鏈路層的通信協議。以太網可以使用多種傳輸介質,包括同軸電纜、雙絞線和光纖,就像是家里的電線系統,只不過它是用來連接電腦和其他設備的。
? ?路由器通過以太網線連接到調制解調器(俗稱“貓”,“光貓”-->“光纖調制解調器”),然后通過這個調制解調器連接到互聯網,這樣就能上網了。
舉個例子:
? ?如果你家里有很多電器,比如燈泡、電視和冰箱,它們都需要用電來工作。電線就是連接這些電器和電源的一個通道,讓電能夠從電源傳到每個電器。以太網也是這樣,它是一種通道,讓電腦和其他設備能夠互相“說話”和交換信息。?
1.2 網卡與以太網
? ?網卡(Network Interface Card,簡稱NIC)是一種硬件設備,用于將計算機連接到計算機網絡,使計算機能夠通過該網絡與其他計算機進行通信。網卡通常插在計算機的主板擴展槽中,或者通過USB接口連接,現在很多計算機的網卡都是直接集成在主板上。
? ?網卡與以太網的關系,可以這樣理解:以太網是一種常見的局域網技術,而網卡就是用來實現電腦與以太網連接的“橋梁”。簡單來說,如果你想用電腦上網,就需要通過網卡連接到以太網,這樣才能上網。就好比你想打電話給朋友,需要先拿起電話(網卡),然后通過電話線(以太網)連接到對方。
? ?網卡是實現以太網通信的關鍵組件之一,提供了計算機與以太網傳輸介質(如雙絞線、光纖等)之間的物理接口,使得計算機能夠按照以太網的標準進行網絡通信。沒有網卡,計算機就無法直接連接到以太網網絡。
1.3?以太網幀格式
二. 認識MAC地址
? ?MAC地址,全稱媒體訪問控制地址(Media Access Control Address),是一個唯一的標識符,用來定義網絡設備的位置。每個網絡設備(比如網卡、路由器、交換機等)在出廠時都會被分配一個唯一的MAC地址。?在局域網(比如家里的網絡)中,設備之間通過MAC地址來直接通信。
? ?MAC地址通常由六組兩位的十六進制數字組成,這些數字通過冒號或者短橫線分隔。例如:00:1A:2B:3C:4D:5E 或者 00-1A-2B-3C-4D-5E。
? ?MAC地址在網卡出廠時就確定了,不能修改,是唯一的(虛擬機中的MAC地址不是真實的MAC地址,可能會沖突;也有些網卡支持用戶配置MAC地址)?
三. MAC地址 與 IP地址 的區別
4.1 定義
- MAC地址:是一個唯一的硬件地址,它被燒錄在網絡接口卡(NIC)上,用于在局域網(LAN)中標識硬件設備。
- IP地址:是一個邏輯地址,用于在網絡中標識設備的網絡位置,可以是局域網、廣域網或互聯網。
4.2 分配方式
- MAC地址:通常是固定的,由網絡接口卡的制造商分配,并在生產過程中燒錄到硬件中。
- IP地址:可以是靜態分配的,也可以是動態分配的(通過DHCP服務器)。IP地址可以根據網絡配置的變化而改變。
4.3 工作層次
- MAC地址:工作在數據鏈路層(OSI模型的第二層),負責在同一網絡段內,相鄰設備之間傳輸數據幀。(微觀)
- IP地址:工作在網絡層(OSI模型的第三層),負責在不同的網絡之間路由數據包,進行路由規劃。(宏觀)
4.4 地址格式
- MAC地址:通常6個字節表示,MAC地址當前仍然可以給每個設備,都分配一個唯一的地址值。
- IP地址:對于IPv4,使用4個字節表示;對于IPv6,使用16個字節表示
4.5?尋址方式
- MAC地址:用于直接在局域網內尋找設備,通常是通過ARP將IP地址解析為MAC地址。以太網數據幀里面的MAC地址隨著轉發的過程,源MAC和目標MAC都會時刻發生改變(每經過一個交換機/路由器都會發生變化)MAC地址描述的是路途上的每一個區間的起點和終點
- IP地址:用于在網絡層尋址和路由數據包,進行路由規劃,確保數據能夠從源地址傳輸到目的地址。?IP地址描述的是路途總體的起點和終點
四. ARP協議?
4.1 引入?
? ?ARP協議就像是一個電話簿,幫助電腦在網絡中找到其他電腦的"家門號碼"。想象一下,你在一家大公司里,想要找到同事張三的家,但是你只知道他的名字(IP地址),不知道他家的具體地址(MAC地址)。這時候,你會在公司的大廳(局域網)里大聲喊:“張三,你在哪?告訴我你家地址!”(發送ARP請求)。張三聽到后,會告訴你他家的地址(發送ARP回復)。這樣,下次你想找張三的時候,就可以直接按地址去找他了,而不需要再大聲喊叫。
? ?簡單來說,ARP協議就是電腦之間相互詢問和告知彼此物理地址(MAC地址)的一種方式,這樣它們就能在網絡中正確地發送信息了。
4.2 ARP的概念
? ?ARP(Address Resolution Protocol)協議工作在OSl模型的第二層,即數據鏈路層。它的主要功能是將網絡層(第三層)使用的IP地址解析為數據鏈路層(第二層)使用的MAC地址。
? ?在發送數據包時,網絡層的IP協議負責確定數據包的目標IP地址,但是數據鏈路層的以太網協議需要知道目標的MAC地址才能在局域網內傳輸數據包。ARP協議就在這個轉換過程中起到橋梁作用,它通過查詢局域網內的設備來獲取目標IP地址對應的MAC地址,從而確保數據包能夠被正確地發送到目的地。?
4.3 ARP工作原理
1. 解析請求:當一個設備需要向局域網內的另一個設備發送數據時,它會首先檢查自己的ARP緩存(一個內存表,用于存儲IP地址與MAC地址的映射關系)
? ?如果目標IP地址的MAC地址不在緩存中,源設備將發送一個ARP請求,廣播到局域網上的所有設備。
(ARP請求包含以下信息:a. 發送設備的IP地址和MAC地址? ? b. 目標設備的IP地址? ? c. 一個標志字段,表示這是一個ARP請求)
2. 解析響應:局域網上的所有設備都會收到這個ARP請求,但只有目標IP地址對應的設備會響應,響應設備會發送一個ARP回復,其中包含其MAC地址。
3. 更新ARP緩存:源設備收到ARP回復后,會將目標IP地址和對應的MAC地址存儲在自己的ARP緩存中,以便將來使用。
4. 數據傳輸:現在源設備知道了目標設備的MAC地址,它就可以將數據幀發送到局域網上的正確設備。
ARP的正常工作流程
- 設備A想要與設備B通信,但只知道設備B的IP地址,不知道MAC地址。
- 設備A會在局域網內廣播一個ARP請求:“誰是IP地址X的擁有者,請告訴我你的MAC地址。”
- 設備B收到這個請求后,會回復一個ARP響應,告訴設備A自己的MAC地址。
- 設備A收到設備B的MAC地址后,就可以開始通信了。?
ARP欺騙(攻擊行為)
? ?攻擊者發送偽造的ARP響應給局域網中的設備,告訴它們:“我是IP地址Y的擁有者,我的MAC地址是Z。”? 這樣其他設備就會錯誤地將原本發送給IP地址Y的數據發送給攻擊者的MAC地址。攻擊者可以攔截、修改或丟棄這些數據。
ARP協議可以讓當前設備獲取到周圍設備上的IP地址和MAC地址之間的映射關系。
- IP協議路由轉發的過程是拿著 “IP地址” 進行路由查表,得到的是 “網絡接口”(抽象的概念);
- ARP協議就是將“網絡接口”轉換成更具體的MAC地址,知道是具體的某個設備(IP地址 --> MAC地址)
網絡接口
1. 定義:
- 網絡接口指的是網絡設備的物理或邏輯端口,用于設備與網絡之間的連接。例如,計算機上的以太網端口、無線網卡或者虛擬網絡接口。
2. 與IP地址的關系:
- 網絡接口使用IP地址來發送和接收數據包。當一個設備想要與另一個設備通信時,它會將數據包發送到目標設備的IP地址。
- 每個網絡接口都需要至少一個IP地址來在網絡上進行通信。一個網絡接口可以配置一個或多個IP地址,這取決于網絡配置和需求。
- 在配置網絡接口時,IP地址會被綁定到該接口上,這樣當數據包發送到該IP地址時,網絡設備就知道應該通過哪個接口來處理這些數據。
- 網絡接口負責將IP地址轉換為MAC地址(通過ARP協議),以便在數據鏈路層上進行實際的幀傳輸。?
通過ARP協議,就可以得到網絡接口與MAC地址的映射關系表:?
五. MTU 與 MSS?
?5.1 MTU?
? ? MTU(Maximum Transmission Unit),是指網絡中一個數據包的最大傳輸單元,也就是一個數據包能夠攜帶的最大數據量。
MTU的作用:
? ?MTU的大小決定了網絡設備在發送數據時是否需要將數據分割成多個較小的數據包。如果數據包超過了MTU的大小,它就需要被分割,這個過程稱為分片(fragmentation)。分片會增加網絡的開銷,降低傳輸效率,還可能因為分片導致數據包丟失。
以太網 MTU:以太網MTU通常指的是在以太網(局域網技術)中,一個網絡幀可以攜帶的最大數據量,以太網幀的負載就是以太網MTU。對于標準的以太網,這個值通常是1500字節。
IP MTU:IP MTU指的是在IP層,IP數據包的大小就是 IP MTU。這通常比以太網MTU要小,因為它需要為IP頭部預留空間,可以說以太網MTU相當于IPMTU的一個容器,但IP MTU和以太網MTU通常會是一樣的大小。
5.2 MSS?
? ?MSS(Maximum Segment Size)是指在一個TCP分段(segment)中,除去TCP頭部的數據部分的最大大小。?MSS是在TCP連接建立時,兩端協商的一個值,它決定了在TCP層每個數據包可以攜帶的有效數據量。
MSS的作用:
? ?MSS是為了確保TCP數據包在加上TCP頭部后,整體大小不會超過網絡的MTU,從而避免IP層對數據包進行分片。通常,MSS的值會設置為MTU - IP頭部 - TCP頭部。通過適當設置MSS,可以優化網絡性能,減少數據包分片的幾率,提高網絡的傳輸效率。
舉個例子:
- 假設以太網的MTU是1500字節。
- IP頭部通常是20字節,TCP頭部通常是20字節。
- 那么MSS可以是1500-20(IP頭部)-20(TCP頭部)=1460字節。?
?5.3 TCP分段與IP分片?
? ?如果發送了應用層發送了一個超大的數據,TCP就會進行分段(TCP Segmentation),分成多個TCP段發送,在分段的時候會考慮到網絡層和數據鏈路層各自的職責。換句話說,TCP分段就是為了后面的IP不用再分片,因此TCP需要確保MSS的值不會過大。
?? ?所以,在TCP三次握手階段,客戶端會和服務器進行協商,在協商MSS之前,兩邊都會比較自己的MSS緩沖區大小,以及MTU大小。如果客戶端通知的MSS是1460,服務端通知的是1440,則會選擇較小值1440,這樣可以最大程度地避免數據包在中途被分片。?
? ?但是,數據包依舊可能會遇到鏈路上的設備接口低于MTU低于1500的路由,此時可能會進行IP分片(IP?Segmentation)。
? ?假如,你在上網的時候,數據包經過了一個只支持MTU為576字節的接口,這個時候數據包會被迫分為三份(具體分數看數據包大小),并且在每個數據包加上IP首部。如果原本只有20字節的IPv4首部,那么對于三層來說就額外多了40字節(20+20)。
? 也許你會覺得40字節也不會擠壓多少帶寬,但如果這三個數據包丟了其中一個呢?此時會進行“重傳”,但負責重傳的是TCP或者4層以上進行,而不是網絡層的IP進行重傳。IP協議本來就是不可靠傳輸,因此其中一個IP分片丟失了,需要重傳所有分片,也就是重傳那一段TCP數據,傳輸的效率大幅度降低,而且有時候分片更容易導致丟包。
? ?在IPv4協議的首部,有三個區域在分片時候起到重要作用。
- 標識:標記分片,方便重組這些分片。
- 片偏移:在重組時需要根據片偏移進行排序。
- 標志:在分片的時候,其中的MF標志位會用到,MF是more fragment的縮寫。當MF標志位為1時,表示后面還有分片。
? ?這里的問題是,如果路由設備收到中間的一個分片,可以用MF標志位判斷出后面是否還有分片,但不知道后面還有多少分片。而路由設備的緩沖區是有限的,分片太多,很可能會因為緩沖區的限制,導致部分分片被丟棄。
5.4 避免分片?
? ?處于三層的路由設備,職責就是更快更高效的傳輸數據包,分片會增加路由設備的算力和內存的負擔。為了避免分片,很多路由設備會有一種叫MSS?Climbing的功能。路由設備在看到TCP的SYN或者SYN/ACK包的時候,會把里面MSS的值和鏈路MTU進行對比。如果MSS值大于MTU值,很明顯就會導致分片。因此,就會降低MSS的值以適應鏈路MTU。
? ?但是鏈路上的MTU如何被確定呢?就可以用到?PMTUD(Path MTU?Discovery,路徑最大傳輸單元發現)這項技術了。
? ?IPv4首部標志位里有個DF標志位,DF就是Don't Fragment的意思。
? ?如果設置了DF標志位,鏈路上的設備碰到超過MTU的數據包,不會進行分片處理,而是直接丟掉這個包,并且返回消息,告訴發送方需要進行分片,這樣發送方就需要降低MTU,然后再次發送,直到發現MTU的最小值。
? ?但是,在IPv6就不一樣了,IPv6只允許發送源對數據包進行切分,不允許鏈路上的設備進行分片。
? ?因此,IPv6不需要另外設置。如果數據包太大,鏈路上的設備直接丟包,并且返回消息告訴對方太大,這樣也是可以發現MTU最小值的。