windowsAPI實現(xiàn)Arp功能_第1頁
windowsAPI實現(xiàn)Arp功能_第2頁
windowsAPI實現(xiàn)Arp功能_第3頁
windowsAPI實現(xiàn)Arp功能_第4頁
windowsAPI實現(xiàn)Arp功能_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目錄一、課程設計目的1二、課程設計要求1三、課程設計分析1四、課程具體步驟4五、課程總結7參考文獻8源代碼:91. 課程訓練目的隨著Internet的迅速發(fā)展以及網絡應用的不斷增長,IPv4已經不能滿足人們的日常使用需求。其缺點主要是包括地址空間不足,路由選擇效率不高,服務質量與安全性無法得到保證等。為了克服IPv4的局限性,互聯(lián)網工程任務組(IETF)提出了下一代Internet協(xié)議IPv6。本章編程訓練的目的是學習IPv6的報文格式。通過封裝一個具體的IPv6數據報,了解基本包頭各字段的含義,熟悉IPv6的編址方式,掌握根據數據鏈路層地址構造IPv6地址的方法,進而更加深入地理解IPv6協(xié)

2、議。2. 課程訓練要求1、 編程訓練一編寫程序,根據給出的原始數據,構造一個IPv6數據報。具體要求如下:(1) 原始數據為傳輸層TCP協(xié)議棧向下傳遞至網絡層的已經封裝完TCP報頭的用戶數據。原始數據默認保存在二進制數據文件inputfile中。(2) 程序以命令行的方式運行,格式如下: ipv6pkt tcpdata ipv6data 其中,ipv6pkt是程序名,tcpdata為原始數據文件名,ipv6data為輸出文件名。(3)構造ipv6地址時,源地址使用本機MAC地址生成(如果本機MAC地址不可用,則源地址使用00-00-80-1A-E6-65代替),目的地址使用00-00-E4-8

3、6-3A-DC地址生成。其他頭部參數根據情況自行設定。(4)將封裝好的IPv6報文寫入輸出文件ipv6data中。2、 編程訓練二根據7.5節(jié)的內容,改寫編程訓練一中的程序。具體要求如下:(1) 原始數據為傳輸層TCP協(xié)議棧向下傳輸至網絡層TCP數據報的數據字段。編程時,需要額外填充TCP報頭,并且構造TCP偽報頭來計算校驗和。然后填充IPv6報頭,將TCP數據報填充到IPv6數據報的數據字段。然后將完整的IPv6數據報寫入輸出文件。(2) 程序的命令行格式,輸入與輸出的要求與編程訓練一相同。3、 編程訓練三 根據第五章的內容以及本章的相關知識編寫IPv6流量的分析程序。具體要求如下: (1)

4、捕獲一段時間內以本機為源地址或目的地址的IPv6數據包(不包括以廣播形式發(fā)出的數據包)并進行統(tǒng)計,列出本機與其他主機之間不同協(xié)議類型的IPv6數據包的數量。 (2)程序以命令行的方式運行,格式如下: Ipv6Minitor.exe duration_time 其中,duration_time是監(jiān)督時間,單位為秒。 (3) 3.課程設計分析1)課程設計中涉及的網絡基本理論簡介:在網際協(xié)議中定義的是因特網的IP地址,但在實際進行通信時,物理層不能識別IP地址只能識別物理地址。因此,需在IP地址與物理地址之間建立映射關系,地址之間的這種映射稱為地址解析。以太網網絡中的物理地址即網卡的序列號。IEEE

5、規(guī)定網卡序列號為6個字節(jié)(48位),前三個字節(jié)為廠商代號,由于廠商向IEEE注冊登記申請,后3個字節(jié)為網卡的流水號。地址解析包括從IP地址到物理地址的映射和從物理地址到IP地址的映射。TCP/IP協(xié)議組提供了兩個映射協(xié)議:地址解析協(xié)議ARP和逆向地址解析協(xié)議RARP。ARP用于從IP地址到物理地址的映射,RARP用于從物理地址到IP地址的映射。地址解析協(xié)議的ARP的工作原理:假定在一個物理網絡上,A(源主機)要與D(目的主機)進行通信,但是不知道D的物理地址。 A利用ARP協(xié)議工作的過程如下: A廣播一個ARP請求報文,請求IP地址為IPD的主機回答其物理地址。網上所有主機都能收到該ARP請求

6、,并將本機IP地址與請求的IP地址比較,D主機識別出自己的地址IPD,并作出回應,通報自己的物理地址。A收到這個ARP回應包后,就可以與D進行通信。為了提高效率,ARP協(xié)議使用了高速緩存技術。在每臺使用ARP的主機中,都保留了一個專用的內存區(qū),一收到ARP應答,主機就將獲得的IP地址和物理地址存入緩存。以后每次要發(fā)送報文時,首先到緩存中查找有無相應的項,若找不到,再利用ARP進行地址解析。由于多數網絡通信都要連續(xù)發(fā)送多個報文,所以高速緩存大大提高ARP的效率。在ARP請求報文中還放入源主機的“IP地址物理地址”的地址對,源主機在廣播ARP請求時,網絡上所有主機都可以知道該源主機的“IP地址物理

