根據TCP/IP協議,TCP/IP能夠分爲四個層面,從上到下分別是:緩存
當一臺主機將以太網數據幀發送到位於同一局域網上的另外一臺主機時,是根據48bit的以太網地址來肯定目的接口的。設備驅動程序不檢查IP數據報中的IP地址。而爲了解決這個問題,就須要一種協議爲32bit的IP地址和48bit的以太網地址(MAC)提供映射,這就是ARP協議。安全
ARP協議的工做過程大體以下:
假設主機A要向同一個網絡上的主機B發送。 主機A的IP地址爲192.168.1.1,MAC地址爲0A-11-22-33-44-01;
主機B的IP地址爲192.168.1.2,MAC地址爲0A-11-22-33-44-02;
當主機A要與主機B通訊時,地址解析協議能夠將主機B的IP地址(192.168.1.2)解析成主機B的MAC地址,如下爲工做流程:網絡
第1步:根據主機A上的路由表內容(或是經過DNS),IP肯定用於訪問主機B的轉發IP地址是192.168.1.2。而後A主機在本身的本地ARP緩存中檢查主機B的匹配MAC地址。(可使用arp -n查看ARP緩存)操作系統
第2步:若是主機A在ARP緩存中沒有找到映射,它將詢問192.168.1.2的硬件地址,從而將ARP請求幀廣播到本地網絡上的全部主機,也就是發送一個目標MAC地址爲6個ff的幀。源主機A的IP地址和MAC地址都包括在ARP請求中。本地網絡上的每臺主機都接收到ARP請求而且檢查是否與本身的IP地址匹配。若是主機發現請求的IP地址與本身的IP地址不匹配,它將丟棄ARP請求。 ARP請求和應答分組的格式以下:
其中前10bit是以太網首部,後面28bit是ARP請求應答部分:代理
第3步:主機B肯定ARP請求中的IP地址與本身的IP地址匹配,則將主機A的IP地址和MAC地址映射添加到本地ARP緩存中。對象
第4步:主機B將包含其MAC地址的ARP回覆消息直接發送回主機A。接口
第5步:當主機A收到從主機B發來的ARP回覆消息時,會用主機B的IP和MAC地址映射更新ARP緩存。本機緩存是有生存期的(默認有效的完整表項通常爲20分鐘,而不完整表項爲3分鐘),生存期結束後,將再次重複上面的過程。主機B的MAC地址一旦肯定,主機A就能向主機B發送IP通訊了。
路由
ARP代理:若是ARP請求是經過一個網絡上的主機發往另外一個網絡的主機,那麼鏈接兩個網絡的路由器就能夠回答該請求,這個過程稱做ARP代理。 ARP代理的工做過程與上面相似,不一樣之處在於:若是主機A向另外一個網絡的主機B發送ARP請求,這時候路由器發現了請求者A在本身的子子網中並且請求對象D在其它子網中。而後路由器就會講本身的MAC地址和B的IP地址發給A。這樣A全部發給B的請求就由路由器來轉發了。工作流
根據ARP的原理,不難發現,在ARP工做過程之中是不安全的,例如能夠經過僞造ARP應答報文使得原本由A傳到B的消息,變成由A到C。A致使目標計算機與網關通訊失敗,更會致使通訊重定向,全部的數據都會經過攻擊者的機器。 爲了防止ARP攻擊,有幾個簡單的思路:it