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