7、地址”的地址對并將其存入自己的緩存。在新主機入網時,令其主動廣播其地址映射,以減少其他主機進行ARP請求。網卡具有如下的幾種工作模式:廣播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的幀為廣播幀,工作在廣播模式的網卡接收廣播幀。多播傳送(MultiCast Model):多播傳送地址作為目的物理地址的幀可以被組內的其它主機同時接收,而組外主機卻接收不到。但是,如果將網卡設置為多播傳送模式,它可以接收所有的多播傳送幀,而不論它是不是組內成員。直接模式(Direct Model):工作在直接模式下的網卡只接收目地址是自己 Mac地址的幀?;祀s模式(Pr

8、omiscuous Model):工作在混雜模式下的網卡接收所有的流過網卡的幀,信包捕獲程序就是在這種模式下運行的。ARP幀的數據結構表達方式:以太網幀頭中的前兩個字段是以太網的目的地址和源地址。目的地址為全1時為廣播地址。  兩個字節(jié)長的以太網幀類型表示后面數據的類型。對于ARP請求或應答來說,該字段的值為0X0806. 硬件類型字段:指明了發(fā)送方想知道的硬件地址的類型,以太網的值為1;  協(xié)議類型字段:表示要映射的協(xié)議地址類型,IP為0X0800; 硬件地址長度和協(xié)議地址長度:指明了硬件地址和高層協(xié)議地址的長度,這樣ARP幀就可以在任意硬件和任意協(xié)議的網絡中使用。對于以

9、太網上IP地址的ARP請求或應答來說,它們的值分別為6和4;操作字段:用來表示這個報文的類型,ARP請求為1,ARP響應為2,RARP請求為3,RARP響應為4;發(fā)送端的以太網地址:源主機硬件地址,6個字節(jié);發(fā)送端IP地址:發(fā)送端的協(xié)議地址(IP地址),4個字節(jié);目的以太網地址:目的端硬件地址,6個字節(jié);目的IP地址:目的端的協(xié)議地址(IP地址),4個字節(jié)。 2)課程設計中涉及的主要問題1.ARP 相關數據幀結構2.ARP協(xié)議工作原理3.程序的流程4. Winpcap 開發(fā)包的使用方法5.Windows平臺構造自定義數據幀,并通過指定網絡適配器發(fā)送的方法。解決思路:1.先查找資料,深入掌握AR

10、P的相關數據幀結構,工作原理。并且對要編程的ARP 程序的流程進行熟悉。2.查閱資料,掌握Winpcap開發(fā)包的使用方法。3.查閱資料,掌握通過指定網絡適配器發(fā)送數據幀的方法。實現(xiàn)預期目標的可行性分析:ARP協(xié)議工作在TCP/IP的第二層,用于將IP地址轉換為網卡的物理地址。通過一定時間的學習,熟悉ARP協(xié)議和Winpcap開發(fā)包使用方法,本設計主要通過對ARP協(xié)議的幀結構,ARP原理,工作流程等的分析來完成獲取局域網內活動主機的物理地址的程序的開發(fā)。3)ARP協(xié)議相關數據幀結構下圖顯示了ARP數據幀結構。硬件類型(Ethernet:0X1)上層協(xié)議類型(IP:0X0800)硬件地址長度IP地

11、址長度操作(0X1為請求,0X2為應答)源MAC地址(前32位)源MAC地址(后16位)源IP地址(前16位)源IP地址(后16位)目的MAC地址(前16位)目的MAC地址(后32位)目的IP地址(全部32位)填充數據(共18B) ARP數據幀結構在Ethernet上發(fā)送該數據幀,還需要將此數據幀封裝到物理幀中,封裝后的結構如下圖所示。物理幀頭(14B)ARP幀結構及填充數據(48B)CRC校驗和(4B) 物理幀結構物理幀頭結構如下圖所示目的MAC(6B)源MAC(6B)類型(2B) 物理幀頭部結構以上數據結構對應的結構體實現(xiàn)如下:struct ethernet_headunsigned ch

12、ar dest_mac6;/目標主機MAC地址unsigned char source_mac6;/源端MAC地址unsigned short eh_type;/以太網類型;struct arp_headunsigned short hardware_type;/硬件類型:以太網接口類型為1unsigned short protocol_type;/協(xié)議類型:IP協(xié)議類型為0X0800unsigned char add_len;/硬件地址長度:MAC地址長度為6Bunsigned char pro_len;/協(xié)議地址長度:IP地址長度為4Bunsigned short option;/操作:A

