arp 协议
? ? ? ?ARP(Address?Resolution?Protocol,地址解析協議)是根據IP地址獲取物理地址的一個TCP/IP協議. ARP的基本功能就是負責將一個已知的IP地址解析成MAC地址,以便主機間能正常進行通信。?ARP工作過程分為兩個階段,一個是ARP請求過程,一個是ARP響應過程.?
1.PC1?和?PC2?的詳細通信過程如下所示
?? (1)當主機?PC1?想發送數據給主機?PC2?時,首先在自己的本地?ARP?緩存表中檢查主機?PC2?匹配的?MAC?地址。?
????? (2)如果主機?PC1?在緩存中沒有找到相應的條目,它將詢問主機?PC2?的?MAC?地址,從而將?ARP?請求幀廣播到本地網絡上的所有主機。該幀中包括源主機?PC1?的?IP地址和?MAC地址。本地網絡上的每臺主機都接收到?ARP?請求并且檢查是否與自己的 IP?地址匹配。如果主機發現請求的?IP?地址與自己的?IP?地址不匹配,它將會丟棄 ARP?請求。?
????? (3)主機?PC2?確定?ARP?請求中的?IP?地址與自己的?IP?地址匹配,則將主機 PC1?的地址和?MAC?地址添加到本地緩存表。?
????? (4)主機?PC2?將包含其?MAC?地址的?ARP?回復消息直接發送回主機?PC1(這個數據幀是單播)。?
????? (5)當主機?PC1?收到從主機?PC2?發來的?ARP?回復消息時,會將主機?PC2?的?IP 和?MAC地址添加的自己的?ARP?緩存表。本機緩存是有生存期的,默認?ARP?緩存表的有效期是?120s。當超過該有效期后,將再次重復上面的過程。主機?PC2?的?MAC?地址一旦確定,主機?PC1將能向主機?PC2?發送?IP?通信了。
2.ARP緩存表維護工具——arp命令。該命令用于查詢本機ARP緩存中的IP地址和MAC地址的對應關系、添加或刪除靜態對應關系等。用戶也可以通過使用arp命令驗證ARP緩存條目的生命周期。ARP命令的語法格式?? arp –v。
3. 緩存表中保存中多個ARP條目。每個ARP條目都是由一個IP地址和一個對應的MAC地址組成。
4. 使用arp?-a查看綁定的ARP條目.
5.清空所有的ARP條目??? arp?–d。
注意:使用arp命令在Windows和Linux下刪除ARP緩存條目的方法有點區別。在Linux下,刪除ARP條目時,必須指定接口地址。在Windows下,可以直接執行arp?-d命令刪除。在Linux下,如果不指定接口時,將會提示“arp:?need?host?name”信息.
ARP應答協議報文格式
?
廣播類型的MAC地址:0XFF-FF-FF-FF-FF-FF
硬件類型:表明ARP協議實現在哪種類型的網絡上。?
????? 協議類型:表示解析協議(上層協議)。這里一般是0800,即IP。?
????? 硬件地址長度:MAC地址長度,此處為6個字節。?
????? 協議地址長度:IP地址長度,此處為4個字節。?
????? 操作類型:表示ARP協議數據包類型。1表示ARP協議請求數據包,2表示ARP協議應答數據包。?
?ARP協議應答協議報文和ARP協議請求協議報文類似。不同的是,此時以太網幀頭部的目標MAC地址為發送ARP協議地址解析請求的MAC地址,而源MAC地址為被解析的主機的MAC地址。同時,操作類型字段為2,表示ARP協議應答數據包,目標MAC地址字段被填充為目標MAC地址。
?
下面拿某一個包舉個例子:
?? Frame?33:?42?bytes?on?wire?(336?bits),?42?bytes?captured?(336?bits)?on?interface?0?
????? 以上內容表示這是第33幀數據包的詳細信息。其中,該包的大小為42個字節。?
????? Ethernet?II,?Src:?02:00:04:78:01:7b?(02:00:04:78:01:7b),?Dst:?Broadcast?(ff:ff:ff:ff:ff:ff)?
????? 以上內容表示以太網幀頭部信息。其中源MAC地址為02:00:04:78:01:7b,目標MAC地址為ff:ff:ff:ff:ff:ff(廣播地址)。這里的目標地址為廣播地址,是因為主機PC2不知道PC1主機的MAC地址。這樣,局域網中所以設備都會收到該數據包。
????? Address?Resolution?Protocol?(request)?
????? 以上內容表示地址解析協議內容,request表示該包是一個請求包。在該包中包括有ARP更詳細的字段信息,如下所示:?
????? Address?Resolution?Protocol?(request)?#ARP請求包?
????? Hardware?type:?Ethernet?(1)?#硬件類型?
????? Protocol?type:?IP?(0x0800)#協議類型?
????? Hardware?size:?6?#硬件地址?
????? Protocol?size:?4#協議長度?
????? Opcode:?request?(1)#操作碼。該值為1表示是個ARP請求包?
????? Sender?MAC?address:?02:00:04:78:01:7b?(02:00:04:78:01:7b)?#發送端MAC地址?
????? Sender?IP?address:?10.1.1.142?(10.1.1.142)?#發送端IP地址?
????? Target?MAC?address:?00:00:00_00:00:00?(00:00:00:00:00:00)?#目標MAC地址?
????? Target?IP?address:?10.1.1.166(10.1.1.166)?#目標IP地址?
????? 通過以上內容的介紹,可以確定這是一個在以太網上使用IP的ARP請求。從該內容中,可以看到發送方的IP(10.1.1.142)和MAC地址(02:00:04:78:01:7b),以及接收方的IP地址(10.1.1.166)。由于目前還不知道目標主機的MAC地址,所以這里的目的MAC地址為00:00:00:00:00:00。?
????? 關于以上ARP頭部的內容和前面介紹的ARP請求報文格式是相對應的,如下
? ? ??
應答不同的是:
1.?Opcode:?reply?(2)?#操作碼為2表示該包是ARP響應包?。
2.從該行信息中,可以知道PC2獲取到了PC1主機的MAC地址。這樣就完成通信了。
轉載于:https://www.cnblogs.com/awwwpan/p/4626271.html
總結
- 上一篇: UIWebView内存泄露问题解决方法
- 下一篇: 车床的最大回转直径是由什么决定的