IP 地址與MAC硬件地址


IP 地址與MAC硬件地址

我們都知道數據通信要使用IP地址加MAC地址,兩個地址缺一不可,下為原理圖:

image-20200121162634816

1.下面介紹計算機A與計算機B通信的過程

image-20200121163236890

  • 交換機基於數據幀的MAC地址轉發數據幀,路由器基於數據包的IP地址轉發數據包;
  • 數據包在傳輸過程不變,經過網絡設備數據幀要用新的物理層(MAC)地址重新包裝;
  • MAC地址決定了數據幀在網絡設備中轉過程中下一站由哪個設備接收,而IP地址決定了數據包的起0點和終點。

例如圖中的使用M表示MAC地址,由於計算機A所處的10.0.0.2網段與計算機B所處的12.0.0.2網段不同,所以A與B不能直接通信,需要借助路由器中轉。

首先,計算機發出數據幀1,里面標明了源IP地址與目標IP地址、 源MAC地址與目標MAC地址,這樣數據幀1就可以通過交換機准確傳輸到目標MAC地址M2,即路由器Router1處;

路由器通過查找路由表確定到12.0.0.2的網段的路徑,並把該數據幀發現通向該路徑的M3接口處,M3接口再對數據幀1進行封裝改變源MAC地址和目標MAC地址,IP地址不變並發出數據幀2;

以此類推,最終數據幀傳輸到12.網段的路由器上,該路由器再通過同網段的交換機把數據幀3發送到計算機B處,完成通信。

注意

  • 我們把數據傳輸過程中數據幀中不變的部分:即數據+IP地址(目標地址與源地址)稱為數據包
  • 數據包加上MAC地址(目標地址與源地址)之后整體稱為數據幀,數據幀中的MAC地址過一個網絡設備變一次。
  • IP地址與MAC地址區別:IP地址決定數據包最終要到達的計算機(終點);MAC地址決定中轉過程中下一站到哪個設備(中轉站)去。

應用

image-20200121170515594

  • 如果在交換機Switch0這個網段中的PC2中安裝代理服務器(比如CCProxy)來控制該網段的其他計算機是否能上網;

  • 當在同一網段中,可以直接通過MAC地址通信,所以PC2中的代理服務器只需要設置本網段中的哪些MAC地址可以上網,就可以實現對本網段中的PC1、 PC2實現上網控制。

  • 當在不同網段時,比如使用PC2控制Switch1這兩個段的所有計算機是否能上網,則在代理服務器中不僅要設置哪些MAC地址能上網,而且還要設置哪些IP地址能上網-。


2.ARP&RARP協議

ARP簡介

  • 不管網絡層使用的是什么協議,在實際網絡的鏈路上傳送數據幀時,最終還是必須使用硬件地址。
  • 每一個主機都設有一個 ARP 高速緩存(ARP cache),里面有所在的局域網上的各主機和路由器的 IP 地址到硬件地址的映射表。
  • 當主機 A 欲向本局域網上的某個主機 B 發送 IP 數據報時,就先在其 ARP 高速緩存中查看有無主機 B 的 IP 地址。如有,就可查出其對應的硬件地址,再將此硬件地址寫入 MAC 幀,然后通過局域網將該 MAC 幀發往此硬件地址。

ARP MAC地址欺騙

前面說過,網絡層一共使用四個協議:IP、 ARP、 ICMP、 IGMP協議。ARP協議負責把IP地址解析成MAC地址,依靠廣播作為解析方式。所以說網上的廣播時避免不了的。

image-20200121213001651

如下圖所示:

image-20200121213945893

四台計算機PC0PC3通過交換機連接在一起,四台計算機的物理地址分別為M1M4;如果PC0的10.0.0.2地址想ping(訪問)PC1的10.0.0.3地址,那么PC0必須知道PC1的MAC地址。

方法為PC0發布一個同網段所有計算機都能收到的廣播,廣播內容為詢問10.0.0.3地址對應的MAC地址。PC1收到之后就會給PC0發送相應的MAC地址信息,PC0就會把收到的該MAC地址當做10.0.0.3的MAC地址。隨后通信發出的數據幀目標MAC地址都為該接收到的MAC地址即M2。

正因為ARP通過廣播解析通信方MAC地址的方式造成了許多的網絡安全問題。比如常說的抓包就是利用ARP協議的這種安全漏洞。

造成安全漏洞的原因為

  • PC1告訴PC0,10.0.0.3對應的MAC地址為M2,PC0收到之后不做驗證就直接確信並使用該MAC地址作為目標MAC地址發送數據了。我們都知道交換機在轉發數據的時候,只會把數據轉發給目標地址不會轉發給其他連接交換機的非目標地址,這樣其他計算機是無法截獲通信信息的。

  • 如果PC3想截獲PC0與PC1之間通信的數據包,當PC0發出廣播詢問目標MAC地址時,PC3也收到了廣播信息,在PC1給PC0發送完正確MAC地址M2后,PC3再向PC0發送錯誤MAC地址M4,由於PC0並不會檢驗收到的目標MAC地址是否正確,所以M4會覆蓋M2成為PC0確信的目標MAC地址。

  • 隨后PC0開始通訊,就會把數據發送到PC3中,PC3再把數據發送給PC1 。通過這樣一個MAC地址欺騙,所有流經MAC地址M1和M2的數據幀都經過了 M4使竊聽數據成為可能。

應用舉例:P2P終結者

image-20200121220644640

