bootp协议演化而来,它们同属于tcp/ip协议族,是目前以太网上使用较多的自动进行客户机tcp/ip配置的协议。作为被广泛使用的网络操作系统,nt server 4.0和linux都提供了对dhcp的支持,本文就以nt server 4.0自带的dhcp服务器和linux下最常见的dhcpd 2.0为例来分析两种系统下dhcp的使用和区别。
一、dhcp协议的工作原理
每个基于tcp/ip协议的网络主机(host)都需要一个唯一确定的32位ip地址来与网络通信,如果每台主机的ip地址都用手工设定的话,工作量将是不可想象的,能不能让主机在启动时就被自动配置ip地址从而正常工作呢?这正是dhcp协议设计的初衷。一台配置了dhcp的主机启动时会强制发送一个有限地址广播(32位全为1的ip地址即255.255.255.255被称为有限广播地址,对此地址的广播称为有限地址广播或本地网络广播)。当本地网络中的dhcp服务器收到广播后,会根据收到的物理地址(physical address)在服务器上查找相应配置,并从划定的ip池中发送某个ip地址及附加选项(如租用到期时间等)给客户机,由于使用广播,没有中转的dhcp显然不能跨越子网,而且有可能一个客户机的信息被几个服务器响应,所以客户机总是回答最先收到的dhcp响应,收到响应后客户机还要发送一条注册消息,以告诉服务器该ip已被租用,以防止ip地址冲突。整个注册过程实际上是一套相当复杂的程序。双方要进行多次信息交换,才能最终注册成功。
二、nt:图形化的dhcp管理
nt一向以良好的操作界面著称,dhcp server也不例外,通过图形化的dhcp管理器,可以直观地获得目前的dhcp客户机ip使用状况,可以方便地对整个服务项目及客户机配置进行修改。nt的dhcp服务器支持相当多的dhcp选项,但是windows客户机(包括nt自身)仅支持ip地址、子网掩码、默认网关、dns服务器名、域名、wins服务器名、wins节点类型、租用期等较少的选项,不过这已涵盖了局域网中的绝大部分配置。
nt dhcp服务器通过定义一个或多个ip地址范围来为客户机提供可用的ip、子网掩码、默认网关,但在一个子网内只能有一个ip地址范围。然后,可以通过dhcp选项为客户机提供更多的附加设置,nt的附加设置与rfc1541一致,如006是dns服务器名、044是wins服务器名等。如果一台dhcp客户机租用了某个ip地址,那么附加的选项也将传递给它,前提是客户机没有对这些附加选项进行配置,因为本机配置总是优先的。
如果需要给某些主机特定的ip而不是自动选择,可以添加相应的保留位置,并输入该主机以太网卡的48位物理地址作为唯一标识符,同时也能对那些特定的主机进行特定的配置。每当具有此物理地址的客户机登录时,服务器都会给它固定的ip地址和选项。
nt 4.0 dhcp服务器的优点是操作直观简单,易于管理,并且一个有趣的地方是windows客户机总会优先选择nt的dhcp服务(和前面的总是回答第一个响应似乎有些矛盾,但事实如此,在一个全部由windows主机组成的子网里,如果存在nt dhcp 服务器,那么linux dhcp服务器几乎不会被使用)。它的主要缺陷在于不能有效地控制未知用户租用ip,也就是说,只要还有未用地址,任何收到的请求都会被接受,而且在需要对较多的客户机进行单独配置时仍然会很繁琐。
三、linux:给你更多的"自由"
linux作为自由软件的代表,其优势是windows系列不可比拟的。dhcpd就是遵守gpl规则的一款dhcp服务器软件。现在最新版是3.0.1,不过大部分linux自带的是2.0及以下版本。本文即以较低的版本为例。
dhcpd使用非常简单,在/etc/dhcpd.conf文件中定义好相应的规则和选项,再执行dhcpd eth?就能在相应的网络接口上工作了,如果只有一个网卡,则可以省略该参数。
前面说过,dhcp必须依靠有限地址广播,通常linux并没有配置这个特殊地址,因此,首先要使用route命令添加一条路由,例如要在eth0上接收广播,就是route add -host 255.255.255.255 dev eth0(要想启动时系统自动添加该路由,请将此命令加入/etc/rc.d/rc.local文件末尾)。dhcpd的配置文件dhcpd.conf不像nt使用标准编号规则,而是使用类似于c语言的定义方法,语句都以分号结尾,以下举例说明:
定义一个从192.168.0.2到192.168.0.254的ip地址范围:
su.net 192.168.0.0.netmask 255.255.255.0
{
range 192.168.0.2 192.168.0.254;
}
指定一个客户机使用特定的ip地址:
host mycomputer1
{
hardware ethe.net 00:b0:d0:78:0b:84;
fixed-address 192.168.0.2;
}
默认租用期限(秒):
default-lease-time 2592000;
最大租用期限(dhcpd并没指出-1可用作特殊的最大期限,但是windows客户机能使用这个期限,效果和nt dhcp服务器的"-1--没有期限"一样):
max-lease-time -1;
其他选项大部分都以option开头,如指定默认网关是option routers 192.168.0.254,还有域名服务器名称(domain-name-servers)、域名(domain-name)、子网掩码(su.net-mask)、广播地址(broadcast-address)、wins服务器地址.netbios-name-servers)等,要特别指出的是,它可以指定对未知用户的处理规则,即是否允许未知用户获得合法ip,在su.net段中加入deny unknown-clients;就会禁止未知用户获取此网段内合法的ip,这对需要严格控制ip地址使用的情况非常有用,这也是与nt dhcp服务相比最大的优势。
nt的图形化界面是出了名的,但同时也屏蔽了系统的细节。如果出现任何错误,只能依赖nt自身的恢复能力,对于问题的解决,我们其实无能为力。因此,nt的dhcp服务推荐给已习惯使用windows系列的网管,不需要知道什么底层操作也能很快配置和使用这项服务。
linux下的dhcp服务(及其他服务)则以直接、高效著称,可以最大限度利用现有的资源,而且,这些服务提供的都是最基本的网络信息,一旦出现问题,通过检查log就能一针见血地发现问题的所在,而且故障的恢复也很方便。
如果你希望更多地与网络"交互",笔者推荐linux。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器