日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ARP,這個隱匿在計(jì)網(wǎng)背后的男人

本文轉(zhuǎn)載自微信公眾號「程序員cxuan」,作者cxuan 。轉(zhuǎn)載本文請聯(lián)系程序員cxuan公眾號。

成都創(chuàng)新互聯(lián)是一家成都網(wǎng)站建設(shè)、網(wǎng)站制作,提供網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,按需設(shè)計(jì),網(wǎng)站開發(fā)公司,從2013年成立是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開發(fā),后臺程序制作以及后期項(xiàng)目運(yùn)營并提出專業(yè)建議和思路。

只要確定了 IP 地址后,就能夠向這個 IP 地址所在的主機(jī)發(fā)送數(shù)據(jù)報(bào),這是我們所熟知的事情。但是再往深了想,IP 地址只是標(biāo)識網(wǎng)絡(luò)層的地址,那么在網(wǎng)絡(luò)層下方數(shù)據(jù)鏈路層是不是也有一個地址能夠告訴對方主機(jī)自己的地址呢?是的,這個地址就是MAC 地址。

認(rèn)識 MAC 地址

MAC 地址的全稱是 Media Access Control Address,譯為媒體訪問控制地址,它是網(wǎng)絡(luò)上以太網(wǎng)或網(wǎng)絡(luò)適配器的唯一標(biāo)識符。MAC 地址能夠區(qū)分不同的網(wǎng)絡(luò)接口,并用于多種網(wǎng)絡(luò)技術(shù),尤其是大多數(shù) IEEE 802 網(wǎng)絡(luò)。

MAC 地址也稱為物理地址,硬件地址和老化地址。

MAC 地址主要用于識別數(shù)據(jù)鏈路中互聯(lián)的節(jié)點(diǎn),如下圖所示:

MAC 地址長 48 bit,在使用網(wǎng)卡(NIC) 的情況下,MAC 地址一般都會燒入 ROM 中。因此,任何一個網(wǎng)卡的 MAC 地址都是唯一的。MAC 地址的結(jié)構(gòu)如下:

MAC 地址中的 3 - 24 位表示廠商識別碼,每個 NIC 廠商都有特定唯一的識別數(shù)字。25 - 48 位是廠商內(nèi)部為識別每個網(wǎng)卡而用。因此,可以保證全世界不會有相同 MAC 地址的網(wǎng)卡。

MAC 地址也有例外情況,即 MAC 地址也會有重復(fù)的時候,但是問題不大,只要兩個 MAC 地址是屬于不同的數(shù)據(jù)鏈路層就不會出現(xiàn)問題。

ARP 是什么

ARP 協(xié)議的全稱是 Address Resolution Protocol(地址解析協(xié)議),它是一個通過用于實(shí)現(xiàn)從 IP 地址到 MAC 地址的映射,即詢問目標(biāo) IP 對應(yīng)的 MAC 地址 的一種協(xié)議。ARP 協(xié)議在 IPv4 中極其重要。

注意:ARP 只用于 IPv4 協(xié)議中,IPv6 協(xié)議使用的是 Neighbor Discovery Protocol,譯為鄰居發(fā)現(xiàn)協(xié)議,它被納入 ICMPv6 中。

簡而言之,ARP 就是一種解決地址問題的協(xié)議,它以 IP 地址為線索,定位下一個應(yīng)該接收數(shù)據(jù)分包的主機(jī) MAC 地址。如果目標(biāo)主機(jī)不在同一個鏈路上,那么會查找下一跳路由器的 MAC 地址。

ARP 的工作機(jī)制

下面我們探討一下 ARP 的工作機(jī)制是怎樣的。假設(shè) A 和 B 位于同一鏈路,不需要經(jīng)過路由器的轉(zhuǎn)換,主機(jī) A 向主機(jī) B 發(fā)送一個 IP 分組,主機(jī) A 的地址是 192.168.1.2 ,主機(jī) B 的地址是 192.168.1.3,它們都不知道對方的 MAC 地址是啥,主機(jī) C 和 主機(jī) D 是同一鏈路的其他主機(jī)。

主機(jī) A 想要獲取主機(jī) B 的 MAC 地址,通過主機(jī) A 會通過廣播 的方式向以太網(wǎng)上的所有主機(jī)發(fā)送一個 ARP 請求包,這個 ARP 請求包中包含了主機(jī) A 想要知道的主機(jī) B 的 IP 地址的 MAC 地址。

