引言
當(dāng)一臺主機(jī)將以太網(wǎng)數(shù)據(jù)幀發(fā)送到同一個局域網(wǎng)上的另一臺主機(jī)時,是根據(jù)48bit的以太網(wǎng)地址來確定目的接口的,設(shè)備驅(qū)動程序從不檢查IP數(shù)據(jù)報中的IP地址。
?
ARP為IP地址和硬件地址之間提供動態(tài)映射,說是動態(tài)的,因?yàn)檫@個過程是自動完成的。
?
RARP是被那些沒有磁盤驅(qū)動器的系統(tǒng)使用的,它需要系統(tǒng)管理員進(jìn)行手動設(shè)置。
?
例子
用一個例子解釋ARP的運(yùn)行過程
?
敲入命令ftp bsdi
1.?????ftp客戶端調(diào)用函數(shù)gethostbyname將主機(jī)名轉(zhuǎn)換為32bit的IP地址。這個函數(shù)在DNS中被稱為解析器。
2.?????ftp客戶端用得到的IP地址建立TCP鏈接。
3.?????TCP發(fā)送一個連接請求分段到遠(yuǎn)端的主機(jī),即用上述的IP地址發(fā)送IP數(shù)據(jù)報。
4.?????如果目的主機(jī)在本地網(wǎng)絡(luò)上,那么IP數(shù)據(jù)報可以直接發(fā)送到目的主機(jī)上;如果目的主機(jī)在一個遠(yuǎn)程網(wǎng)絡(luò)上,那么就通過IP選路函數(shù)來確定位于本地網(wǎng)絡(luò)上的下一站路由器地址。
5.?????假定是一個以太網(wǎng),那么發(fā)送端必須把32bit的IP地址變換成48bit的以太網(wǎng)地址。從邏輯Internet地址到對應(yīng)的物理硬件地址需要進(jìn)程翻譯,這就是ARP的功能。
6.?????ARP發(fā)送一份ARP請求的 以太網(wǎng)數(shù)據(jù)幀 給以太網(wǎng)上的每個主機(jī),該過程稱為廣播。其中,ARP請求數(shù)據(jù)幀中包含目的主機(jī)的IP地址,即如果你是這個IP地址的擁有者,請回答你的硬件地址。
7.?????目的主機(jī)的ARP層識別出這份廣播是發(fā)送端在尋問它的硬件地址,于是發(fā)送一個ARP應(yīng)答。
8.?????到ARP應(yīng)答后,使ARP進(jìn)行請求-應(yīng)答交換的IP數(shù)據(jù)報現(xiàn)在就可以發(fā)送了。
9.?????發(fā)送IP數(shù)據(jù)報到目的地址。
?
每一個網(wǎng)絡(luò)接口都有一個48bit的硬件地址,在硬件層次上進(jìn)行數(shù)據(jù)幀交換必須有正確的接口地址。但是知道主機(jī)的IP地址并不能發(fā)送一幀數(shù)據(jù)給主機(jī)。因?yàn)閮?nèi)核必須知道目的端的硬件地址才能發(fā)送數(shù)據(jù),這也就是 ARP 的存在意義 。
?
SLIP和PPP(點(diǎn)對點(diǎn))鏈路不使用ARP。當(dāng)設(shè)置這些鏈路時,需要告訴內(nèi)核鏈路每一端的IP地址而不需要涉及硬件地址。
?
ARP高速緩存
每個主機(jī)上都有一個ARP高速緩存,用于存放最近Internet地址到硬件地址的映射記錄。高速緩存中每一項的生存時間一般為20分鐘,起始時間從被創(chuàng)建時開始算起(生存時間在再次使用后,重新更新為20分鐘)。
?
ARP分組格式
ARP請求和應(yīng)答幀格式
?
對比第二章中以太網(wǎng)分裝的幀格式發(fā)現(xiàn),首部是一樣的,后面的ARP請求/響應(yīng)字段就是數(shù)據(jù)段。
?
若以太網(wǎng)目的地址全1則是廣播地址。
?
在ARP請求/應(yīng)答分組格式中有重復(fù)信息:在以太網(wǎng)首部和ARP請求/應(yīng)答幀中都有發(fā)送端的硬件地址。
?
對一個ARP請求來說,除目的端的硬件地址外其他都要填上。當(dāng)主機(jī)收到一份目的IP地址為本機(jī)的ARP請求后,它就把自己的硬件地址填進(jìn)去,然后將填進(jìn)去的目的端地址替換兩個發(fā)送端地址,將發(fā)送端地址替換目的地址,最后發(fā)送。
?
對不存在主機(jī)的ARP請求
若網(wǎng)絡(luò)號和子網(wǎng)號對應(yīng)的網(wǎng)絡(luò)確實(shí)存在,但是主機(jī)號不存在,就會有多次ARP請求,大約75s后TCP連接請求才放棄。
?
注意:直到 ARP 應(yīng)答返回時 ,TCP 報文段才可以被發(fā)送,因?yàn)檫@時才知道目的地的硬件地址。
ARP高速緩存超時設(shè)置
對完整的表項設(shè)置超時值為20min,對不完整的表項設(shè)置為3min。
?
ARP代理
如果ARP請求時從一個網(wǎng)絡(luò)的主機(jī)發(fā)往另一個網(wǎng)絡(luò)的和足跡,那么連接兩個網(wǎng)絡(luò)的路由器就可以回答這個ARP請求,該過程稱為 委托 ARP 或者 ARP 代理 。這樣可以欺騙發(fā)起ARP的發(fā)送端,認(rèn)為路由器就是目的主機(jī),而事實(shí)上目的主機(jī)在路由器的另一邊。
?
ARP代理也稱ARP混合和ARP出租,這些名字來源于ARP代理的其他用途:通過兩個物理網(wǎng)絡(luò)的路由器可以相互隱藏物理網(wǎng)絡(luò),這種情況下兩個物理網(wǎng)絡(luò)之間可以使用想用的網(wǎng)絡(luò)號,只要把中間的路由器設(shè)置成ARP代理以響應(yīng)一個網(wǎng)絡(luò)到另一個網(wǎng)絡(luò)的ARP請求。
?
免費(fèi)ARP
免費(fèi)ARP指主機(jī)發(fā)送ARP查找自己的IP地址。
免費(fèi)ARP作用:
1.?????通過它來確定另一個主機(jī)是不是設(shè)定了相同的IP。若有ARP響應(yīng)則說明有另外一個主機(jī)設(shè)定了相同的IP地址。
2.?????若發(fā)送免費(fèi)ARP的主機(jī)正好改變了硬件地址(換網(wǎng)卡),那么免費(fèi)ARP可以使其他主機(jī)高速緩存ARP中的舊的硬件地址進(jìn)行更新。如果主機(jī)收到某個IP地址的ARP請求并且它已經(jīng)在接收者的告訴緩存中,那么就要用ARP請求中的發(fā)送端的硬件地址對高速緩存中相應(yīng)的內(nèi)容進(jìn)行更新。
?
一個例子:通過發(fā)送含有備份硬件地址和故障服務(wù)器的IP地址的免費(fèi)ARP請求,使得備份服務(wù)器可以順利的接替故障服務(wù)器進(jìn)行工作。這使得所有目的地為故障服務(wù)器的報文都被送到了備份服務(wù)器那里,客戶程序不必關(guān)心原來的額服務(wù)器是否出了故障。
?
?
RARP逆地址解析協(xié)議
引言
具有本地磁盤的系統(tǒng)引導(dǎo)時,一般從磁盤上的配置文件中讀取IP地址。但無盤機(jī)如X終端和無盤工作站則需要采用其他方式獲得IP地址。
?
無盤系統(tǒng)的RARP實(shí)現(xiàn)過程是從接口卡上讀取唯一的硬件地址,然后發(fā)送一份RARP請求(一幀在網(wǎng)絡(luò)上廣播的數(shù)據(jù)),請求某個主機(jī)響應(yīng)該無盤系統(tǒng)的IP地址(在RARP應(yīng)答中)。
?
RARP請求以廣播方式傳送,RARP應(yīng)答以單播方式傳送。 RARP 的應(yīng)答中包含發(fā)送端的 IP 地址,這樣發(fā)送端就知道了自己的 IP 地址 。 當(dāng)無盤系統(tǒng)從 RARP 應(yīng)答中收到它的 IP 地址后,它將發(fā)送 TFTP 請求來讀取引導(dǎo)映像 。
?
RARP服務(wù)器設(shè)計
提供一個ARP服務(wù)器很簡單,通常是TCP/IP在內(nèi)核中實(shí)現(xiàn)的一部分。由于內(nèi)核知道IP地址和硬件地址,因此當(dāng)它收到一個詢問IP地址的ARP請求時,只需用相應(yīng)的硬件地址來提供應(yīng)答就可以了。
RARP服務(wù)器要為多個主機(jī)(網(wǎng)絡(luò)上所有的無盤系統(tǒng))提供硬件地址到IP地址的映射。該映射包含在一個磁盤文件中。由于內(nèi)核一般不讀取和分析磁盤文件,因此RARP服務(wù)器的功能就由用戶進(jìn)程來提供而不是作為內(nèi)核TCP/IP實(shí)現(xiàn)的一部分。
?
RARP請求是在硬件層進(jìn)行廣播的,它不經(jīng)過路由器轉(zhuǎn)發(fā)。通常在一個網(wǎng)絡(luò)上要提供多個RARP服務(wù)器,為了讓無盤系統(tǒng)在RARP服務(wù)器關(guān)機(jī)的狀態(tài)也能引導(dǎo)。
?
每個RARP服務(wù)器對每個RARP請求都要發(fā)送RARP應(yīng)答。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
