ICMP/ARP協(xié)議解析及ARP欺騙
ICMP
ICMP(Internet Control Message Protocol)Internet控制報文協(xié)議。它是TCP/IP協(xié)議簇的一個子協(xié)議,用于在IP主機(jī)、路由器之間傳遞控制消息??刂葡⑹侵妇W(wǎng)絡(luò)通不通、主機(jī)是否可達(dá)、路由是否可用等網(wǎng)絡(luò)本身的消息。這些控制消息雖然并不傳輸用戶數(shù)據(jù),但是對于用戶數(shù)據(jù)的傳遞起著重要的作用。
ICMP協(xié)議的功能只要有:
- 確認(rèn)IP包是否到達(dá)目標(biāo)地址
- 通知在發(fā)送過程中IP包被丟棄的原因
ICMP的報文分為兩類,一類是ICMP詢問報文;一類是ICMP差錯報告報文
常見ICMP類型
不發(fā)送ICMP差錯報文的情況:
- 對于第一個ip分片后的所有ip分片報文不發(fā)送ICMP差錯報文
- 對具有組播地址的數(shù)據(jù)報不發(fā)送ICMP報文
- 對具有特殊地址(127.0.0.0或0.0.0.0)不發(fā)送ICMP差錯報文
ICMP 協(xié)議多應(yīng)用在 ping 和 tracert 命令:
- ping 命令使用 ICMP 回送請求和應(yīng)答報文:在網(wǎng)絡(luò)可達(dá)性測試中使用的分組網(wǎng)間探測命令 ping 能產(chǎn)生 ICMP 回送請求和應(yīng)答報文。目的主機(jī)收到 ICMP 回送請求報文后立刻回送應(yīng)答報文,若源主機(jī)能收到 ICMP 回送應(yīng)答報文,則說明到達(dá)該主機(jī)的網(wǎng)絡(luò)正常。
- 路由分析診斷 tracert 使用了 ICMP時間超過報文:tracert 命令主要用來顯示數(shù)據(jù)包到達(dá)目的主機(jī)所經(jīng)過的路徑。通過執(zhí)行一個 tracert 到對方主機(jī)的命令,返回數(shù)據(jù)包到達(dá)目的主機(jī)所經(jīng)歷的路徑詳細(xì)信息,并顯示每個路徑所消耗的時間。
舉個例子:
ICMP Destination Unreachalbe
看下回送請求和回送應(yīng)答的報文
icmp request
icmp reply
ARP協(xié)議
地址解析協(xié)議(Address Resolution Protocol),只要通過目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址。
通信過程:
- 主機(jī)A要和主機(jī)B進(jìn)行通信,首先要知道主機(jī)B的mac地址,所以會發(fā)送ARP廣播
- 其他主機(jī)收到后,發(fā)現(xiàn)找的不是自己,就會丟棄
- 主機(jī)B拆包后,發(fā)現(xiàn)找的是自己,會進(jìn)行單播回應(yīng),并記錄在自己的ARP緩存表中
ARP解析
ARP表
代理ARP
代理ARP一般就是通過網(wǎng)關(guān)設(shè)備,使用自己的 MAC 地址來對另一設(shè)備的ARP請求作出應(yīng)答。
為什么需要代理ARP?
先要了解,路由器的重要功能之一就是隔離廣播域,阻止廣播包擴(kuò)散,否則會造成網(wǎng)絡(luò)風(fēng)暴。
ARP請求是個廣播包,如果目標(biāo)地址在同一個局域網(wǎng)內(nèi),就會收到應(yīng)答。但是如果目標(biāo)地址不在同一個局域網(wǎng),該如何處理?路由器就提供了代理ARP解決這個問題。
代理ARP
兩臺主機(jī)PC1和PC2,PC1發(fā)送ARP請求PC2的MAC地址時,由于路由器不轉(zhuǎn)發(fā)廣播包,ARP請求只能到達(dá)路由器。如果路由器啟用了代理ARP功能,并知道PC2屬于它連接的網(wǎng)絡(luò),那么路由器就用自己接口的MAC地址代替PC2的MAC地址來對主機(jī)PC1進(jìn)行ARP應(yīng)答。
RARP協(xié)議
反向地址轉(zhuǎn)換協(xié)議(Reverse Address Resolution Protocol)允許局域網(wǎng)的物理機(jī)器從網(wǎng)關(guān)服務(wù)器的ARP表或者緩存上請求其 IP 地址。即:根據(jù)其MAC地址尋找IP地址。
RARP
免費ARP
在獲取或變更IP地址時,向外發(fā)出一個ARP,但請求的目標(biāo)IP為本地。
一個主機(jī)可以通過它來確定另一個主機(jī)是否設(shè)置了相同的 IP地址。正常情況下發(fā)送免費ARP請求不會收到ARP應(yīng)答,如果收到了一個ARP應(yīng)答,則說明網(wǎng)絡(luò)中存在與本機(jī)相同的IP地址的主機(jī),發(fā)生了地址沖突。
ARP欺騙
通過廣播向局域網(wǎng)的其他主機(jī)廣播一個偽造的網(wǎng)關(guān)MAC地址和IP地址對應(yīng)表,局域網(wǎng)其他主機(jī)收到這個偽造的信息之后就會更新自己的ARP表。這樣,當(dāng)這些主機(jī)向外發(fā)送報文時,雖然會根據(jù)正確的網(wǎng)關(guān)的IP地址發(fā)包,但實際上卻發(fā)送到了一個錯誤的MAC地址上,導(dǎo)致數(shù)據(jù)包無法發(fā)送出去,從而出現(xiàn)無法上網(wǎng)等情況。
可以通過設(shè)置靜態(tài)的MAC->IP對應(yīng)表,不再接收廣播收到的ARP信息。