计算机的IP地址的分配和管理(客户端的设计与实现)
摘 要
随着互联网的普及,我们的工作、学习和生活与网络联系越来越紧密,人们搭建了许多不同的网络,如企业网、校园网和城区网等。由于采用DHCP技术动态地为主机配置网络参数,可以有效解决目前IP地址资源不足(使用内部IP)和无线网络用户的移动性等问题,并能极大地减轻大型网络管理员的工作量,减少手动配置主机网络参数的错误,有利于我们快速地搭建一个大型网络或修改其网络配置。因此,网络配置管理中越来越多地使用了DHCP服务器及技术,随着网络应用的普及和深入,其应用范围将会愈来愈广。但目前国内对DHCP技术的研究大多只限于DHCP服务器的配置问题和DHCP协议本身,很少有更深入的研究。我们在使用DHCP技术对主机网络参数进行动态地配置与管理的同时,理所当然地认定了其唯一合理性和不可取代性。我们就实验室计算机网络配置与管理为背景,研究在此特定环境下通过UDP广播分配IP(服务器)、配置IP(客户端)的问题,以此在一定程度上取代DHCP技术,对实验室计算机网络参数进行快捷有效的配置与管理。具体来讲,主要内容和工作有:
(1)介绍DHCP协议及DHCP工作原理
(2)介绍ARP协议和ARP工作原理
(3)系统的分析、设计、实现与测试 [资料来源:http://Doc163.com]
关键词:DHCP;ARP;IP配置;多线程
The Automatic IP Address Configuration Software for Lab
——Design and Implementation of Client
Abstract
With the prevalence of Internet, the relation between people’s life and network becomes closer and closer, and various networks, such as enterprise network, campus network and public network etc. are being built. DHCP servers and DHCP technology for configuring network parameters can solve the problems of the shortage of IP addresses and the mobility of wireless network user, and as a consequence they greatly lighten the work of network administrator, and reduce mistakes from the manual configuration. They are quite useful for the fast set-up of a large-scale network or modifying its parameters. So DHCP technology will be applied more and more frequently in networks. Now researches on DHCP only focuses on the configuration of DHCP server and DHCP protocol, and people seldom do any deeper researches. When we are using DHCP technology to configure and manage network parameters of hosts, we think naturally that DHCP technology is the only way to solve the problem and that it can not be replaced. Based on the configuration and management of the hosts in the laboratory, this paper proposes a way to assign (server side software) and configure (client side software) network parameters, using the UDP broadcast instead of the DHCP technology. This software can make the problems easier to solve. The main content includes following points: [资料来源:www.doc163.com]
(1) Introducing DHCP protocol and its theory
(2) Introducing ARP protocol and its theory
(3) Introducing the analyse, design, implementation and test of this software [资料来源:http://Doc163.com]
Key words: DHCP; ARP; IP configuration; multithread
本课题的研究意义
随着网络技术的迅速发展,网络与我们的生活越来越密切相关,如何方便、快捷、有效的对一个网络进行管理,一直是一个让网络管理人员颇为困惑的问题。DHCP技术的出现、发展与运用,给网络管理人员带来了极大的便利。由于DHCP技术源自国外,国内对DHCP技术的研究极其的少,而我们国家为解决IP资源严重不足的问题,需要大量使用DHCP技术。因此,开展对DHCP技术的研究,对促进国产DHCP软件在工程建设中的使用,解决目前非常紧张的国内IP地址空间问题,弥补国产网络管理软件的空白等具有重要的实际意义。
本课题的研究方法
本系统名为《实验室计算机的IP地址自动设置程序》,其应用环境是实验室这样一个特定的环境,其目的是便于网络管理人员对实验室计算机的网络参数进行方便、快捷、有效的配置与管理。首先,我们分析了DHCP技术的工作原理,掌握了DHCP服务器与客户端交互的过程。其次,考虑到DHCP技术本身的复杂性,我们提出了使用UDP广播进行通信,并自定义通讯协议这样相对简单的系统解决方案。接着,我查阅了Windows系统判断IP地址冲突的机制,Windows系统配置IP等网络参数的原理,并进一步研究分析了UDP广播通讯、ARP地址解析协议、Windows平台下Socket网络编程等相关问题。最后,我设计了本系统客户端程序,并在Visual C++ 6.0开发环境下实现了全部功能。 [资料来源:https://www.doc163.com]
DHCP协议概述
DHCP是Dynamic Host Configuration Protocol(动态主机分配协议)的缩写,代表动态主机配置协议。DHCP是对允许无盘工作站连接到网络并且自动获取一个IP地址的BOOTP协议的一个扩展。
DHCP向网络主机提供配置参数,它由两个基本部分组成:一部分是向网络主机传送专用的配置信息,另一部分是给主机分配网络地址。DHCP可以向每一个网络客户提供一个IP地址,子网掩码,缺省网关,一个WINS服务器的工P地址,以及一个DNS服务器的IP地址等等。
DHCP是基于客户/服务器模式的,这种模式下,专门指定的主机分配网络地址,传送网络配置参数给需要的网络主机,被指定的主机称为服务器。我们以后将提供DHCP服务的主机称为服务器,把接收信息的主机称为客户。
DHCP支持三种IP地址分配方法。第一种是自动分配,DHCP给用户分配一个永久的IP地址。第二种是动态分配,在这种情况下,用户可以取得一个IP地址,但有时间限制。第三种是手工分配,在这种方法下,用户的IP地址是由管理员手工指定的,在这种情况下,DHCP服务器只需要将这个指定的IP地址传送给用户即可。至于用什么样的分配方法,不同的网络各不相同。
动态分配是唯一的一种允许自动重用地址的机制。因此,这种方法对于有临时上网用户,并且网络的IP地址资源比较紧缺情况下特别有用。而手工指定方法对于管理不希望使用动态IP地址的用户十分方便,不会因为手工指定而和DHCP冲突或和别的已经分配的地址冲突。DHCP是一种相对集中式的管理方式。 [来源:http://Doc163.com]
系统的设计
针对系统分析时列出的几个问题,我查阅大量有关资料,认真分析了DHCP技术的实现机制,并考虑到本系统的实际应用环境。决定采用以下方案来解决上述问题,以完成本系统客户端的全部功能。
一、考虑到服务器逻辑位置的不可预知性,本系统的客户端与服务器均采用UDP广播进行通信。并且采用只需一次请求,一次应答的交互方式,摒弃了DHCP技术的发现服务器、服务器应答、选择服务器、服务器确认提供信息这样四个步骤的相对繁琐的机制。
二、我们自行定义了客户端与服务器通信的格式,客户端和服务器分别在特定端口上接收到数据以后,都将对数据的有效性进行判断,如果不是预期的通信数据,那么这些数据将被立即丢弃。只有符合我们自定义格式的有效数据,才会被进一步处理。
三、在分析Windows系统检测IP地址是否冲突的时候,发现Windows系统是以广播的方式向局域网内发送针对特定IP地址的ARP请求,以此来判断IP地址是否冲突的。此方法快速、准确、有效。本客户端程序也采用同样的机制来检测IP地址是否被占用。客户端在接收到服务器分配的IP地址等网络参数信息以后,将以广播的方式向整个局域网络发送针对服务器分配的IP地址的ARP请求,以此可以判断该IP地址是否已经被局域网内其他主机占用。
[资料来源:http://Doc163.com]
四、如果客户端得到的服务器分配的IP地址已经被其他主机占用,那么客户端将向服务器再次发送分配IP的请求,此时的请求消息与正常情况下发送的请求消息将有所不同。以此告诉服务器该IP地址已经被占用,便于服务器做相应的处理。
五、配置本机IP地址等网络参数信息的方式有很多种,比如可以使用Windows自带的工具NETSH,还可以通过某些API函数向Windows系统维护的地址结构体中添加新的IP地址等信息。本程序为了更快速、更有效的配置IP地址等网络参数信息,首先获取本机网络适配卡的相关信息,然后据此修改注册表中与其对应的IP地址等网络参数信息。
六、一般情况下,由于Windows系统要求更改网络参数后,必须重启计算机才能使更改后的网络参数信息生效。但是我们注意到我们使用电脑的时候,以图形界面的方式更改网络连接的参数后,新配置的网络参数会立即生效。同样的,在使用DHCP技术配置客户端计算机的网络参数的时候,客户端配置好IP地址等网络参数信息后,并没有重启计算机就能立即生效。通过查阅有关资料,我们发现在使用DHCP技术进行计算机网络参数的配置时,在更改了网络参数以后,系统调用了一个微软并没有公布的API用以通告网络参数的改变,此API名为:DhcpNotifyConfigChange,位于dhcpcsvc.dll中。我们的程序在配置好网络参数以后,也调用该API函数,通告网络参数的改变,以使新配置的网络参数立即生效。
七、由于本程序的特殊性,要求本程序像DHCP的客户端服务一样,在计算机启动以后,本程序也随之立即启动运行,而不是用户每次来点击运行,用户只要在某计算机上运行一次本程序,以后不需再做任何的操作,本程序将随计算机开机运行,对本计算机的网络参数进行配置。考虑到在每台电脑上,本程序的所在的逻辑位置很可能不相同,导致开机自启动的功能没法预期实现。本程序借鉴了木马程序中常用的两个技术来保障开机自启动的功能按照预期的完成。首先,本程序每次执行的时候,都将自身文件拷贝到系统的System32目录下,以保证本程序不被一般用户随意或不小心删除。然后,通过向注册表中HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run写入本程序的键值来实现开机自启动的功能。
八、考虑到用户界面的友好性,以及对本程序速度方面的要求,本程序采用多线程机制实现系统预期的功能。本程序运行以后,首先创建一个工作者线程InitThread用以做一些初始化的工作,如初始化本机IP地址信息、初始化本客户端套接字信息等。在完成了所有的初始化工作以后,InitThread创建了另外三个工作者线程用以完成其他的功能,在创建好另外三个线程以后,InitThread线程结束。另外三个线程分别是RecvThread、SendThread和SetThread。RecvThread线程专门负责接收服务器发送来的消息,并在判断消息的有效性后提取网络参数的相关信息。SendThread专门负责发送请求消息到服务器,根据是否由于IP地址被占用的标志的不同取值,发送的请求消息有所不同。SetThread负责在接收到服务器分配的IP地址后,对该IP地址是否已经被占用进行判断,如果没有被占用则设置本计算机IP地址等网络参数信息。由于本客户端程序采用了多线程的机制,线程之间如何实现同步也是必须很好地解决的问题。如果线程之间同步工作没有做好,那么程序将会出现不可预料的结果。本程序通过使用临界区对象来解决线程与线程之间的同步问题。把临界区对象设置为全局对象,然后在创建线程之前,对该临界区对象进行初始化。每个线程在需要对一些全局变量进行访问的时候,必须先进入临界区,在完成必要的工作以后,再退出临界区。某个线程在临界区里面的时候,其他线程只能等待。只有等到该线程退出临界区以后其他线程才能进入临界区。临界区对象保证了全局变量的安全性,保证了线程与线程之间同步地相互协调地工作。
[资料来源:http://Doc163.com]
九、考虑到用户操作的简便性,本程序在正确地配置好IP地址等网络参数信息后,将不要求用户点击关闭按钮以退出本程序。本程序检测正确完成预期功能以后,将以发送消息的方式要求本程序结束运行,系统在接收到该消息以后,将结束本程序。
目 录
1 引言 1
1.1 课题背景 1
1.2 国内外的研究现状 2
1.3 本课题的研究意义 2
1.4 本课题的研究方法 2
2 DHCP协议与ARP协议及他们的工作原理 3
2.1 DHCP协议概述 3
2.2 DHCP工作原理 3
2.3 ARP协议概述 5
2.4 ARP工作原理 5
3 系统的分析、设计、实现与测试 6
3.1 系统的分析 6
(毕业设计) [资料来源:https://www.doc163.com]
3.2 系统的设计 6
3.3 系统的实现 11
3.4 系统的测试 20
结 论 23
参考文献 23
致 谢 24
声 明 25