实验室计算机的IP地址自动设置程序

2010-08-15 00:49黄晓玲
太原城市职业技术学院学报 2010年12期
关键词:封包IP地址数据包

黄晓玲

(山西省临汾市职业技术学院,山西 临汾 041004)

实验室计算机的IP地址自动设置程序

黄晓玲

(山西省临汾市职业技术学院,山西 临汾 041004)

实验室计算机的IP地址自动设置程序,便于网络管理人员对实验室计算机的网络参数进行方便、快捷、有效的配置与管理。文章首先分析DHCP技术的工作原理,掌握了DHCP服务器与客户端交互的过程。其次,考虑到DHCP技术本身的复杂性,提出了使用UDP广播进行通信,并自定义通讯协议这样相对简单的系统解决方案。研究Windows系统判断IP地址冲突的机制,Windows系统配置IP等网络参数的原理,并进一步研究分析了UDP广播通讯、ARP地址解析协议、Windows平台下Socket网络编程等相关问题。最后,设计了该系统客户端程序,并在Visual C++6.0开发环境下实现了全部功能。

计算机;IP配置;DHCP;ARP;IP配置;多线程

一、DHCP协议概述

动态主机设置协议(Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址给用户与给内部网络管理员作为对所有计算机作中央管理的手段。它分为两个部分:一个是服务器端,另一个是客户端。所有的IP网络设定数据都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP环境数据。比较起BOOTP,DHCP透过“租约”的概念,有效且动态地分配客户端的TCP/IP设定。而且,作为兼容考虑,DHCP也完全照顾了BOOTP Client的需求。DHCP的分配形式必须至少有一台DHCP工作在网络上面,它会检测网络的DHCP请求,并与客户端磋商TCP/IP的设定环境。

DHCP协议分配更加灵活,能动态地设定IP地址,还可以将一些IP保留下来给一些特殊用途的机器使用。它可以按照硬件地址来固定地分配IP地址,同时,DHCP还可以帮客户端指定 router、netmask、DNS Server、WINSServer、等等项目。

二、DHCP工作原理

客户端第一次登录网路,DHCP的工作形式会有所不同,表现如下:

1.寻找Server。当DHCP客户端第一次登录网路的时候,也就是客户发现本机上没有任何IP资料设定,它会向网路发出一个DHCPDISCOVER封包。因为客户端还不知道自己属于哪一个网路,所以封包的来源位址会为0.0.0.0。而目的位址则为255.255.255.255,然后再附上Dhcpdiscover的信息,向网路进行广播。在Windows的预设情形下,Dhcpdiscover的等待时间预设为1秒,也就是当客户端将第一个Dhcpdiscover封包送出去之后,如果在1秒之内没有得到回应的话,就会进行第二次Dhcpdiscover广播。若一直得不到回应的情况下,客户端一共会有四次Dhcpdiscover广播(包括第一次在内),除了第一次会等待1秒之外,其余三次的等待时间分别是9、13、16秒。如果都没有得到DHCP伺服器的回应,客户端则会显示错误信息,宣告Dhcpdiscover失败。之后,基于使用者的选择,系统会继续在5分钟之后再重复一次Dhcpdiscover的过程。

2.提供IP租用位址。当DHCP伺服器监听到客户端发出的Dhcpdiscover广播后,它会从那些还没有租出的位址范围内,选择最前面的空置IP,连同其它TCP/IP设定,回应给客户端一个DHCPOFFER封包。由于客户端在开始的时候还没有 IP位址,所以在其Dhcpdiscover封包内会带有其MAC位址信息,并且有一个XID编号来辨别该封包,DHCP伺服器回应的Dhcpoffer封包则会根据这些资料传递给要求租约的客户。根据伺服器端的设定,Dhcpoffer封包会包含一个租约期限的信息。

3.接受 IP租约。如果客户端收到网路上多台DHCP伺服器的回应,那么它只会挑选其中一个Dhcpoffer而已(通常是最先抵达的那个),并且会向网路发送一个Dhcprequest广播封包,告诉所有DHCP伺服器它将指定接受那一台伺服器提供的IP位址。同时,客户端还会向网路发送一个ARP封包,查询网路上面有没有其它机器使用该IP位址。如果发现该IP已经被占用,客户端则会送出一个 DHCPDECLINE封包给DHCP伺服器,拒绝接受其Dhcpoffer,并重新发送Dhcpdiscover信息。

三、ARP协议概述及命令选项

1.ARP协议概述:

ARP是一个重要的TCP/IP协议,并且用于确定对应ip地址的网卡物理地址。实用ARP命令,你能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容。

按照缺省设置,ARP高速缓存中的项目是动态的,每当发送一个指定地点的数据包且高速缓存中不存在当前项目时,ARP便会自动添加该项目。一旦高速缓存的项目被输入,它们就已经开始走向失效状态。例如,在windows nt网络中,如果输入项目后不进一步使用,物理/IP地址对就会在2至10分钟内失效。因此,如果ARP高速缓存中项目很少或根本没有时,它通过另一台计算机或路由器的ping命令进行添加。所以,需要通过ARP命令查看高速缓存中的内容时,应先ping此台计算机(不能是本机发送ping命令)。

2.常用命令选项:

ARP A或ARP G——用于查看高速缓存中的所有项目。-A和-G参数的结果是一样的,多年来-G一直是unix平台上用来显示ARP高速缓存中所有项目的选项,而windows用的是ARPA(-A可被视为all,即全部的意思),但它也可以接受比较传统的-G选项。

ARPAIP——如果你有多个网卡,那么使用ARP A加上接口的IP地址,就可以只显示与该接口相关的ARP缓存项目。

ARPSIP物理地址——你可以向ARP高速缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,人工配置的物理地址将自动更新该项目。

ARPDIP——使用本命令能够人工删除一个静态项目。

四、ARP工作原理

ARP协议是用于由节点IP地址解析其MAC地址,然后进行局域网内部通信的协议。例如要与某主机连接,可以在浏览器或运行窗口中输入其IP地址,然而在局域网内是没有网络层的,网络中的主机设备不能识别IP地址,只识别MAC地址,所以这时就需要ARP协议来转换。ARP协议的基本功能就是通过数据包中的目标节点的IP地址查询目标节点的MAC地址,以便把数据包发送到目标设备中。

ARP的基本工作原理如下:

1.每台主机都会根据以往在网络中与其他节点的通信,在自己的ARP缓存区(ARPCache)中建立一个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地址节点。

4.源节点在收到这个ARP响应数据包后,将得到的目标节点的IP地址和MAC地址对应表项添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源节点一直没有收到ARP响应数据包,则表示ARP查询失败。

五、系统的设计与调试

系统的设计原理是本系统的客户端与服务器均采用UDP广播进行通信,定义了客户端与服务器通信的格式,客户端在接收到服务器分配的IP地址等网络参数信息以后,将以广播的方式向整个局域网络发送针对服务器分配的IP地址的ARP请求,以此可以判断该IP地址是否已经被局域网内其他主机占用。为了更快速、更有效地配置IP地址等网络参数信息,首先获取本机网络适配卡的相关信息,然后据此修改注册表中与其对应的IP地址等网络参数信息。也调用该API函数,通告网络参数的改变,以使新配置的网络参数立即生效。采用多线程机制实现系统预期的功能。本程序运行以后,首先创建一个工作者线程InitThread用以做一些初始化的工作,通过使用临界区对象来解决线程与线程之间的同步问题。在正确地配置好IP地址等网络参数信息后,将不要求用户点击关闭按钮以退出本程序。本程序检测正确完成预期功能以后,将以发送消息的方式要求本程序结束运行,系统在接收到该消息以后,将结束本程序。

六、系统的实现环境与测试方法

在分析并设计好了本客户端程序以后,在Windows2003SP1+ VisualC++ 6.0SP6 +PlatformSDK_Svr2003SP1的环境下实现了本客户端程序。

系统的测试方法:测试环境为计算机实验室100台相连,组成一个局域网。计算机使用的操作系统为Windows XPSP2+Windows Server2003 SP1,总体的测试结果为:所有预期功能全部完成。

使用DHCP技术实现对主机的IP地址等网络参数进行动态、静态的配置,可以让网络管理人员更方便、快捷、有效地对局域网主机的网络参数进行配置与管理,在一定程度上代替了DHCP技术。客户端程序通过UDP广播与服务器通信。客户端发送UDP广播到服务器绑定的特定端口。同时在客户端绑定的端口上,等待服务器的应答消息。客户端接收服务器的消息,从该消息中提取相应的信息,如IP地址、子网掩码、默认网关等。极大地方便了计算机实验室管理人员对计算机的管理。

[1]郑阿奇.Visual C++实训[M].北京:清华大学出版社,2005.

TN

A

1673-0046(2010)12-0190-02

猜你喜欢
封包IP地址数据包
中药封包在急诊老年急性胃肠炎患者中的临床应用
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
铁路远动系统几种组网方式IP地址的申请和设置
护肤 巧用保鲜膜
无冲突规则校园网络安全系统的设计
SmartSniff
IP地址切换器(IPCFG)
基于SNMP的IP地址管理系统开发与应用
公安网络中IP地址智能管理的研究与思考