1. 程式人生 > >【TCP/IP】ARP

【TCP/IP】ARP

ARP:地址解析協議,根據IP地址獲取實體地址

    在硬體層次上進行資料交換,必須知道目的端的硬體地址才能傳送資料,ARP就是根據IP地址請求目的實體地址。

    在多路訪問的網路ARP是非常重要的,但在點對點鏈路中可以不使用ARP。

    在多路訪問的網路最經典的有乙太網、多點幀中繼、DMVPN的MGRE。在這種多路訪問的網路裡面,知道對方的邏輯IP地址是無法直接傳送資料包的,需要一個協議來對映這個邏輯IP地址到硬體地址。比如:

    在以太網裡面,有ARP對映IP地址到MAC;

    在多點幀中繼網路裡面,有反向ARP對映邏輯IP地址到DLCI;

    在DMVPN裡面的MGRE網路,有NHRP來對映邏輯的隧道口的IP地址到全域性可路由的IP地址

ARP幀的格式:

乙太網目的地址:目的MAC地址

乙太網源地址:源MAC地址

幀型別:值為0x0806  ARP

硬體型別:指硬體地址的型別,值為1表示乙太網地址

協議型別:指要對映的協議地址型別,值為0x0800表示IP地址

硬體地址長度:MAC地址的長度,值為6

協議地址長度:IP地址的長度,值為4

Op:操作型別,1為ARP請求、2為ARP應答、3為RARP請求、4為RARP應答

傳送端乙太網地址:傳送者的MAC地址

傳送端IP地址:傳送者的IP得知

目的乙太網地址:接收者的乙太網的MAC地址,請求為全0

目的IP地址:接收者的IP地址

ARP的請求是二層廣播,迴應是單播。

    如果一個no ip routing 的裝置沒有路由能力也不配置閘道器,訪問任何地址都會直接做ARP請求,有路由能力的裝置,只會對直連網路做ARP請求,非直連網路不會解析,會走路由。

    如果兩個直連裝置都是no ip routing 的裝置,IP地址隨便配,互相都可以ping通,比如:

R1:1.2.3.4  R2:6.7.8.9  可以ping通,原因就是因為:no ip routing的裝置會直接做ARP請求。

代理ARP:對於沒有配置預設閘道器的計算機要和其它網路中的計算機實現通訊,代理ARP的主機會將自己的AMC地址和目標的IP地址對源計算機進行應答。

代理ARP只響應那些在自己路由表裡能找到的網段,解決不是在同一廣播域間主機的通訊。

    當把內部伺服器釋出在公網上時,做一對一NAT對映(IP,非埠),對映的還不是外網口的介面的IP地址(NAT地址池)時,必須在外網介面上開啟代理ARP。否則,外部客戶無法解析到內網伺服器的MAC地址,客戶傳送的請求就會超時。

儘量不要使用代理ARP,有時候會造成網路不通,例如:TCP/IP路由卷一里面Jeff寫的實驗

免費ARP:指主機發送ARP查詢自己的IP地址。告訴整個廣播域,目前這個IP對應的MAC地址是什麼。看看廣播域內有沒有別的主機使用自己的IP,如果有,則提示IP衝突。

    如果主機收到某個IP地址的ARP請求,而且它已經在接收者的快取記憶體中,那麼就要用ARP請求中的傳送端硬體地址對快取記憶體中相應的內容進行更新。

攻擊:非法主機通過傳送ARP迴應報文,將閘道器的MAC地址傳送給其它PC,重新整理被攻擊的主機的MAC,現實MAC地址欺騙。沒有快取也會學習。

非法主機通過傳送免費ARP,將閘道器的MAC地址傳送給其它PC,重新整理被攻擊的主機的MAC,實現MAC地址欺騙。但是免費ARP攻擊,有種情況,被攻擊的主機不會中招,那就是被攻擊主機以前就沒有閘道器的MAC地址快取,所以不會重新整理也不會學習。

    使用冷備時,需要使用到免費ARP。當一臺裝置A掛掉,手動開啟另一臺裝置B,兩臺裝置IP地址相同,MAC地址不同。由於下聯PC端的快取還在,IP地址對映的還是裝置A,此時無法通訊,當裝置B向PC傳送免費ARP時,PC會重新整理ARP快取,指向B,此時就可以通訊了。如果沒有免費ARP來重新整理裝置B的ARP快取,就需要等PC相應的ARP快取條目過期,然後PC端會重新向網路中傳送ARP請求報文獲取裝置B的MAC地址,這個時間會很長。

    使用熱備時,HSRP,兩臺路由器,一臺ip地址是.1,MAC地址是A、一臺IP地址是.2,MAC地址是B。工作時,首先它們先虛擬出一個ip地址是100和一個MAC地址是C。下面的PC會指.100為閘道器MAC對映為C,兩個路由器誰是主用誰就會使用虛擬出來的IP地址和MAC地址,如果主用壞了備用會快速切換過來,也沒有必要去傳送免費ARP來重新整理快取了