admin管理员组文章数量:1533850
2024年3月4日发(作者:)
DHCP的实现
一、 概述
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)是用于对多个客户计算机集中分配IP地址以及IP地址相关的信息的协议,这样就能将IP地址和TCP/IP的设置统一管理起来,而避免不必要的地址冲突的问题,因此常常用在网络中对众多DOS/Windows计算机的管理方面,节省了网络管理员手工设置和分配地址的麻烦。
除了能够方便管理之外,DHCP还能略微达到节省IP地址的目的。假设网络中有50个计算机,但只有40个 IP地址,但是这50台计算机不会同时启动,IP地址应该满足要求。如果使用静态IP地址的设置方式,还是会遇到分配地址的困难,因为计算机的使用是随机的,无论怎样分配地址都无法避免出现冲突现象,而使用DHCP就能避免这个问题。 DHCP也能用于统一设置其他的一些IP设置,如缺省路由、DNS服务器等等,使用它能减少一个大型网络的管理任务。
DHCP是从原有的BootP协议发展起来的,原来的目的是为无盘工作站分配IP地址的协议,当前更多的用于集中管理IP地址。然而DHCP协议也有其缺点,例如一台DHCP客户计算机没有一个固定的IP地址,而对于提供网络服务的服务器来讲,经常变化的IP地址并不适合。并且当前的DNS协议并不能和DHCP协作,为DHCP客户直接提供主机名解析任务。
二、DHCP的工作原理
1、DHCP的工作过程
DHCP工作时要求客户机和服务器进行交互,由客户机通过广播向服务器发起申请IP地址的请求,然后由服务器分配一个IP地址以及其他的TCP/IP设置信息。整个过程可以分为以下步骤:
IP地址租用申请:DHCP客户机的TCP/IP首次启动时,就要执行DHCP客户程序,以进行TCP/IP 的设置。由于此时客户机的TCP/IP还没有设置完毕,就只能使用广播的方式发送DHCP请求信息包,广播包使用 UDP端口67和68进行发送,广播信息中包括了客户机的网络界面的硬件地址和计算机名字,以提供DHCP服务器进行分配。
IP地址租用提供:当接收到DHCP客户机的广播信息之后,所有的DHCP服务器均为这个客户机分配一个合适的IP地址,将这些IP地址、网络掩码、租用时间等信息,按照DHCP客户提供的硬件地址发送回DHCP客户机。这个过程中对DHCP服务器没有对客户计算机进行限制,因此客户机能收到多个IP地址提供信息。
IP地址租用选择:由于客户机接收到多个服务器发送的多个IP地址提供信息,客户机将选择一个IP地址,拒绝其他提供的IP地址,以便这些地址能分配给其他客户。客户机将向它选择的服务器发送选择租用信息。
IP地址租用确认:服务器将收到客户的选择信息,如果也没有例外发生,将回应一个确认信息,将这个IP地址真正分配给这个客户机。客户机就能使用这个IP地址及相关的TCP/IP数据,来设置自己的TCP/IP堆栈。
更新租用:DHCP中,每个IP地址是有一定租期的,若租期已到,DHCP服务器就能够将这个IP地址重新分配给其他计算机。因此每个客户计算机应该提前不断续租它已经租用的IP地址,服务器将回应客户机的请求并更新该客户机的租期设置。一旦服务器返回不
能续租的信息,那么DHCP客户机只能在租期到达时放弃原有的IP地址,重新申请一个新
IP地址。为了避免发生问题,续租在租期达到50%时就将启动,如果没有成功将不断启动续租请求过程。
释放IP地址租用:客户机可以主动释放自己的IP地址请求,也可以不释放,但也不续租,等待租期过期而释放占用的IP地址资源。
2、DHCP中继
由于DHCP依赖于广播信息,因此一般的情况下,客户机和服务器应该位于同一个网络之内。然而可以设置网络中的路由器为可以转发BootP广播包,使得服务器和客户机可以位于两个不同的网络中。然而配置转发广播信息,不是一个很好的解决办法,更好的办法为使用DHCP中继。DHCP中继既可以是一台计算机,也可以是一台路由器。对我们来说,是用一台路由器来实现DHCP中继。DHCP中继路由器和DHCP客户机位于同一个网络中,来回应客户机的租用请求,然而它不维护DHCP数据和拥有IP地址资源,它只是将请求通过TCP/IP转发给位于另一个网络上的DHCP服务器,进行实际的IP地址分配和确认。
3、DHCP客户代理
如果你想拔号上网,那么将由你连接到的这台路由器为你动态分配一个IP地址。这个动态分配的任务可能不是DHCP的职责,而是PPP本身的责任。它实现的功能是,一旦客户拔号上网,就代理客户向DHCP服务器申请IP地址的请求,然后由服务器分配一个IP地址以及其他的TCP/IP设置信息。最后通过PPP地址协商,使客户机获得动态地址,方便客户上网。当然,这对拔号上网的客户来说是透明的,他无需关心分配得IP地址是由路由器的地址池分配得,或是代理客户向DHCP服务器申请获得的,或是静态地址分配的。
三、 命令
1、命令
1.1、 ip address-pool [dhcp-proxy-client | local]
no ip address-pool
函数原型:int ip_address_pool(void *pio)
参数描述:pio——与显示有关的数据结构
返回值 : 成功或失败
工作模式:全局配置模式
功能描述:使能地址池机制或dhcp客户代理。
1.2、 ip dhcp-server ip-address
no ip dhcp-server [ip-address]
函数原型:int ip_dhcp_server (void *pio)
参数描述:pio——与显示有关的数据结构
返回值 : 成功或失败
工作模式: 全局配置模式
功能描述:设置dhcp服务器IP地址。
1.3、peer default ip address {ip-address | dhcp | pool [pool-name]}
no peer default ip address
函数原型:int peer_ip_address(void *pio)
参数描述:pio——与显示有关的数据结构
返回值 :成功或失败
工作模式:接口配置模式
功能描述:设置对等方的IP地址。此IP地址或来源于静态地址、
或来源于地址池、或来源于DHCP
1.4、ip local pool pool-name low-ip-address high-ip-address
no ip local pool { pool-name}
函数原型:int ip_local_pool(void *pio)
参数描述:pio——与显示有关的数据结构
返回值 :成功或失败
工作模式:全局配置模式
功能描述:为点对点连接的对等方提供IP地址,而设制本地IP地址池。地址池是为
了拔号上网的客户而设计的,它是在路由器中设置的,在这里,地址池
最大可以写10组,每组的IP地址都是不同的。如需要使用地址池,必须
绑定到需要的异步口中才有效。当客户拔号上网到INTERNET时 ,由路
由器从地址池中分配一个IP地址给客户。客户用这个合法的IP地址
就可以访问INTERNET网络。发布信息,搜索有用的信息。或收发电
子邮件等等。
四、 实现DHCP的命令
1、DHCP中继
在全局配置模式下,用ip dhcp-server 命令配置DHCP服务器的IP地址,便可以实现DHCP中继了。
2、DHCP客户代理
在全局配置模式下,用ip dhcp-server 命令配置DHCP服务器的IP地址;用ip
address-pool 设置为DHCP客户代理方式。如果要DHCP客户代理起作用,必须应用到接口中。在接口配置模式下,用peer default ip address命令使客户代理起作用。详细格式见上面或相关说明资料。
五、 程序设计
整个程序放在work下的dhcp目录中,共有2个C程序,分别为dhcmenu.c,和dhcrelay.c。
命令解析位于dhcmenu.c中,功能的实现位于dhcrelay.c 中。
1、命令解析
在glb_mode.c中增加了DHCP客户代理机制命令的菜单和解析函数ip_address_pool();增加了设置DHCP服务器IP地址的命令的菜单和解析函数ip_dhcp_server()。在int_mode.c中增加了设置对等方的IP地址的命令的菜单和解析函数peer_ip_address()。主要功能是根据命令设置结构的各成员变量值和全局变量。
2、DHCP中继实现
当接收到DHCP申请包,调用dhcr_relay (PACKET p,unsigned int fport)函数,根据
DHCP服务器IP地址存在否,决定是否转发。如果有DHCP服务器IP地址,则转发到DHCP
服务器;否则抛弃DHCP申请包。或接收DHCP服务器的包,转发到DHCP申请的主机。参数
p为 DHCP包,fport 为目的端口。
3、DHCP客户代理
在PPP进行地址协商时,调用dhcr_proxy(iface)函数。DHCP客户代理启动IP地址租用
申请,再启动状态机,调用tk_yield,最长等待30秒钟,如果在这段时间内,获得IP地
址,则成功,否则失败。失败原因有多种,一是DHCP服务器没有启动。二是网线不通,三
是ETHERNET 0 的IP地址设置不对,四是MAC地址有冲突等等。由于在异步口上绑定的是
PPP协议,而DHCP客户代理位于PPP的LCP之后,PPP的NCP之前,当PPP的LCP协商成
功后,如果有认证(无论是PAP,还是CHAP),先认证,当认证通过后,进行PPP的NCP协
商,主要是IP地址协商。PPP的协商过程是双向的,双方的协商都确认后,才认为是协商
成功。参数iface 为接口的索引号。
六 需要配置的参数
1、DHCP服务器的IP地址
#ip dhcp-server dhcpsvr
2、 异步接口的IP地址
#ip address addr mask
3、 异步接口对等方的DHCP代理
#peer default ip address dhcp
4、 设置DHCP代理
#ip address-pool dhcp
版权声明:本文标题:DHCP的实现 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1709510243a228598.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论