您好,登錄后才能下訂單哦!
2014年即將過去,2015年正大步向我們走來。寫此日志來梳理一下2014年學過的知識渣渣,同時梳理一下心情,以美好的心情期待2015的到來!
ARP即地址解析協議,就是將IP地址解析成Mac地址的一種TCP/IP協議。當一臺主機想要與外界通信時,首先會向外界發送請求廣播,并同時發送含有目標IP地址的數據包,另外主機還能夠接受網絡上返回的信息。返回信息中包括目標主機的的Mac地址。主機在收到返回信息后會將目標主機的IP地址和返回信息中的Mac地址進行匹配整理,然后會存儲在本地的ARP緩存中。
ARP緩存實質上就是一個IP地址與MAC地址的對應關系表,可以在本地存儲一段時間,下次請求時就可以直接從本地ARP緩存中查找目標主機IP所對應的MAC地址,以此來節省訪問所需的時間。ARP緩存只會在本地存儲一段時間,具有一定的生命周期,下次訪問時還需在網絡中發送廣播來獲取MAC地址。
ARP協議的工作過程描述如下(來自百度):
1、PC1希望將數據發往PC2,但它不知道PC2的MAC地址,因此發送了一個ARP請求,該請求是一個廣播包,向網絡上的其它PC發出這樣的詢問:“192.168.0.2的MAC地址是什么?”,網絡上的其它PC都收到了這個廣播包。
2、PC2看了這個廣播包,發現其中的IP地址是我的,于是向PC1回復了一個數據包,告訴PC1,我的MAC地址是00-aa-00-62-c6-09。PC3和PC4 收到廣播包后,發現其中的IP地址不是我的,因此保持沉默,不答復數據包。
3、PC1知道了PC2的MAC地址,它可以向PC2發送數據了。同時它更新了自己的ARP緩存表,下次再向PC2發送信息時,直接從ARP緩存里查找PC2的MAC地址就可以了,不需要再次發送ARP請求。
命令提示符下常用的命令:
C:\Users>arp
顯示和修改地址解析協議(ARP)使用的“IP 到物理”地址轉換表。 ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]
-a 通過詢問當前協議數據,顯示當前 ARP 項。
如果指定 inet_addr,則只顯示指定計算機
的 IP 地址和物理地址。如果不止一個網絡
接口使用 ARP,則顯示每個 ARP 表的項。
-g 與 -a 相同。
-v 在詳細模式下顯示當前 ARP 項。所有無效項
和環回接口上的項都將顯示。
inet_addr 指定 Internet 地址。
-N if_addr 顯示 if_addr 指定的網絡接口的 ARP 項。
-d 刪除 inet_addr 指定的主機。inet_addr 可
以是通配符 *,以刪除所有主機。
-s 添加主機并且將 Internet 地址 inet_addr
與物理地址 eth_addr 相關聯。物理地址是用
連字符分隔的 6 個十六進制字節。該項是永久的。
eth_addr 指定物理地址。
if_addr 如果存在,此項指定地址轉換表應修改的接口
的 Internet 地址。如果不存在,則使用第一
個適用的接口。
示例:
> arp -s 157.**.85.212 00-aa-**-62-**-09.... 添加靜態項。
> arp -a .... 顯示 ARP 表。
ARP***與防御
ARP請求為廣播形式發送的,網絡上的主機可以自主發送ARP應答消息,并且當其他主機收到應答報文時不會檢測該報文的真實性就將其記錄在本地的MAC地址轉換表,這樣***者就可以向目標主機發送偽ARP應答報文,從而篡改本地的MAC地址表。ARP欺騙可以導致目標計算機與網關通信失敗,更會導致通信重定向,所有的數據都會通過***者的機器,因此存在極大的安全隱患。 ARP***作為一種流行的***方式,可以用來欺騙、掛馬、盜取游戲帳號等等。有興趣的朋友可以google一下,網上這方面的內容有很多。
ARP報文
首先要解決的問題是如何獲得ARP協議報文?
WireShark ——— 專業抓包軟件
ARP協議報文格式:
ARP請求包的分析:如下所示為一個ARP請求包 0000 ff ff ff ff ff ff 00 0c f1 d4 d9 60 08 06 00 01 ...........`....
0010 08 00 06 04 00 01 00 0c f1 d4 d9 60 c0 a8 01 0f ...........`....
0020 00 00 00 00 00 00 c0 a8 01 02 ..........
根據定義,頭6個字節是以太網目的地址 ff ff ff ff ff ff 這是一個廣播地址,全網下的所有終端都能接收到,緊跟著的6個字節是以太網源地址,即發送者的MAC地址( 00 0c f1 d4 d9 60 是我的MAC地址)。
幀類型0806占兩個字節,到這里以太網幀頭就結束了。0806指的是后面的數據是屬于arp包的。
接著分析ARP包頭。頭兩個字節是硬件類型 00 01,接著兩個字節是協議類型,即ARP使用的是IP協議代號08 00。硬件地址長度和協議地址長度分別是6和4。這與ARP報文格式是對應的。后面的2個字節OP指示當前包是請求包還是應答包,對應的值分別是0x0001和0x0002。原始數據里是00 01所以這是一個請求包,然后6個字節又是發送者MAC地址00 0c f1 d4 d9 60 ,后面4個字節是發送者IP地址c0 a8 01 0f ,轉換成點分十進制格式即192.168.1.15,這是我的IP,接下來的6個字節留空,00 00 00 00 00 00 在arp請求包里也可以是其他數據,因為稍后IP地址為c0 a8 01 02 (192.168.1.2)會把自己的MAC地址填充進這6個字節中。
填充完后,arp包里的發送者硬件地址|目標硬件地址和以太網首部的以太網目的地址|以太網源地址正好對調。最后把這個封裝好的ARP包發送出去,這樣一個來回就可以讓兩臺終端互相知道對方的IP和MAC。
ARP基本就這些內容吧,學藝不精,望多指教!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。