13、RP請求為1,ARP應答為2unsigned char sour_addr6;/源MAC地址:發(fā)送方的MAC地址unsigned long sour_ip;/源IP地址:發(fā)送方的IP地址unsigned char dest_addr6; /目的MAC地址:ARP請求中該字段沒有意義;ARP響應中為接收方的MAC地址unsigned long dest_ip;/目的IP地址:ARP請求中為請求解析的IP地址;ARP響應中為接收方的IP地址unsigned char padding18;struct arp_packet/最終arp包結構ethernet_head eth;/以太網頭部arp_he

14、ad arp; /arp數據包頭部;4)編程流程介紹由于Winpcap需要綁定在某特定的網絡適配器上,所以程序在開始的時候要首先獲得系統(tǒng)中全部的網絡適配器列表,由用戶選擇適當的適配器。程序檢測用戶選擇是否正確,確認無誤后,獲得本機的IP地址和MAC地址,然后開啟兩個工作者線程分別獲得發(fā)送ARP請求數據幀和接收分析ARP響應數據幀的工作,接收到ARP響應數據幀后分析其有效性,并在確定某響應數據幀有效后發(fā)送更新消息通知用戶界面線程刷新界面顯示獲得的對應關系。下圖是程序流程圖:4.課程具體步驟1. 安裝WinPcap 3.1版本。2. 創(chuàng)建一個c+工程,點擊文件->新建->工程->

15、選擇win32 console Application,寫工程名為Getmac,點擊確定。創(chuàng)建一個空工程,點擊完成就完成了一個空工程的創(chuàng)建。3. 創(chuàng)建cpp文件,按照協(xié)議編寫如下步奏所示1) 首先創(chuàng)建一個C+ Source File,文件名為Mac.2) 編寫一個主函數main(),按照流程進行代碼編寫。4. 將必須的頭文件插入到此工程中,在這里我們新建工程后直接添加相應文件:工程->添加到工程->文件->找到相應頭文件并添加。5. 然后將對應的IPHLPAPI.LIB文件添加到當前目錄下,并且添加相應的庫文件:工程->設置->連接->對象/庫模塊->

16、對話框輸入IPHLPAPI.LIB->確定。6. 在生成的相應Debug文件中含有Mac.exe可執(zhí)行文件。然后在命令行里進入Mac.exe所在文件夾,然后輸入命令Mac.exe,按enter鍵運行。7. 在命令行中輸入指令ipconfig /all,查看本機物理地址,并與程序運行結果進行對比,對比結果發(fā)現(xiàn)程序運行結果正確。5.課程總結 本次課程設計主要是讓我們對計算機通信與網絡方面的知識有所了解。整個課程設計的過程,首先要對網絡方面關于ARP協(xié)議的知識進行回顧,因此找此方面的資料便是應當做的首要任務。我們通過閱讀此方面的書籍熟練掌握ARP協(xié)議的詳細過程。在網際協(xié)議中定義的是因特網的IP

17、地址,但在實際進行通信時,物理層不能識別IP地址只能識別物理地址。因此,需在IP地址與物理地址之間建立映射關系,地址之間的這種映射稱為地址解析。ARP地址解析協(xié)議就是實現(xiàn)地址之間的這種映射關系的。ARP地址解析協(xié)議的整個運作過程我簡單的理解為:源主機廣播一個ARP請求報文,請求目的主機回答其物理地址。網上所有主機都能收到該ARP請求,并將本機IP地址與請求的IP地址比較,目的主機識別出自己的地址IP,并作出回應,通報自己的物理地址。源主機收到這個ARP回應包后,就可以與目的主機進行通信。了解APR協(xié)議的過程,是編寫程序的基本要求。 通過本次課程設計,使我們對網絡方面的知識有了更深入的認識。深刻

18、體會了ARP協(xié)議的幀結構及運作過程,讓我們把網絡課上學到得書面的知識在實踐中加以運用,深入理解。并且增強了我們的合作能力,學會和同伴一起去完成任務。本次課程設計確實不容易做,很多東西都是自己沒學過的,整個過程要不斷地學習,借鑒別人的程序。6.參考文獻1計算機網絡高級軟件編程技術 吳功宜 等編著/2005年09月/機械工業(yè)出版社2C+程序設計 譚浩強 編著/2004年07月/清華大學出版社3TCP/IP協(xié)議及網絡編程技術 羅軍舟等編著/2004年/清華大學出版社源代碼:#include "stdafx.h"#include < windows.h >/=/ 通過 GetAdaptersInfo() 函數來獲取 MAC 地址 #include "Iphlpapi.h" / link iphlpapi.libbool GetMACaddress(char* pMac)IP_ADAPTER_INFO AdapterInfo16; / 定義網卡信息存儲區(qū)。 DWORD dwBufLen = sizeof(AdapterInfo); DWORD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論