工作。
提出了一系列RFC文档例如1985年9月提出的RFC951中提出了BOOTSTRAPPROTOCOL标志着DHCP的前身BOOTP的诞生1993年10月Bucknell University的R.Droms在RFC1541中正式提出了DHCP技术在原来BOOTP的基础上增加了在TCP/IP网络上自动分配可重用IP地址和可选的网络配置参数的功能1997年3月R.Droms在RFC2131中完善了DHCP技术增加了对中继代理的支持并增加了网络配置参数的可选项同期RFC2132中详细的解释了DHCP协议中的各个选项的格式及意义。
自此DHCP技术已经基本成型。
2系统的分析、设计、实现与测试2.1系统的分析 本系统名为《实验室计算机的IP地址自动设置程序--客户端》所需要完成的功能就是与服务器程序通讯获取服务器分配过来的IP地址等网络参数信息然后对本计算机的网络参数进行配置并且让这些配置立即生效。
这里涉及到这样几个问题一、客户端程序如何与服务器程序进行通信采用什么方式进行交互。
二、如何有效判断接收到的数据信息就是客户端需要的信息。
三、如何判断服务器分配给客户端的IP地址信息是否已被其他主机占用。
四、如果IP已被占用后客户端与服务器如何处理。
五、如何快速有效的配置IP地址等网络参数信息。
六、如何使配置好的网络参数立即生效。
七、如何保证客户端主机一启动本客户端程序就随之启动。
八、如何保证用户界面的有好性防止本客户端程序假死。
九、如何保证本客户端程序在完成预期功能后自动退出。
2.2系统的设计 针对系统分析时列出的几个问题我查阅大量有关资料认真分析了DHCP技术的实现机制并考虑到本系统的实际应用环境。
决定采用以下方案来解决上述问题以完成本系统客户端的全部功能。
一、考虑到服务器逻辑位置的不可预知性本系统的客户端与服务器均采用UDP广播进行通信。
并且采用只需一次请求一次应答的交互方式摒弃了DHCP技术的发现服务器、服务器应答、选择服务器、服务器确认提供信息这样四个步骤的相对繁琐的机制。
二、我们自行定义了客户端与服务器通信的格式客户端和服务器分别在特定端口上接收到数据以后都将对数据的有效性进行判断如果不是预期的通信数据那么这些数据将被立即丢弃。
只有符合我们自定义格式的有效数据才会被进一步处理。
三、在分析Windows系统检测IP地址是否冲突的时候发现Windows系统是以广播的方式向局域网内发送针对特定IP地址的ARP请求以此来判断IP地址是否冲突的。
此方法快速、准确、有效。
本客户端程序也采用同样的机制来检测IP地址是否被占用。
客户端在接收到服务器分配的IP地址等网络参数信息以后将以广播的方式向整个局域网络发送针对服务器分配的IP地址的ARP请求以此可以判断该IP地址是否已经被局域网内其他主机占用。
四、如果客户端得到的服务器分配的IP地址已经被其他主机占用那么客户端将向服务器再次发送分配IP的请求此时的请求消息与正常情况下发送的请求消息将有所不同。
以此告诉服务器该IP地址已经被占用便于服务器做相应的处理。
五、配置本机IP地址等网络参数信息的方式有很多种比如可以使用Windows自带的工具NETSH还可以通过某些API函数向Windows系统维护的地址结构体中添加新的IP地址等信息。
本程序为了更快速、更有效的配置IP地址等网络参数信息首先获取本机网络适配卡的相关信息然后据此修改注册表中与其对应的IP地址等网络参数信息。
六、一般情况下由于Windows系统要求更改网络参数后必须重启计算机才能使更改后的网络参数信息生效。
但是我们注意到我们使用电脑的时候以图形界面的方式更改网络连接的参数后新配置的网络参数会立即生效。
同样的在使用DHCP技术配置客户端计算机的网络参数的时候客户端配置好IP地址等网络参数信息后并没有重启计算机就能立即生效。
通过查阅有关资料我们发现在使用DHCP技术进行计算机网络参数的配置时在更改了网络参数以后系统调用了一个微软并没有公布的API用以通告网络参数的改变此API名为DhcpNotifyConfigChange位于dhcpcsvc.dll中。
我们的程序在配置好网络参数以后也调用该API函数通告网络参数的改变以使新配置的网络参数立即生效。
七、由于本程序的特殊性要求本程序像DHCP的客户端服务一样在计算机启动以后本程