主機(jī) A 發(fā)送的 ARP 請求包會被同一鏈路上的所有主機(jī)/路由器接收并進(jìn)行解析。每個主機(jī)/路由器都會檢查 ARP 請求包中的信息,如果 ARP 請求包中的目標(biāo) IP 地址 和自己的相同,就會將自己主機(jī)的 MAC 地址寫入響應(yīng)包返回主機(jī) A。

由此,可以通過 ARP 從 IP 地址獲取 MAC 地址,實(shí)現(xiàn)同一鏈路內(nèi)的通信。

如果是不同鏈路怎么辦呢?

這就要使用到 代理 ARP 了,通常 ARP 會被路由器隔離,但是采用代理 ARP (ARP Proxy) 的路由器可以將 ARP 請求轉(zhuǎn)發(fā)給臨近的網(wǎng)段。使多個網(wǎng)段中的節(jié)點(diǎn)像是在同一網(wǎng)段內(nèi)通信。

ARP 緩存

現(xiàn)在你知道了發(fā)送一次 IP 分組前通過發(fā)送一次 ARP 請求就能夠確定 MAC 地址。那么是不是每發(fā)送一次都得經(jīng)過廣播 -> 封裝 ARP 響應(yīng) -> 返回給主機(jī)這一系列流程呢?

想想看,瀏覽器是如何做的呢?瀏覽器內(nèi)置了緩存能夠緩存你最近經(jīng)常使用的地址,那么 ARP 也是一樣的。ARP 高效運(yùn)行的關(guān)鍵就是維護(hù)每個主機(jī)和路由器上的 ARP 緩存(或表)。這個緩存維護(hù)著每個 IP 到 MAC 地址的映射關(guān)系。通過把第一次 ARP 獲取到的 MAC 地址作為 IP 對 MAC 的映射關(guān)系到一個 ARP 緩存表中,下一次再向這個地址發(fā)送數(shù)據(jù)報(bào)時就不再需要重新發(fā)送 ARP 請求了,而是直接使用這個緩存表中的 MAC 地址進(jìn)行數(shù)據(jù)報(bào)的發(fā)送。每發(fā)送一次 ARP 請求,緩存表中對應(yīng)的映射關(guān)系都會被清除。

通過 ARP 緩存,降低了網(wǎng)絡(luò)流量的使用,在一定程度上防止了 ARP 的大量廣播。

一般來說,發(fā)送過一次 ARP 請求后,再次發(fā)送相同請求的幾率比較大,因此使用 ARP 緩存能夠減少 ARP 包的發(fā)送,除此之外,不僅僅 ARP 請求的發(fā)送方能夠緩存 ARP 接收方的 MAC 地址,接收方也能夠緩存 ARP 請求方的 IP 和 MAC 地址,如下所示:

不過,MAC 地址的緩存有一定期限,超過這個期限后,緩存的內(nèi)容會被清除。

我們可以在 Linux 或者 Windows 中使用 arp 命令查看 ARP 緩存。選項(xiàng) -a 用于顯示兩個系統(tǒng)緩存中所有的緩存項(xiàng)。

在 Linux 中使用 arp 查詢緩存

主要包含五項(xiàng):

  • 主機(jī)名 --- 對應(yīng)一個 IP 地址
  • 硬件地址類型
  • 硬件地址
  • 標(biāo)志
  • 本地網(wǎng)絡(luò)接口

標(biāo)志主要分為三類: C 、M 或 P,C 表示的是由 ARP 協(xié)議動態(tài)學(xué)習(xí)。M 類可以通過 arp -s 增加一條。P 類表示的是 發(fā)布,對于任何 P 類項(xiàng)目,主機(jī)對輸入的 ARP 請求都返回一個 ARP 響應(yīng)。這個選項(xiàng)用于配置代理 ARP。

比如我們在 Windows 中進(jìn)行 ARP 緩存查詢

Windows 中的 ARP 程序顯示了 IPv4 的地址,它的接口是十六進(jìn)制數(shù),Windows 版本還指出地址是手動輸入還是 ARP 動態(tài)學(xué)習(xí)的。在上面的例子中,既有靜態(tài)的也有動態(tài)的。48 位的 MAC 地址被顯示為 6 個十六進(jìn)制數(shù),在 Linux 中使用 : 號,在 Windows 中使用 - 進(jìn)行分隔。

ARP 結(jié)構(gòu)

我們上面說到,ARP 對想要知道 MAC 地址的目標(biāo)主機(jī)會首先發(fā)送 ARP 請求,那么這個請求中都攜帶哪些信息呢?下面 cxuan 就來和你聊一下。下面是在以太網(wǎng)中轉(zhuǎn)換一個 IPv4 的地址常用的 ARP 請求或響應(yīng)的報(bào)文格式。

