版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ARP協(xié)議實(shí)現(xiàn)及其數(shù)據(jù)結(jié)構(gòu)1、背景與常規(guī)的變電站相比,通信是變電站自動(dòng)化系統(tǒng)的關(guān)鍵問題。最初是用RS485總線將 間隔層設(shè)備連接在一起,后來各種現(xiàn)場(chǎng)總線技術(shù)被引入到國(guó)內(nèi),但是隨著變電站自動(dòng)化技術(shù) 自身的發(fā)展,它們的一些局限性逐漸表現(xiàn)出來,而嵌入式以太網(wǎng)的出現(xiàn)為變電站自動(dòng)化系統(tǒng) 的設(shè)計(jì)者提供了實(shí)現(xiàn)站內(nèi)通信網(wǎng)絡(luò)的新途徑。目前,國(guó)內(nèi)外一些著名的大公司已經(jīng)利用嵌入 式技術(shù)將以太網(wǎng)用于它們推出的變電站自動(dòng)化系統(tǒng),新建的超高壓大型變電站自動(dòng)化系統(tǒng)一 般都采用嵌入式以太網(wǎng)進(jìn)行組網(wǎng)。以太網(wǎng)技術(shù)用于變電站自動(dòng)化系統(tǒng)是技術(shù)發(fā)展的趨勢(shì),但是中低壓變電站自動(dòng)化系統(tǒng)的 間隔層設(shè)備和超高壓變電站自動(dòng)化系統(tǒng)的間隔層設(shè)備相比
2、,硬件平臺(tái)較低,很多的設(shè)備沒有 引入嵌入式操作系統(tǒng)以及實(shí)現(xiàn)了的以太網(wǎng)通信協(xié)議棧。在考慮到產(chǎn)品的成本問題、兼容性問 題以及開發(fā)周期等問題,很多從事中低壓變電站自動(dòng)化系統(tǒng)研發(fā)的公司在原有硬件平臺(tái)的基 礎(chǔ)上外擴(kuò)以太網(wǎng)硬件芯片,軟件上實(shí)現(xiàn)通信協(xié)議棧。2、問題的提出應(yīng)用于中低壓變電站自動(dòng)化系統(tǒng)的嵌入式以太網(wǎng)的通信程序的層次結(jié)構(gòu)如圖1所示,通 信模塊由插口層、協(xié)議層、接口層和以太網(wǎng)硬件驅(qū)動(dòng)程序組成,插口層主要是實(shí)現(xiàn)Socket 接口相關(guān)的操作,協(xié)議層實(shí)現(xiàn)UDP、IP、ICMP、IGMP和ARP協(xié)議,接口層實(shí)現(xiàn)對(duì)以太網(wǎng) 幀頭的操作,底層的驅(qū)動(dòng)程序完成和以太網(wǎng)硬件的通信。插口層對(duì)不同的應(yīng)用層程序提供了 公共的
3、接口,接口層對(duì)不同的以太網(wǎng)芯片提供公共的接口。應(yīng)用層以太網(wǎng)圖1嵌入式以太網(wǎng)層次結(jié)構(gòu)IP報(bào)文要傳送到目的主機(jī)的IP協(xié)議層,需要把IP報(bào)文發(fā)送到本機(jī)的接口層封裝成以太 網(wǎng)幀,并利用以太網(wǎng)硬件驅(qū)動(dòng)程序把以太網(wǎng)幀寫入到以太網(wǎng)硬件芯片的片上緩存,然后以太 網(wǎng)硬件芯片把數(shù)據(jù)發(fā)送到以太網(wǎng)上。目的主機(jī)的以太網(wǎng)硬件芯片接受以太網(wǎng)上的數(shù)據(jù),并根 據(jù)接受的以太網(wǎng)幀頭的以太網(wǎng)地址(MAC地址)接受到達(dá)目的主機(jī)的報(bào)文。在與某主機(jī)進(jìn)行通信時(shí),需要知道對(duì)方的MAC地址,并把MAC地址保存起來,維護(hù) 目的IP地址和目的MAC地址的映射。在實(shí)現(xiàn)通信協(xié)議棧時(shí),需要設(shè)計(jì)維護(hù)IP地址到相應(yīng) 以太網(wǎng)地址的映射表,一般這個(gè)映射表和路由表
4、緊密相連,但是變電站內(nèi)部通信網(wǎng)一般采用 hub或者交換機(jī)相連,不需要IP級(jí)的路由,且變電站自動(dòng)化系統(tǒng)內(nèi)部的網(wǎng)絡(luò)接口一般較多, 這樣使建立的路由表占用的內(nèi)存資源比較大,并且增加了報(bào)文發(fā)送的復(fù)雜程度,加重了單片 機(jī)的處理負(fù)擔(dān)。ARP請(qǐng)求報(bào)文以廣播的方式發(fā)送到以太網(wǎng)中,當(dāng)ARP請(qǐng)求報(bào)文發(fā)送的頻率遠(yuǎn)遠(yuǎn)大于相 應(yīng)的ARP回答報(bào)文發(fā)送的頻率時(shí),則快速發(fā)送的ARP請(qǐng)求報(bào)文會(huì)造成網(wǎng)絡(luò)阻塞,使主機(jī)不 能接收到相應(yīng)的ARP回答報(bào)文,這樣使網(wǎng)絡(luò)中不斷的充斥著ARP請(qǐng)求報(bào)文,出現(xiàn)ARP洪 泛現(xiàn)象,極大的耗費(fèi)了系統(tǒng)有效的處理能力。網(wǎng)絡(luò)上的主機(jī)在運(yùn)行過程中,都有突然出故障的幾率,如果某主機(jī)的IP地址和對(duì)應(yīng)的 端口的以太網(wǎng)
5、硬件地址的映射關(guān)系發(fā)送變化后而其他主機(jī)不能實(shí)時(shí)的更新關(guān)于這一地址對(duì) 的信息,就會(huì)造成對(duì)IP地址的錯(cuò)誤的以太網(wǎng)硬件地址的解析,從而導(dǎo)致數(shù)據(jù)的丟失。本文針對(duì)這些問題提出用于中低壓變電站自動(dòng)化系統(tǒng)的嵌入式以太網(wǎng)不實(shí)現(xiàn)維護(hù)IP地 址到相應(yīng)以太網(wǎng)地址的映射以及IP地址路由的Radix樹路由表,而是建立一個(gè)僅維護(hù)IP地 址到相應(yīng)以太網(wǎng)地址的映射的ARP (Address Reasolve Protocol)信息表,并在實(shí)現(xiàn)ARP協(xié) 議時(shí),采用了防止出現(xiàn)ARP洪泛的算法,且建立了實(shí)時(shí)的更新ARP信息表中結(jié)點(diǎn)的功能, 保證網(wǎng)絡(luò)具有好的容錯(cuò)性能。如果變電站內(nèi)部的間隔層設(shè)備需要與調(diào)度或者其他變電站內(nèi)的設(shè)備直接通信
6、時(shí),可以設(shè) 置變電站與外界聯(lián)系的具有報(bào)文轉(zhuǎn)發(fā)功能的設(shè)備具有ARP代理功能,使需要被轉(zhuǎn)發(fā)到外網(wǎng) 的報(bào)文先被發(fā)送到這個(gè)具有ARP代理能力的接口設(shè)備,此設(shè)備對(duì)到達(dá)的報(bào)文選擇合適的下 一跳IP地址完成對(duì)報(bào)文的轉(zhuǎn)發(fā)。3、ARP信息表ARP信息表采用鏈表形式,當(dāng)需要和某IP地址的相對(duì)應(yīng)的MAC地址時(shí),程序需要根 據(jù)IP地址查看對(duì)應(yīng)的ARP信息表結(jié)點(diǎn)。如果ARP信息表是順序表,則查找成功時(shí)的平均 查找長(zhǎng)度和表的長(zhǎng)度成線性關(guān)系。在變電站內(nèi)部,間隔層設(shè)備較多,則需要縮短鏈表的長(zhǎng)度。 為了合理的縮短鏈表的長(zhǎng)度,可以把ARP信息表分成若干個(gè)鏈表,先根據(jù)IP地址尋找對(duì)應(yīng) 的鏈表頭,然后再對(duì)找到的鏈表進(jìn)行順序查找,這樣
7、整個(gè)ARP信息表就是哈希表,如圖2 所示。圖2 ARP信息表示意圖在圖2中,所有關(guān)鍵字為同義詞的結(jié)點(diǎn)存儲(chǔ)在同一線性鏈表中,鏈表的頭指針存放到指 針數(shù)組中,哈希地址就是指針數(shù)組的下標(biāo),圖中的四個(gè)鏈表對(duì)應(yīng)的哈希地址分別為0、1、2 和3,關(guān)鍵字為IP地址。哈希函數(shù)如下式所示:H (IP地址)=(IP地址0+IP地址1 +IP地址+IP地址3) mod 4 (式1) 式1中的IP地址0、IP地址1、IP地址2、IP地址3為IP地址的字,H (IP地址)為哈 希地址。哈希函數(shù)有很好的均勻性,IP地址的每個(gè)字節(jié)的值都對(duì)哈希地址有影響,使哈希 地址均勻分布在整個(gè)地址區(qū)間。ARP信息結(jié)構(gòu)體的數(shù)據(jù)結(jié)構(gòu)如表1所
8、示,arp_infor為結(jié)構(gòu)體名,ai_expired變量設(shè)定ARP 信息表結(jié)點(diǎn)實(shí)效的時(shí)間,具體值如表2所示,ai_flags變量的比特位標(biāo)識(shí)此ARP信息表結(jié)點(diǎn)的狀態(tài),相關(guān)的比特位的定義如表3所示。在發(fā)送arp請(qǐng)求報(bào)文時(shí),ai_asked、ai_count、 ai_expired和ai_flags四個(gè)變量結(jié)合在一起可以防止arp風(fēng)暴,ai_rfcnts記錄了正在訪問此結(jié) 點(diǎn)的進(jìn)程的個(gè)數(shù)。表1 ARP信息結(jié)構(gòu)體的數(shù)據(jù)結(jié)構(gòu)名稱屬性類型含義arp_infor結(jié)構(gòu)體名structarp信息表結(jié)構(gòu)體ai_mac6arp_infor結(jié)構(gòu)體成員變量無符號(hào)短整形數(shù)組以太網(wǎng)MAC地址ai_ip4arp_info
9、r結(jié)構(gòu)體成員變量無符號(hào)短整形數(shù)組ip地址ai_nextarp_infor結(jié)構(gòu)體成員變量arp_infor結(jié)構(gòu)體指 針指向arp_infor結(jié)構(gòu),用于形成鏈表ai_holdarp_infor結(jié)構(gòu)體成員變量報(bào)文的數(shù)據(jù)結(jié)構(gòu)的 指針指向等待發(fā)送的幀ai_askedarp_infor結(jié)構(gòu)體成員變量無符號(hào)短整形arp報(bào)文發(fā)送的次數(shù)ai_countarp_infor結(jié)構(gòu)體成員變量無符號(hào)短整形arp報(bào)文失效計(jì)數(shù),系統(tǒng)可以根 據(jù)起大小來判斷網(wǎng)絡(luò)是否失效ai_expiredarp_infor結(jié)構(gòu)體成員變量無符號(hào)整形數(shù)arp信息表結(jié)點(diǎn)失效的時(shí)間,節(jié) 點(diǎn)永久有效時(shí)值為0,單位為秒ai_flagsarp_infor結(jié)構(gòu)
10、體成員變量無符號(hào)短整形數(shù)arp信息表的狀態(tài)ai_rfcntsarp_infor結(jié)構(gòu)體成員變量無符號(hào)短整形數(shù)引用計(jì)數(shù),當(dāng)某個(gè)量持有這個(gè)節(jié) 點(diǎn)指針時(shí),引用計(jì)數(shù)增加表2 ARP信息表結(jié)點(diǎn)失效時(shí)間的定義名稱類型參考值(單位:秒)含義arp_keeptime宏定義20連續(xù)發(fā)送詢問某MAC地址的ARP請(qǐng)求報(bào)文組之間的最短間隔arp_time_lag宏定義1連續(xù)發(fā)送詢問某MAC地址的ARP請(qǐng)求報(bào)文之間的最 短間隔arp_keep_life宏定義240非永久性arp信息表結(jié)點(diǎn)的生命周期表3 ai_flags變量的比特位含義定義名稱類型比特位參考值含義RT_REJECT宏定義0 x01狀態(tài)標(biāo)志位。置1時(shí)拒絕往這
11、個(gè)ip地址發(fā) 送報(bào)文RT_VALID宏定義0 x02狀態(tài)標(biāo)志位。置1標(biāo)識(shí)需要更新RT_DOWN宏定義0 x04狀態(tài)標(biāo)志位。置1標(biāo)識(shí)arp_infor節(jié)點(diǎn)永久有效RT_PERMONENT宏定義0 x08狀態(tài)標(biāo)志位。置1標(biāo)識(shí)有效,mac地址不為空4、ARP信息表的操作ARP信息表的操作有創(chuàng)建操作、插入操作、更新操作和查詢操作。創(chuàng)建操作是根據(jù)目標(biāo) IP地址創(chuàng)建新的ARP信息表結(jié)點(diǎn)操作,插入操作是把新創(chuàng)建的ARP信息表結(jié)點(diǎn)插入到相應(yīng) 的線性表的頭部的操作。更新操作是系統(tǒng)在運(yùn)行中,周期性的更新ARP信息表結(jié)點(diǎn)的MAC 地址的操作。查詢操作是以需要解析以太網(wǎng)MAC地址的IP地址為關(guān)鍵字查找ARP信息表 的
12、操作。插入操作創(chuàng)建的結(jié)點(diǎn)分為兩種:永久性結(jié)點(diǎn)和臨時(shí)結(jié)點(diǎn)。永久性結(jié)點(diǎn)是在系統(tǒng)初始化過 程中創(chuàng)建的,其MAC地址是經(jīng)調(diào)試人員通過人機(jī)接口或者其他的方式設(shè)立的,而臨時(shí)結(jié)點(diǎn) 是系統(tǒng)在運(yùn)行過程中創(chuàng)建的,其MAC地址是主機(jī)利用ARP協(xié)議從網(wǎng)上獲取的。永久性結(jié) 點(diǎn)在創(chuàng)建時(shí),結(jié)點(diǎn)的ai_mac6變量由輸入的MAC地址初始化,并設(shè)標(biāo)志位為永久結(jié)點(diǎn)。 臨時(shí)結(jié)點(diǎn)的MAC地址在創(chuàng)建時(shí),結(jié)點(diǎn)的ai_mac6變量初始化為空,然后利用ARP協(xié)議得 到MAC地址值填充對(duì)應(yīng)的變量,創(chuàng)建時(shí)置結(jié)點(diǎn)的標(biāo)志位變量為臨時(shí)結(jié)點(diǎn),置結(jié)點(diǎn)的成員變 量ai_expired的值為當(dāng)前的時(shí)鐘值加上arp_keep_life的和。臨時(shí)結(jié)點(diǎn)是通過網(wǎng)上的
13、ARP協(xié)議發(fā)送ARP詢問與回答報(bào)文完成的,MAC地址有可能 會(huì)變化,所以可以應(yīng)該實(shí)時(shí)的更新對(duì)應(yīng)的ARP信息表結(jié)點(diǎn)的MAC地址值,使整個(gè)網(wǎng)絡(luò)有 很好的擴(kuò)展性,同時(shí)使網(wǎng)絡(luò)能實(shí)時(shí)的進(jìn)行自我診斷。更新操作是針對(duì)ARP信息表的臨時(shí)結(jié)點(diǎn)進(jìn)行的定時(shí)的進(jìn)行的操作,一旦有臨時(shí)結(jié)點(diǎn)創(chuàng) 建,則同時(shí)要產(chǎn)生一個(gè)軟定時(shí)器,當(dāng)定時(shí)器超時(shí)后,就啟動(dòng)定時(shí)器超時(shí)函數(shù),依次查看臨時(shí) 結(jié)點(diǎn)是否失效,如果失效則發(fā)送ARP請(qǐng)求報(bào)文,并把結(jié)點(diǎn)的ai_count變量加1,標(biāo)識(shí)結(jié)點(diǎn) 連續(xù)失效的次數(shù),如果ai_count變量超過某約定值,則表明該網(wǎng)絡(luò)端口出現(xiàn)故障,在執(zhí)行更 新操作時(shí)不啟動(dòng)防ARP洪泛算法。查詢操作是以目標(biāo)IP地址為關(guān)鍵字,利用哈
14、希函數(shù)得到ARP信息表中的鏈表頭數(shù)組的 下標(biāo),根據(jù)下標(biāo)找到指向鏈表頭得指針變量,然后從表頭開始順序的以IP地址為關(guān)鍵字查 找對(duì)應(yīng)的結(jié)點(diǎn),如果沒有找到則要?jiǎng)?chuàng)建相應(yīng)的結(jié)點(diǎn),并把結(jié)點(diǎn)插入到ARP信息表中。當(dāng)系統(tǒng)運(yùn)行時(shí),主機(jī)常常向同一目的地址連續(xù)的發(fā)送報(bào)文,如果對(duì)連續(xù)發(fā)往同一目的主 機(jī)的每個(gè)報(bào)文都通過對(duì)ARP信息表執(zhí)行查詢操作來解析地址,則大大的浪費(fèi)了系統(tǒng)的處理 能力。為了加快地址的解析速度,在程序中創(chuàng)建一個(gè)記錄變量,記錄上次通過查詢ARP信 息表找到的結(jié)點(diǎn)。當(dāng)要解析IP地址時(shí),先查看記錄變量指向的結(jié)點(diǎn)是否為目標(biāo)小地址對(duì)應(yīng) 的信息表結(jié)點(diǎn),如果記錄變量指向的結(jié)點(diǎn)和目標(biāo)IP地址不匹配,則再以目標(biāo)IP地址為
15、關(guān)鍵 字對(duì)ARP信息表執(zhí)行查詢操作,并把記錄變量指向查詢到的目標(biāo)結(jié)點(diǎn)。5、ARP協(xié)議地址解析協(xié)議(ARP)用于實(shí)現(xiàn)目的IP地址到網(wǎng)絡(luò)接口硬件地址(MAC地址)的映射, 如果目的IP地址和本終端系統(tǒng)在一個(gè)以太局域網(wǎng),則對(duì)應(yīng)的MAC地址是目的主機(jī)本身的 網(wǎng)卡的MAC地址,如果目的IP地址和本終端系統(tǒng)進(jìn)行通信要經(jīng)過網(wǎng)關(guān),則本系統(tǒng)把它映 射到網(wǎng)關(guān)的MAC地址,即把數(shù)據(jù)包發(fā)送到網(wǎng)關(guān),網(wǎng)關(guān)在進(jìn)行路由轉(zhuǎn)發(fā)ARP請(qǐng)求報(bào)文是廣 播發(fā)送的,但是ARP回答報(bào)文是單播的。以太網(wǎng)目的地址以太網(wǎng)源地址幀 類型硬件類型協(xié)議類型硬件地址長(zhǎng)度協(xié)議地址長(zhǎng)度選 項(xiàng)發(fā)送者硬 件地址發(fā)送者IP地址目標(biāo)硬 件地址目標(biāo)IP地址66以太網(wǎng)首
16、部222112 6464rARP自部叱以太網(wǎng)ARP字段-圖3在以太網(wǎng)上使用的ARP請(qǐng)求或者回答的格式圖3是以太網(wǎng)上使用的ARP報(bào)文格式,ARP首部由硬件類型、協(xié)議類型、硬件地址長(zhǎng) 度、協(xié)議地址長(zhǎng)度和選項(xiàng)組成,其中硬件類型、協(xié)議類型和選項(xiàng)是網(wǎng)絡(luò)字節(jié)序。當(dāng)封裝的 ARP報(bào)文在以太網(wǎng)上傳輸時(shí),硬件類型字段賦值為0 x0100,標(biāo)識(shí)硬件為以太網(wǎng)硬件;協(xié)議 類型字段賦值為0 x0800,標(biāo)識(shí)上次協(xié)議為IP協(xié)議;由于以太網(wǎng)的MAC地址為48比特位, IP地址為32比特位,則硬件地址長(zhǎng)度字段賦值為6,協(xié)議地址長(zhǎng)度字段賦值為4 ;選項(xiàng)字 段標(biāo)識(shí)ARP報(bào)文的類型,當(dāng)為請(qǐng)求報(bào)文時(shí),賦值為0 x0100,當(dāng)為回答報(bào)
17、文時(shí),賦值為0 x0200o6、ARP協(xié)議的實(shí)現(xiàn)ARP協(xié)議的實(shí)現(xiàn)主要由地址解析函數(shù)和ARP報(bào)文處理函數(shù)兩部分組成,在發(fā)送ARP 請(qǐng)求報(bào)文時(shí),要防止出現(xiàn)ARP洪泛,在發(fā)送IP報(bào)文時(shí),對(duì)MAC地址為空的arp信息表結(jié) 點(diǎn)應(yīng)該保存待發(fā)送的IP報(bào)文,等待MAC地址不為空時(shí),立即發(fā)送出去。ARP洪泛是指主機(jī)在收到ARP回答之前以過高的速度對(duì)一個(gè)以太網(wǎng)地址重復(fù)ARP請(qǐng)求, 使網(wǎng)絡(luò)瞬時(shí)出現(xiàn)大量的廣播報(bào)文。防止出現(xiàn)ARP洪泛的措施有:1)相鄰的發(fā)往一個(gè)以太網(wǎng)地址的arp請(qǐng)求報(bào)文之間的時(shí)間間隔不能太短,表2中的宏定義 arp_time_lag說明了此間隔的大小,給出的參考值是1秒;2)如果發(fā)送若干個(gè)arp請(qǐng)求報(bào)
18、文后還沒有收到回答報(bào)文,則應(yīng)該設(shè)置拒絕發(fā)送標(biāo)志,阻止 新的IP報(bào)文的發(fā)送,時(shí)限設(shè)為arp_keeptime,它的參考值為20秒;3)arp_keeptime后,再啟動(dòng)新一輪的arp請(qǐng)求。數(shù)據(jù)報(bào)文1234567891059時(shí)間74 |75 T76| 77* 7879 *8099牛ARPARPARPARPARPARP請(qǐng)求請(qǐng)求請(qǐng)求請(qǐng)求請(qǐng)求請(qǐng)求圖4避免ARP洪泛采用的方法圖4給出了一個(gè)例子,進(jìn)一步說明了避免ARP洪泛的方法,在圖中共顯示了 25秒的時(shí) 間,從74到99。假定某進(jìn)程每隔0.5秒等間隔的發(fā)送IP數(shù)據(jù)報(bào),數(shù)據(jù)報(bào)依次被標(biāo)號(hào)為1 59,arp_time_lag被定為1秒,arp_keeptime
19、被定為20秒,4個(gè)ARP請(qǐng)求報(bào)文為一組,假定 目的主機(jī)已經(jīng)關(guān)閉,所以收不到ARP回答報(bào)文,ARP實(shí)現(xiàn)采取的措施如下:1)假定進(jìn)程寫數(shù)據(jù)報(bào)文1時(shí),還沒有創(chuàng)建相應(yīng)的arp信息表結(jié)點(diǎn),此時(shí)創(chuàng)建新的arp信息 表結(jié)點(diǎn),初始化arp信息表結(jié)點(diǎn)結(jié)構(gòu)體成員變量ai_ip4為目的IP地址,ai_asked的值 為0, ai_hold指向報(bào)文1,ai_expired值為75 (時(shí)鐘當(dāng)前值74加上arp_time_lag),然后發(fā)送ARP請(qǐng)求報(bào)文,置ai_asked的值為1。2)進(jìn)程寫報(bào)文2時(shí),丟棄報(bào)文1, ai_hold指向報(bào)文2。由于ai_expired的當(dāng)前值為75,所 以不發(fā)送ARP請(qǐng)求報(bào)文。3)進(jìn)程寫報(bào)
20、文3時(shí),丟棄報(bào)文2, ai_hold指向報(bào)文3。由于當(dāng)前的時(shí)鐘值為75,則發(fā)送ARP 請(qǐng)求報(bào)文,且置ai_asked的值為2, ai_expired的值為76。4)對(duì)于報(bào)文49,情況一樣的。在數(shù)據(jù)報(bào)文9到達(dá)后,ai_asked的值為5,此時(shí)賦ai_asked 的值為1,置RT_REJECT標(biāo)志位有效,ai_expired的置賦值為99 (時(shí)鐘當(dāng)前值79加上 arp_keeptime),此時(shí)ai_asked的值不再大于5小于0,然后發(fā)送這一組的最后一個(gè)ARP 請(qǐng)求報(bào)文。5)當(dāng)報(bào)文11到達(dá)時(shí),丟棄報(bào)文10,由于RT_REJECT標(biāo)志位有效,則不發(fā)送ARP報(bào)文, 此時(shí)ai_asked的值為1。6)當(dāng)
21、報(bào)文59到達(dá)時(shí),丟棄報(bào)文58,此時(shí)時(shí)鐘值不小于ai_expired的值,則啟動(dòng)新一輪的 ARP請(qǐng)求,隨后進(jìn)行的請(qǐng)求中ai_asked的值從14周期性的變化,每一組的ARP請(qǐng) 求報(bào)文數(shù)為4。當(dāng)有IP報(bào)文發(fā)送時(shí),調(diào)用地址解析函數(shù)解析IP地址對(duì)應(yīng)的MAC地址,地址解析函數(shù) 把IP地址分為單播地址、多播地址和廣播地址分別進(jìn)行處理,具體的處理如下:1)如果IP地址為廣播地址,則其MAC地址為0 xFFFFFFFFFFFF。2)如果IP地址為多播地址,則利用此IP地址按多播IP地址到多播的MAC地址之間的映 射構(gòu)造多播MAC地址,以太網(wǎng)多播地址的前3個(gè)字節(jié)是0 x01,0 x00和0 x5e,后面跟著 0
22、比特,然后是IP多播地址的932比特位。3)如果IP地址為單播地址,則對(duì)ARP信息表進(jìn)行查找操作,解析IP地址對(duì)應(yīng)的MAC 地址。如果對(duì)應(yīng)的ARP信息表結(jié)點(diǎn)的MAC地址為空,則在對(duì)應(yīng)的ARP信息表結(jié)點(diǎn)中 緩存待發(fā)送的報(bào)文,并結(jié)合防止ARP洪泛算法向網(wǎng)絡(luò)廣播ARP請(qǐng)求報(bào)文。在緩存報(bào)文 時(shí),如果ARP信息表結(jié)點(diǎn)中已經(jīng)有待發(fā)送的報(bào)文,應(yīng)該釋放上次沒有發(fā)送的報(bào)文,然 后把本次要求發(fā)送的報(bào)文緩存在ARP信息表結(jié)點(diǎn)中。6.3處理接收到的ARP請(qǐng)求/回答局部網(wǎng)內(nèi)的任何主機(jī)都會(huì)接受到ARP請(qǐng)求報(bào)文,處理接收到的ARP請(qǐng)求/回答程序解 析報(bào)文的內(nèi)容,程序處理過程如下:1)解讀ARP請(qǐng)求/回答報(bào)文的以太網(wǎng)ARP字
23、段,如果報(bào)文中的發(fā)送者IP地址字段的值和 本機(jī)IP地址相同,那么肯定有一個(gè)主機(jī)配置錯(cuò)誤,則在報(bào)告出錯(cuò)并釋放報(bào)文占用的內(nèi) 存后,程序執(zhí)行結(jié)束,否則轉(zhuǎn)到2)。2)以報(bào)文中的發(fā)送者IP地址字段的值為關(guān)鍵字在ARP信息表中查找對(duì)應(yīng)的ARP信息表 結(jié)點(diǎn)。如果對(duì)應(yīng)的ARP信息表結(jié)點(diǎn)已經(jīng)存在,則轉(zhuǎn)3),否則轉(zhuǎn)4)。3)把發(fā)送者硬件地址值賦值到ARP信息表結(jié)點(diǎn)中更新ARP信息表結(jié)點(diǎn),這樣可以使主機(jī) 不至于因其他主機(jī)重啟后導(dǎo)致的ARP信息表結(jié)點(diǎn)失效而不能通信。程序在完成ARP 信息表的MAC地址的更新操作后,把結(jié)點(diǎn)的ai_count變量置為零,ai_expired變量的 值賦為當(dāng)前時(shí)鐘值加上arp_keep_life的值,然后程序轉(zhuǎn)到5)。4)創(chuàng)建新的結(jié)點(diǎn)并把結(jié)點(diǎn)的MAC地址值賦值為發(fā)送者硬件地址字段的值,然后把新的結(jié) 點(diǎn)插入到ARP信息表中,這樣可以優(yōu)化其后與改主機(jī)的通信。在完成添加新的完整的 ARP信息表結(jié)點(diǎn)后程序轉(zhuǎn)到5)。5)檢查和報(bào)文中發(fā)送者IP地址字段對(duì)應(yīng)的ARP信息表結(jié)點(diǎn)中是否有IP報(bào)文等待發(fā)送, 如果有則
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年家禽訂購(gòu)合同
- 房屋改建合同范例
- 2024電子教學(xué)設(shè)備采購(gòu)合同
- 2024上海出租合同范本
- 工行委托貸款合同
- 2024紅磚購(gòu)銷合同(墻地磚類)范本
- 2024【內(nèi)外粉刷合同協(xié)議書】?jī)?nèi)墻粉刷合同范本
- 短期臨時(shí)工作合同協(xié)議
- 2024保險(xiǎn)代理協(xié)議書
- 廣東省東莞市七年級(jí)上學(xué)期語文期中考試試卷3套【附答案】
- 模板支架及腳手架安全使用培訓(xùn)課件
- 企業(yè)財(cái)產(chǎn)保險(xiǎn)投保單
- CT報(bào)告單模板精編版
- 柿子品種介紹PPT課件
- 內(nèi)鏡清潔消毒登記表格模板
- 天然氣脫硫(課堂運(yùn)用)
- 幼兒園教師師德師風(fēng)考核表(共2頁)
- 城鎮(zhèn)職工醫(yī)療保險(xiǎn)運(yùn)行中的問題分析及措施
- 阿拉丁神燈介紹ppt[共27頁]
- 學(xué)校食堂五常法管理制度
- 畢業(yè)設(shè)計(jì)500kv變電站設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論