ARP(Address Resolution Protocol,地址解析�(xié)議)是一�(gè)位于TCP/IP�(xié)�棧中的低層協(xié)議,�(fù)�(zé)將某�(gè)IP地址解析成對�(yīng)的MAC地址。ARP�(xié)議和ICMP�(xié)議是常用的TCP/IP底層�(xié)議。在對網(wǎng)�(luò)故障�(jìn)行診斷的�(shí)�,它們也是最常用的協(xié)��
ARP �(xié)議功能是把IP 地址映射為MAC 地址,核心機(jī)制是ARP 緩存表,�(shí)�(xiàn)IP 地址和MAC 地址之間的一一對應(yīng)�(guān)系。研究ARP �(xié)議動(dòng)�(tài)交互仿真�(shí)�(yàn)系統(tǒng)的目的是便于大家在學(xué)�(xí)ARP �(xié)議的�(shí)候更好地理解�(xié)議理�,能夠體�(huì)到ARP 請求�(bào)文和響應(yīng)�(bào)文封裝和�(fā)送的整�(gè)過程,真�(shí)地演示交換機(jī)對于ARP 請求�(bào)文和響應(yīng)�(bào)文轉(zhuǎn)�(fā)的機(jī)制及PC �(jī)上緩存表的修改過程,有助于增�(qiáng)�(xué)生的�(xué)�(xí)效果�
ARP �(xié)議動(dòng)�(tài)交互仿真�(shí)�(yàn)系統(tǒng)是由三臺�(jì)算機(jī)(PC-A,PC-B,PC-C)模擬的局域網(wǎng),數(shù)�(jù)在其�(nèi)部轉(zhuǎn)�(fā)�(shí)的分布式仿真�(shí)�(yàn)平臺。三臺機(jī)器分別模擬ARP �(bào)文發(fā)送端、交換機(jī)、ARP �(bào)文接收端,通過三臺�(jī)器交互操�,在以太�(wǎng)�(huán)境中�(dòng)�(tài)模擬出ARP �(xié)議的整�(gè)工作流程,包括ARP 高速緩存表的查詢和修改,ARP �(bào)文封�,交換機(jī)端口�(zhuǎn)�(fā)�(bào)��
ARP �(xié)議動(dòng)�(tài)交互仿真系統(tǒng)�?fù)浣Y(jié)�(gòu)圖如�1 所��
�1 ARP �(xié)議動(dòng)�(tài)交互仿真�(shí)�(yàn)平臺�?fù)浣Y(jié)�(gòu)
1.1 系統(tǒng)分析
該系�(tǒng)的目的是為了在學(xué)生學(xué)�(xí)ARP �(xié)議時(shí),通過�(dòng)�(tài)、逼真的實(shí)�(yàn)過程幫助�(xué)生深入理解ARP �(xié)�,提高學(xué)�(xí)效果。為了能夠快�、順利地完成�(shí)�(yàn),實(shí)�(yàn)�(huán)境對該系�(tǒng)有如下要求:部署方便,使用簡�,效果逼真,移植性和可擴(kuò)展性強(qiáng)�
系統(tǒng)針對上述需求采取如下策略:該系�(tǒng)全部在Windows XP 下開�(fā),采用部署較為簡單的Mysql �(shù)�(jù)庫和Tomcat 服務(wù)器(PC-C�,將整�(gè)ARP �(xié)議工作過程抽象出來放在網(wǎng)頁上直觀地展�(xiàn),學(xué)�(xí)者可以像瀏覽�(wǎng)頁一樣使用該系統(tǒng)�
客戶端:要求簡單、明了地展現(xiàn)相應(yīng)信息;有�(dòng)�(tài)效果,逐步封裝;能與服�(wù)器�(jìn)行數(shù)�(jù)交互。因此,系統(tǒng)用dreamweaver8 �(shè)�(jì)頁面,采用表格布局封裝相關(guān)信息;用javascript. 控制�(dòng)�(tài)效果和實(shí)�(xiàn)逐步封裝;采用Ajax 技�(shù)�(shí)�(xiàn)客戶端與服務(wù)器的交互�
服務(wù)器:開發(fā)語言相對簡單易學(xué),業(yè)�(wù)邏輯集中控制,采用分層的思想,在基本不動(dòng)�(xiàn)有代碼的情況下實(shí)�(xiàn)功能的拓�。系�(tǒng)用java 完成服務(wù)器端的實(shí)�(xiàn),以一�(gè)邏輯控制類控制整�(gè)�(yè)�(wù)邏輯;封裝一�(gè)持久層框架byesql 操作mysql�(shù)�(jù)�,能在不寫任何SQL 語句的情況下針對MySQL �(shù)�(jù)庫完成基本的增、刪、改、查�
1.2 系統(tǒng)�(shè)�(jì)
1.2.1 系統(tǒng)用例�
�(shí)�(yàn)�(shí),學(xué)生甲操作PC-A,模擬數(shù)�(jù)�(fā)送端;學(xué)生乙操作PC-C,模擬交換機(jī);學(xué)生丙操作PC-B,模擬數(shù)�(jù)接收��
�(fā)送端(PC-A):獲取本機(jī)真實(shí)IP 和MAC 地址�,用一�(gè)JSP 頁面模擬ARP �(bào)文的逐步封裝過程,使用者可以看到ARP 請求�(bào)文逐步封裝的效�。然后自�(dòng)向“交換機(jī)�
�(fā)送ARP 請求�(bào)�,再自動(dòng)跳轉(zhuǎn)到“ARP 高速緩存表”模擬頁面,等待“交換機(jī)”轉(zhuǎn)�(fā)來ARP 響應(yīng)�(bào)�,修改“ARP 高速緩存表��
交換�(jī)(PC-C):用一�(gè)JSP 頁面模擬“端口——MAC映射表�,負(fù)�(zé)�(zhuǎn)�(fā)ARP �(bào)文。初始為等待狀�(tài),當(dāng)�(fā)送端(PC-A)發(fā)送完ARP 請求�(bào)文之�,自�(dòng)向除�(fā)送端外的所有端口轉(zhuǎn)�(fā)該請求報(bào)文,完畢后自�(dòng)跳到初始狀�(tài)等待�(zhuǎn)�(fā)ARP 響應(yīng)�(bào)�,當(dāng)響應(yīng)�(bào)文到�(dá)后就針對�(fā)送端(PC-A)單播該�(bào)文分��
接收端(PC-B):獲取本機(jī)真實(shí)IP 和MAC 地址�,自�(dòng)跳到“ARP 高速緩存表”模擬頁�,等待“交換機(jī)”將ARP請求�(bào)文轉(zhuǎn)�(fā)過來后修改ARP 高速緩存表,再自己跳轉(zhuǎn)到ARP 響應(yīng)�(bào)文頁面,逐步封裝。封裝完畢則自動(dòng)向“交換機(jī)”發(fā)送ARP 響應(yīng)�(bào)��
�2 為ARP �(xié)議仿真系�(tǒng)�(dòng)�(tài)交互用例圖�
�2 ARP �(xié)議動(dòng)�(tài)交互仿真系統(tǒng)用例
1.2.2 系統(tǒng)類圖
ARP �(xié)議動(dòng)�(tài)交互仿真系統(tǒng)定義了四�(gè)類:
?、貯RP �(bào)文類ArpMessage:定義ARP �(bào)文屬性和類型;②ARP 緩存表類ArpTable:定義ARP 表字段和屬�;③端口MAC 映射表類MacTable:定義交換機(jī)端口和機(jī)器MAC 地址的映射關(guān)系;④計(jì)算機(jī)類PC:定義各�(jī)器的IP 地址、MAC 地址和計(jì)算機(jī)名�
�(jì)算機(jī)類PC 為ARP �(bào)文類ArpMessage 和ARP 緩存表類ArpTable 提供本機(jī)的MAC 地址和IP 地址,分別用于幀封裝和MAC 地址查詢。端口MAC 映射表類MacTable 為計(jì)算機(jī)類PC 提供MAC 地址和端口的對應(yīng)�(guān)�,用于數(shù)�(jù)�(zhuǎn)�(fā)�
�3 為ARP �(xié)議動(dòng)�(tài)交互仿真�(shí)�(yàn)系統(tǒng)類圖�
�3 ARP �(xié)議動(dòng)�(tài)交互仿真系統(tǒng)�
1.2.3 系統(tǒng)流程�
為了使用方便,ARP �(xié)議動(dòng)�(tài)交互仿真系統(tǒng)把三�(gè)角色功能集成在一�(gè)程序中。程序運(yùn)行時(shí),操作者需為機(jī)器選擇規(guī)定的角色,再根據(jù)角色功能分配,按照定義的流程完成相應(yīng)的操�。圖4 為ARP �(xié)議動(dòng)�(tài)交互仿真系統(tǒng)流程圖�
�4 ARP �(xié)議動(dòng)�(tài)交互仿真系統(tǒng)流程
�(dāng)一�(gè)基于TCP/IP的應(yīng)用程序需要從一臺主�(jī)�(fā)送數(shù)�(jù)給另一臺主�(jī)�(shí),它把信息分割并封裝成包,附上目的主�(jī)的IP地址。然�,尋找IP地址到實(shí)際MAC地址的映�,這需要發(fā)送ARP廣播消息。當(dāng)ARP找到了目的主�(jī)MAC地址�,就可以形成待發(fā)送幀的完整以太網(wǎng)幀��,協(xié)議棧將IP包封裝到以太�(wǎng)幀中�(jìn)行傳��
如圖所�,描述了ARP廣播過程�
圖 ARP廣播
在圖�,當(dāng)主機(jī)A要和主機(jī)B通信(如主機(jī)A Ping主機(jī)B)時(shí)。主�(jī)A�(huì)先檢查其ARP緩存�(nèi)是否有主�(jī)B的MAC地址。如果沒有,主機(jī)A�(huì)�(fā)送一�(gè)ARP請求廣播�,此包內(nèi)包含著其欲與之通信的主�(jī)的IP地址,也就是主機(jī)B的IP地址。當(dāng)主機(jī)B收到此廣播后,會(huì)將自己的MAC地址利用ARP響應(yīng)包傳給主�(jī)A,并更新自己的ARP緩存,也就是同時(shí)將主�(jī)A的IP地址/MAC地址對保存起�,以供后面使用。主�(jī)A在得到主�(jī)B的MAC地址�,就可以與主�(jī)B通信�。同�(shí),主�(jī)A也將主機(jī)B的IP地址/MAC地址對保存在自己的ARP緩存�(nèi)�
ARP�(bào)文被封裝在以太網(wǎng)幀頭部中傳輸,如圖所�,是ARP請求�(xié)議報(bào)文頭部格��
� ARP請求�(xié)議報(bào)文頭部格�
圖中黃色的部分是以太�(wǎng)(這里是EthernetII類型)的幀頭部。其�,�(gè)字段是廣播類型的MAC地址�0XFF-FF-FF-FF-FF-FF,其目標(biāo)是網(wǎng)�(luò)上的所有主�(jī)。第二�(gè)字段是源MAC地址,即請求地址解析的主�(jī)MAC地址。第三�(gè)字段是協(xié)議類型,這里�0X0806代表封裝的上層協(xié)議是ARP�(xié)��
接下來是ARP�(xié)議報(bào)文部分。其中各�(gè)字段的含義如下:
硬件類型:表明ARP�(shí)�(xiàn)在何種類型的�(wǎng)�(luò)��
�(xié)議類型:代表解析�(xié)議(上層�(xié)議)。這里,一般是0800,即IP�
硬件地址長度:MAC地址長度,此處為6�(gè)字節(jié)�
�(xié)議地址長度:IP地址長度,此處為4�(gè)字節(jié)�
操作類型:代表ARP�(shù)�(jù)包類��0表示ARP請求�(shù)�(jù)��1表示ARP�(yīng)答數(shù)�(jù)��
源MAC地址:發(fā)送端MAC地址�
源IP地址:代表發(fā)送端�(xié)議地址(IP地址)�
目標(biāo)MAC地址:目的端MAC地址(待填充��
目標(biāo)IP地址:代表目的端�(xié)議地址(IP地址��
ARP�(yīng)答協(xié)議報(bào)文和ARP請求�(xié)議報(bào)文類�。不同的�,此�(shí),以太網(wǎng)幀頭部的目�(biāo)MAC地址為發(fā)送ARP地址解析請求的主�(jī)的MAC地址,而源MAC地址為被解析的主�(jī)的MAC地址。同�(shí),操作類型字段為1,表示ARP�(yīng)答數(shù)�(jù)�,目�(biāo)MAC地址字段被填充以目標(biāo)MAC地址