前面 14 個字節(jié)構(gòu)成標(biāo)準(zhǔn)以太網(wǎng)的首部,前兩個字段 DST 和 SRC 分別表示 以太網(wǎng)的目的地址 和 以太網(wǎng)的源地址,以太網(wǎng)的目的地址如果是 ff:ff:ff:ff:ff:ff 全部為 1 表示廣播地址,在同一廣播域中的所有以太網(wǎng)接口可以接收這些幀。后面緊跟著的是 ARP 請求的長度/類型,ARP 請求 和 ARP 應(yīng)答這個值為 0x0806。

  • 硬件類型表示硬件地址的類型,硬件地址常見的有 MAC 物理或者以太網(wǎng)地址,對于以太網(wǎng)來說,此值為 1。
  • 協(xié)議類型 指出映射的協(xié)議地址類型,對于 IPv4 地址,這個值是 0x0800。
  • 硬件大小和 協(xié)議大小 分別指出硬件地址和協(xié)議地址的字節(jié)數(shù)。對于以太網(wǎng)中使用 IPv4 的 ARP 請求或應(yīng)答,它們的值分別是 6 和 4。
  • Op 字段指出如果是 ARP 請求,Op = 1,ARP 應(yīng)答 ,Op = 2,RARP 請求 Op = 3,RARP 應(yīng)答,Op = 4。
  • 緊跟在 Op 之后的是 發(fā)送方硬件地址(MAC 地址),發(fā)送方的協(xié)議地址(IPv4 地址),目的硬件地址 和 目的協(xié)議地址。

ARP 抓包實(shí)戰(zhàn)

我們分別演示在 Mac 和 Linux 下的 ARP 報(bào)文的截獲

在 Mac 環(huán)境下,我這邊使用的是 WireShark 進(jìn)行抓包,你可以從官網(wǎng)下載,地址如下:

https://www.wireshark.org/download.html

下載完成后閱讀安裝說明的手冊,閱讀后會發(fā)現(xiàn)需要安裝兩個插件,根據(jù)提示安裝即可,然后我們打開 WireShark ,開始報(bào)文攔截,下面是我解惑的 ARP 數(shù)據(jù)包

這款軟件很好的一個地方是對不同的數(shù)據(jù)包會有不同的顏色標(biāo)識,這點(diǎn)非常好。

然后我們查看 ARP 請求

可以看到,這就是一個完整的 ARP 請求包,我們使用的硬件類型是以太網(wǎng),協(xié)議類型是 IPv4 ,默認(rèn)值是 0x0800,然后硬件大小是 6 個字節(jié),協(xié)議大小占用 2 個字節(jié),Op 的全稱是 Opcode ,Op = 1 表示這是一個 ARP 請求,然后是發(fā)送方的硬件地址和協(xié)議地址,接收方的硬件地址和協(xié)議地址。

ARP 響應(yīng)如下

可以看到 Op = 2,表示這是 ARP 響應(yīng)。

在 Linux 環(huán)境下,你可以使用 tcpdump 截獲 ARP 數(shù)據(jù)包,如果 tcpdump not found 的話,你可以使用 yum install -y tcpdump 安裝。

使用 tcpdump -i ens33 可以打印出在 ens33 地址下的數(shù)據(jù)包,下面是我截取的 ARP 數(shù)據(jù)包。

更多關(guān)于 tcpdump 的用法,你可以參考這篇博客

https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html

大佬寫的很詳細(xì),這里就不再說明了。

ARP 緩存超時

緩存超時通常與 ARP 緩存中的項(xiàng)有關(guān)系,arp 命令可以允許管理員設(shè)置永不超時。ARP 把保存在高速緩存中的每一映射地址都設(shè)置生存時間,一般為 20 分鐘。如果是不完整的映射,那么緩存超時時間為 3 分鐘,不完整的映射通常會強(qiáng)制發(fā)送一條不存在主機(jī)的 ARP 請求。

RARP

與 ARP 相對的,RARP(Reverse Address Resolution Protocol) 是將 ARP 反過來,從 MAC 地址定位 IP 地址的一種協(xié)議,將打印機(jī)服務(wù)器等小型嵌入式設(shè)備接入網(wǎng)絡(luò)時會使用到。

平常我們設(shè)置 IP 地址一般會有兩種方式,手動設(shè)置 和 DHCP 動態(tài)獲取

但是對于嵌入式設(shè)備來說,它沒有任何輸入接口,也無法通過 DHCP 獲取動態(tài)地址。