如圖所示:四台計算機通過一個交換機連接在一起,再通過一個路由器連接網絡,其中PC3的MAC地址為M2,路由器的MAC地址為M1。正常情況下PC0PC2訪問網絡時,由於網絡與它們本身不在同一個網段上,所以需交由路由器的網關進行中轉,路由器的網關地址為M1;如果PC3想控制PC0PC2的上網帶寬,就可以通過安裝P2P終結者類似的軟件實現。

P2P終結者的原理為:當PC0PC2解析路由器網關地址時,路由器告訴它們是M1,PC3通過MAC地址欺騙再告訴它們假的路由器網關地址M2,這樣PC0PC2包含上網請求的數據包都會發送到假網關地址M2即PC3處(即PC0PC2所有的流量都會經過M2),PC3知道路由器的真實網關地址為M1,PC3先對PC0PC2發來數據包進行處理再把這些數據包轉發給真正的路由器網關地址M1。通過這種方式實現對PC0~PC2上網帶寬的管控。

如果PC0~PC2直接解析路由器網關地址訪問網絡,無論PC3是無法管控它們的上網,所以P2P終結者這些軟件必須配合ARP欺騙來實現。

網絡執法官

image-20200121220644640

網絡執法官的功能為:同一網段內的一台計算機(比如PC3),可以控制其他計算機(比如PC0~PC2)是否能上網,或者其中一台計算機(如PC0)能與哪些計算機通信,不能與哪些計算機通信。

實現原理:當PC3中安裝了網絡執行官軟件后,PC0PC2想訪問網絡並解析路由器網關地址時,PC3告訴它們一個不存在的MAC地址M8;隨后PC0向M8發送數據幀時,交換機收到后經過查找發現M8地址不存在,要求PC0重發數據幀,又查詢不到M8地址,最后該數據幀被丟棄,於是PC0PC2誰也上不了網。

解決方案:安裝ARP防火牆

沿用上圖在PC0中安裝ARP防火牆之后,PC0想訪問網絡並解析路由器網關時,當接收到第一個由路由器發出的真正的網關地址M1時就在PC0中把該地址寫死,之后再接受到其他MAC地址也不覆蓋M1,由此實現防止ARP地址欺騙。

仿真驗證

由於高版本Windows系統如Win7、 Win10對ARP修改操作有所限制,所以使用虛擬機Windows2003仿真。

  • 在命令行窗口輸入命令:
arp -a

image-20200121231851777

可以查看相應計算機連接的多個路由器的網關及其對應的MAC地址。

  • 隨后與其他網絡的一個地址建立通信:
ping 202.99.168.8

image-20200121232302364

發現當前是可以與其他網絡中的地址建立通信的。說明該計算機內緩存的路由器網關對應的物理地址是正確的。

再次查看計算機緩存的網關及其對應MAC地址。

image-20200121233209553

  • 然后修改該路由器網關192.168.80.1對應的MAC地址,即把原來的00-50-56-c0-00-08改為00-50-56-c0-00-09,並再次查看計算機緩存的網關及其對應的MAC地址。

arp -s 192.168.80.1 00-50-56-c0-00-09
arp -a


![image-20200121233402793](https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/4.6IP%E5%9C%B0%E5%9D%80%E4%B8%8EMAC%E7%A1%AC%E4%BB%B6%E5%9C%B0%E5%9D%80/11.png)

可以看出,修改后的網關192.168.80.1對應的MAC地址變為靜態“static”,即以后進行數據通信都以該管理員指定的MAC地址為准,不再使用ARP解析的MAC地址。

* 最后再次與其他網絡的202.99.168.8地址進行通信:

ping 202.99.168.8


![image-20200121234015932](https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/4.6IP%E5%9C%B0%E5%9D%80%E4%B8%8EMAC%E7%A1%AC%E4%BB%B6%E5%9C%B0%E5%9D%80/12.png)

可以發現現在無法建立通信了,這里管理員指定的網關對應MAC相當於上問題到的ARP MAC地址欺騙。不過與同網段的其他計算機還是能通信的,如與192.168.80.12:

ping 192.168.80.12


![image-20200121234257058](https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/4.6IP%E5%9C%B0%E5%9D%80%E4%B8%8EMAC%E7%A1%AC%E4%BB%B6%E5%9C%B0%E5%9D%80/13.png)

**現實案例**

![image-20200121235521492](https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/4.6IP%E5%9C%B0%E5%9D%80%E4%B8%8EMAC%E7%A1%AC%E4%BB%B6%E5%9C%B0%E5%9D%80/14.png)

一家公司的某單位有三台服務器PC0~PC2,其中只有服務器PC2上不了網,其他兩台服務器都能上網。首先排除了物理層的原因,最后確認問題是:PC2沒有正確地解析到網關的MAC地址。如何知道該計算機緩存了錯誤的網關MAC地址呢?可以在能上網的計算機PC1與不能上網的計算機PC2的命令行窗口中都輸入:arp -a,分別查看同一網關對應的MAC地址,通過比較可得知PC1中正確的網關對應MAC地址與PC2中錯誤的網關對應地址。

-- --

### 逆向ARP:RARP

  **RARP**

![image-20200121213001651](https://gitee.com/ahuntsun/BlogImgs/raw/master/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/4.6IP%E5%9C%B0%E5%9D%80%E4%B8%8EMAC%E7%A1%AC%E4%BB%B6%E5%9C%B0%E5%9D%80/15.png)

物理地址通過RARP協議得到IP地址的過程叫做地址請求。計算機的IP地址默認是自動獲得的,也就是計算機可通過自身物理地址申請對應的IP地址,這正好與ARP解析相反,這叫做逆向ARP即RARP,計算機請求IP的地址的過程就是逆向ARP的過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM