摘 要:實驗室計算機的IP地址自動設置程序,便于網絡管理人員對實驗室計算機的網絡參數進行方便、快捷、有效的配置與管理。本文主要闡述DHCP協議概述,工作原理,ARP協議概述及命令選項,ARP工作原理,系統的設計與調試,以及系統的實現環境與測試方法。
關鍵詞:計算機 IP配置 DHCP ARP IP配置 多線程
中圖分類號:TP2文獻標識碼:A文章編號:1674-098X(2011)04(c)-0011-01
1 DHCP協議概述
動態主機設置協議(Dynamic Host Configuration Protocol, DHCP)是一個局域網的網絡協議,使用UDP協議工作,主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址給用戶給內部網絡管理員作為對所有計算機作中央管理的手段。它分為兩個部份:一個是服務器端,而另一個是客戶端。所有的IP網絡設定數據都由 DHCP服務器集中管理,并負責處理客戶端的DHCP要求;而客戶端則會使用從服務器分配下來的IP環境數據。比較起BOOTP,DHCP透過“租約”的概念,有效且動態的分配客戶端的TCP/IP設定,而且,作為兼容考慮,DHCP也完全照顧了BOOTP Client 的需求。DHCP的分配形式首先,必須至少有一臺DHCP工作在網絡上面,它會檢測網絡的DHCP請求,并與客戶端磋商TCP/IP的設定環境。
2 DHCP工作原理
客戶端第一次登錄網路,DHCP 的工作形式會有所不同,表現如下。
2.1 尋找Server
當DHCP客戶端第一次登錄網路的時候,也就是客戶發現本機上沒有任何IP資料設定,它會向網路發出一個 DHCPDISCOVER 封包。因為客戶端還不知道自己屬于哪一個網路,所以封包的來源位址會為0.0.0.0,而目的位址則為255.255.255.255,然后再附上Dhcpdiscover的信息,向網路進行廣播。
2.2 提供IP租用位址
當DHCP伺服器監聽到客戶端發出的 Dhcpdiscover廣播后,它會從那些還沒有租出的位址范圍內,選擇最前面的空置IP,連同其他TCP/IP設定,回應給客戶端一個 DHCPOFFER封包。
由于客戶端在開始的時候還沒有IP位址,所以在其Dhcpdiscover封包內會帶有其MAC位址信息,并且有一個XID編號來辨別該封包,DHCP伺服器回應的Dhcpoffer 封包則會根據這些資料傳遞給要求租約的客戶。根據伺服器端的設定,Dhcpoffer封包會包含一個租約期限的信息。
2.3 IP租約
如果客戶端收到網路上多臺DHCP伺服器的回應,只會挑選其中一個Dhcpoffer 而已(通常是最先抵達的那個),并且會向網路發送一個Dhcprequest廣播封包,告訴所有DHCP伺服器它將指定接受哪一臺伺服器提供的IP位址。
3 ARP協議概述及命令選項
3.1 ARP協議概述
ARP是一個重要的tcp/ip協議,并且用于確定對應ip地址的網卡物理地址。實用ARP命令,你能夠查看本地計算機或另一臺計算機的ARP高速緩存中的當前內容。此外,使用ARP命令,也可以用人工方式輸入靜態的網卡物理/ip地址對,你可能會使用這種方式為缺省網關和本地服務器等常用主機進行這項作,有助于減少網絡上的信息量。
按照缺省設置,ARP高速緩存中的項目是動態的,每當發送一個指定地點的數據報且高速緩存中不存在當前項目時,ARP便會自動添加該項目。一旦高速緩存的項目被輸入,它們就已經開始走向失效狀態。
3.2 常用命令選項
ARP-A或ARP-G——用于查看高速緩存中的所有項目。-A和-G參數的結果是一樣的,多年來-G一直是unix平臺上用來顯示ARP高速緩存中所有項目的選項,而windows用的是ARP A(-A可被視為all,即全部的意思),但它也可以接受比較傳統的-G選項。
ARP-AIP——如果你有多個網卡,那么使用ARP-A加上接口的IP地址,就可以只顯示與該接口相關的ARP緩存項目。
ARP-SIP 物理地址——你可以向ARP高速緩存中人工輸入一個靜態項目。該項目在計算機引導過程中將保持有效狀態,或者在出現錯誤時,人工配置的物理地址將自動更新該項目。
ARP-DIP——使用本命令能夠人工刪除一個靜態項目。
4 ARP工作原理
ARP協議是用于由節點IP地址解析其MAC地址,然后進行局域網內部通信的。例如要與某主機連接,可以在瀏覽器或運行窗口中輸入其IP地址,然而在局域網內是沒有網絡層的,網絡中的主機設備不能識別IP地址,只識別MAC地址,所以這時就需要ARP協議來轉換。ARP協議的基本功能就是通過數據包中的目標節點的IP地址查詢目標節點的MAC地址,以便把數據包發送到目標設備中。ARP的基本工作原理如下:
(1)每臺主機都會根據以往在網絡中與其他節點的通信,在自己的ARP緩存區(ARP Cache)中建立一個ARP列表,以表示網絡中節點IP地址和MAC地址的對應關系。
(2)當源節點需要將一個數據包發送到目標節點時,會首先檢查自己ARP列表中是否存在該包中所包含的目標節點IP地址對應的MAC地址。如果有,則直接將數據包發送到這個MAC地址節點上;如果沒有,就向本地網段發起一個ARP請求的廣播包,查詢此IP地址目標節點對應的MAC地址。此ARP請求數據包里包括源節點的IP地址、硬件地址,以及目標節點的IP地址。
(3)網絡中所有的節點在收到這個ARP請求后,會檢查數據包中的目標IP地址是否和自己的IP地址一致。如果不相同就忽略此數據包;如果相同,該節點首先將源端的MAC地址和IP地址的對應表項添加到自己的ARP列表中。如果發現ARP表中已經存在該IP地址所對應的MAC地址表項信息,則將其覆蓋,然后給源節點發送一個ARP響應數據包,告訴對方自己是它需要查找的MAC地址節點。
5 系統的設計與調試
系統的設計原理是本系統的客戶端與服務器均采用UDP廣播進行通信,定義了客戶端與服務器通信的格式,客戶端在接收到服務器分配的IP地址等網絡參數信息以后,將以廣播的方式向整個局域網絡發送針對服務器分配的IP地址的ARP請求,以此可以判斷該IP地址是否已經被局域網內其他主機占用。為了更快速、更有效的配置IP地址等網絡參數信息,首先獲取本機網絡適配卡的相關信息,然后據此修改注冊表中與其對應的IP地址等網絡參數信息。也調用該API函數,通告網絡參數的改變,以使新配置的網絡參數立即生效。采用多線程機制實現系統預期的功能。本程序運行以后,首先創建一個工作者線程InitThread用以做一些初始化的工作,通過使用臨界區對象來解決線程與線程之間的同步問題。在正確地配置好IP地址等網絡參數信息后,將不要求用戶點擊關閉按鈕以退出本程序。本程序檢測正確完成預期功能以后,將以發送消息的方式要求本程序結束運行,系統在接收到該消息以后,將結束本程序。
參考文獻
[1]鄭阿奇.Visual C++實訓[M].清華大學出版社,2005.
[2]鄭莉,董淵.C++語言程序設計[M].清華大學出版社,2001.
[3]蕭秋水,文娟.Windows網絡編程之VC篇[M].清華大學出版社,2001.
[4]劉欣昕.通過IP地址——計算相關地址.科技創新導報,2006年第21期.