在這種情況下,就要使用到 RARP 了,你需要準(zhǔn)備一個 RARP 服務(wù)器,在這個服務(wù)器上注冊設(shè)備的 MAC 地址和 IP 地址,然后將設(shè)備接入網(wǎng)絡(luò),設(shè)備會發(fā)出一條 IP 和 MAC 地址的查詢請求給服務(wù)器,服務(wù)器會告訴設(shè)備其 IP 地址和 MAC 地址。

ARP 攻擊

ARP 是一種非常不安全的協(xié)議,目前已經(jīng)有很多涉及 ARP 的攻擊,最主要的就是使用代理 ARP 功能假扮主機(jī),對 ARP 請求作出應(yīng)答,通過偽造 ARP 數(shù)據(jù)包來竊取合法用戶的通信數(shù)據(jù),造成影響網(wǎng)絡(luò)傳輸速率和盜取用戶隱私信息等嚴(yán)重危害。

ARP 攻擊分類

ARP 主要攻擊方式分為下面這幾種

  • ARP 泛洪攻擊:通過向網(wǎng)關(guān)發(fā)送大量 ARP 報(bào)文,導(dǎo)致網(wǎng)關(guān)無法正常響應(yīng)。首先發(fā)送大量的 ARP 請求報(bào)文,然后又發(fā)送大量虛假的 ARP 響應(yīng)報(bào)文,從而造成網(wǎng)關(guān)部分的 CPU 利用率上升難以響應(yīng)正常服務(wù)請求,而且網(wǎng)關(guān)還會被錯誤的 ARP 緩存表充滿導(dǎo)致無法更新維護(hù)正常 ARP 緩存表,消耗網(wǎng)絡(luò)帶寬資源。
  • ARP 欺騙主機(jī)攻擊:ARP 欺騙主機(jī)的攻擊也是 ARP 眾多攻擊類型中很常見的一種。攻擊者通過 ARP 欺騙使得局域網(wǎng)內(nèi)被攻擊主機(jī)發(fā)送給網(wǎng)關(guān)的流量信息實(shí)際上都發(fā)送給攻擊者。主機(jī)刷新自己的 ARP 使得在自己的ARP 緩存表中對應(yīng)的 MAC 為攻擊者的 MAC,這樣一來其他用戶要通過網(wǎng)關(guān)發(fā)送出去的數(shù)據(jù)流就會發(fā)往主機(jī)這里,這樣就會造成用戶的數(shù)據(jù)外泄。
  • 欺騙網(wǎng)關(guān)的攻擊: 欺騙網(wǎng)關(guān)就是把別的主機(jī)發(fā)送給網(wǎng)關(guān)的數(shù)據(jù)通過欺騙網(wǎng)關(guān)的形式使得這些數(shù)據(jù)通過網(wǎng)關(guān)發(fā)送給攻擊者。這種攻擊目標(biāo)選擇的不是個人主機(jī)而是局域網(wǎng)的網(wǎng)關(guān),這樣就會攻擊者源源不斷的獲取局域網(wǎng)內(nèi)其他用戶韻數(shù)據(jù).造成數(shù)據(jù)的泄露,同時用戶電腦中病毒的概率也會提升。
  • 中間人攻擊: 中間人攻擊是同時欺騙局域網(wǎng)內(nèi)的主機(jī)和網(wǎng)關(guān),局域網(wǎng)中用戶的數(shù)據(jù)和網(wǎng)關(guān)的數(shù)據(jù)會發(fā)給同一個攻擊者,這樣,用戶與網(wǎng)關(guān)的數(shù)據(jù)就會泄露。
  • IP地址沖突攻擊: 通過對局域網(wǎng)中的物理主機(jī)進(jìn)行掃描,掃描出局域網(wǎng)中的物理主機(jī)的 MAC 地址,然后根據(jù)物理主機(jī)的 MAC 進(jìn)行攻擊,導(dǎo)致局域網(wǎng)內(nèi)的主機(jī)產(chǎn)生 IP 地址沖突,影響用戶的網(wǎng)絡(luò)正常使用。

總結(jié)

ARP 是 TCP/IP 實(shí)現(xiàn)中的一個基本協(xié)議,它通常在應(yīng)用程序或用戶沒有察覺到的情況下運(yùn)行。ARP 可以用于映射 IP 地址為 MAC 地址。

這篇文章我們主要講了 ARP 的基本原理,ARP 的幀結(jié)構(gòu),ARP 的工作機(jī)制,以及 ARP 代理、ARP 攻擊、RARP 和 ARP 的區(qū)別等


網(wǎng)站名稱:ARP,這個隱匿在計(jì)網(wǎng)背后的男人
網(wǎng)頁網(wǎng)址:http://www.dlmjj.cn/article/djjpejp.html