(1)DHCP客户端计算机启动后,如果客户端发现本机上没有任何IP地址等相关参数,会使用0000作为自己的IP地址,255255255255作为服务器的地址,广播发送包括网卡的MAC地址和NetBIOS名称的DHCP发现信息。
当发送第一个DHCP发现信息后,DHCP客户端将等待1秒。在此期间,如果没有DHCP服务器响应,DHCP客户端将分别在第9秒、第13秒和第16秒时重复发送一次DHCP发现信息。如果仍然没有得到DHCP服务器的应答,客户端则会显示错误信息,并从Microsoft保留IP地址段(16925401~169254255254)自动选择一个地址,并设置子网掩码为25525500。以后,系统会继续每隔5分钟广播一次发现信息,直到得到一个应答为止。
(2)当网络中的任何一个DHCP服务器(同一网络中可存在多个DHCP服务器)在收到DHCP客户端的DHCP发现信息后,就从IP地址池中选取一个没有出租的IP地址连同其他TCP/IP网络配置(包括子网掩码、网关地址、租用期、DNS地址、WINS服务器地址、提供响应的DHCP服务器的IP地址等),然后利用广播方式提供给DHCP客户端。
(3)当DHCP客户端收到应答信息后,将以广播方式向网络中所有的DHCP服务器发送DHCP请求信息(在DHCP请求信息中包含有所选择的DHCP服务器的IP地址),既通知它已选择的DHCP服务器,也通知其他DHCP服务器,以便释放它们保留的IP地址。
同时,客户端还会向网络发送一个ARP(Address Resolution Protocol,地址解析协议)包,查询网络上面有没有其他机器使用该IP地址;如果发现该IP地址已经被占用,客户端则会送出一个DHCPDISCOVER数据包给DHCP服务器,拒绝接受其DHCPDISCOVER,并重新发送DHCPDISCOVER信息。
(4)一旦被选择的DHCP服务器接受到DHCP客户端的DHCP请求信息后,就将已保留的IP地址标识为已租用,并以广播方式发送一个DHCP应答信息给DHCP客户端,以确认IP租约的正式生效。
以上过程可简单地概括为发现、提供、DHCP请求、DHCP应答1客户机请求ip地址
客户机会发送广播到网络中的机器 请求ip地址 这个广播包在同一网络环境下的机器都会收到 但是只有dhcp服务器会响应这个广播!
2服务器响应请求
服务器收到dhcp请求后 会查找dhcp地址池内是否有合法的ip地址分配给客户机 如果有 就会以广播的形式发送给客户机
3客户机选择ip
当客户机收到服务器发来的ip信息后 会发送广播到网络 告知dhcp服务器 已经选中ip
4服务器确认ip
当服务器收到客户机发来的广播后 就会把客户机选中的ip保留 不会再分配给其他的机器 防止ip冲突 然后建立租约信息
当dhcp服务器分配给客户机一个ip 这个ip的使用时间是有限的 当租约到期后 这个ip地址就会失效 所以ip租约快到期时客户机会继续找dhcp服务器续约
第一次续约 是在租用期的50% 第二次是在85% 当两次续约都没反应时间 客户机就会从新重复第一次 *** 作
查看地址:ipconfig/all 释放地址:ipconfig /release 获取地址: :ipconfig /renew
dhcp分配地址信息包括 ip地址 子网掩码 网关 dhcp服务器地址 dns地址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堆栈。WINDOWS 下的DHCP:
DHCP(dynamic host configure protocol)是动态主机配置的缩写,用于向网络中的计算机动态分配IP以及简单的TCP/IP信息。
什么是DHCP
DHCP是用于简化IP配置管理的TCP/IP标准,对客户机动态非配TCP/IP信息。
使用DHCP的理由
1:减小管理员的工作量
2:减小输入错误的可能
3:避免IP冲突
4:当网络改变IP地址段时,不需要对每台PC重新分配IP地址
5:计算机移动不需要重新配置ip地址
6:提高IP地址的利用率
DHCP的工作原理(四次广播)
第一步:客户机请求IP租约
客户机广播一个DHCPdiscover包请求IP地址,DHCPdiscover包的原地址是0000(因为这个时候还没有IP)目标地址255255255255(不知道那台机DHCP服务器,所以广播)MAC地址是自己的。
第二步:服务器响应
当DHCP服务器接收到客户机请求IP地址的信息时,就在自己的IP地址库中查找是否有合法的IP地址提供给客户机,如果有,就将此IP地址做上标记,广播一个DHCPpoffer包,DHCPpoffer包中包含:
1,DHCP客户机的MAC地址,用来正确标识客户机。
2,DHCP服务器提供的合法IP地址,子网掩码。
3,租约期限。
4,服务器标识
第三步:客户机选择IP地址
客户机接收到第一个DHCPpoffer包中选择IP,并将DHCPrequest包广播到所有DHCP服务器(因为可能一个环境中有多台DHCP服务器)表明它接受提供的内容。
第四步:服务器确认IP租约
DHCP租约过程中第四步也是最后一步为服务器确认IP地址租约,也称为DHCPACK/DHCPNAK
DHCP服务器的配置
DHCP服务器的要求
1,DHCP服务器要求在windows server 2003 的计算机上运行,(当然也可以在windows 2000或NT得计算机上运行,但本文主要介绍的是在windows server 2003 上运行的配置)
2,DHCP服务器要有一个静态的IP地址、子网掩码和其他的TCP/IP信息
3,要安装DHCP服务
4,使用活动目录服务必须授权DHCP服务器
5,建立作用域并激活。
实验步骤:
1,配置自己的IP地址,(静态)
2,在"添加删除程序"选择"添加/删除组件",在框中选中"网络服务"(但不要打钩),点下面的"详细信息"里面的"动态分配主机协议"(DHCP打钩)然后"确定","下一步"
3,“在开始菜单”“管理工具”里面选中“DHCP”,打开后“新建作用域”
4,客户机上运行CMD进入命令行模式:输入ipconfig /release 清空IP信息。然后输入ipconfig /renew 获取IP信息。(注意客户机必须是动态获取IP地址)
LIUNX中DHCP工作原理及配置过程详解
DHCP服务配置
DHCP服务占67号端口,DHCP的前身是bootps这个协议。
可以通过这个命令证明:#cat /etc/services | grep bootps
bootps 67/tcp #BOOTP servier
bootps 67/udp
DHCP全称是动态主机配置协议(Dynamic Host Configuration Protocol),是由IETF(Internet网络工
程师任务小组)设计的,详尽的协议内容在RFC文档rfc2131和rfc1541里。它是用来自动给客户机分配
TCP/IP信息的网络协议。每个DHCP客户都连接到中央位置的DHCP服务器,该服务器会返回包括IP地址、网
关和DNS服务器信息的客户网络配置。
DHCP的工作过程
(1)IP租用请求:DHCP客户机启动计算机后,通过UDP端口67广播一个DHCPDISCOVER信息包,向网络上的任
意一个DHCP服务器请求提供IP租约。
(2)IP租用提供:网络上所有的DHCP服务器均会收到此信息包,每台DHCP服务器通过UDP端口68给DHCP客户
机回应一个DHCPOFFER广播包,提供一个IP地址。
(3)IP租用选择:客户机从不止一台DHCP服务器接收到提供之后,会选择第一个收到的DHCPOFFER包,并向
网络中广播一个DHCPREQUEST消息包,表明自己已经接受了一个DHCP服务器提供的IP地址。该广播包中包
含所接受的IP地址和服务器的IP地址。
(4)IP租用确认:被客户机选择的DHCP服务器在收到DHCPREQUEST广播后,公广播返回给客户机一个
DHCPACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该
广播包发给客户机。
客户机在收到DHCPACK包后,会使用该广播包中的信息来配置自己的TCP/IP,则租用过程完成,客户
机可以在网络中通信。
/usr/sbin/dhcpd //dhcp执行文件 /var/lib/dhcp/dhcpdleases //dhcp租约文件
DHCP配置文件
Linux默认是没有dhcpdconf文件的,需要我们自己到/usr/share/doc/dhcp-30p12文件夹下把
dhcpconfsample模板文件拷贝到/etc文件夹下起名叫dhcpdconf
#cp /usr/share/doc/dhcp-30p12/dhcpconfsample /etc/dhcpdconf
#vi /etc/dhcpdconf //打开/etc/dhcpdconf文件
ddns-update-style interim; //配置使用过渡性DHCP-DNS互动更新模式
ignore client-updates; //忽略客户端更新
subnet 19216800 netmask 2552552550 { //subnet后面必须跟网段,设置您要对哪个网段提
供dhcp提供,注意DHCP服务器IP地址必须和该网段相符,否则DHCP服务不能启动
option routers 19216801; //为DHCP客户指定默认网关(gateway)
option subnet-mask 2552552550; //为DHCP客户指定子网掩码
(netmask)
option nis-domain "domainorg"; //为DHCP客户设置NIS域
option domain-name "domainorg"; //为DHCP客户设置DNS域
option domain-name-servers 19216811; //为DHCP客户设置DNS服务器地址
option time-offset -18000; //设置与枨林威治时间的偏移时间(s)
range dynamic-bootp 1921680128 1921680255; //设置地址池,为DHCP客户分配IP
地址的地址段,客户可以分到该段内的任意地址;建议把1921680255改为1920168254,因为客户机
不可能被分配到255这台机器,255是广播地址
default-lease-time 21600; //为DHCP客户设置默认的地址租期,单位为秒
max-lease-time 43200; //为DHCP客户设置最长的地址租期,单位为秒
host ns { //这部分是关于DHCP服务器的声明
next-server marvinredhatcom; //设置用于定义服务器从引导文件中装入的主
机名,用于无盘工作站
hardware ethernet 12:34:56:78:AB:CD //指定DHCP客户的MAC地址
fixed-address 20717542254; //指定MAC地址分配固定的IP地址
}
}
以上就是对DHCP配置文件每项的详细解释。
如果碰到DCHP设置都正确,但是启动DHCP服务启动不成功请查看一下/etc/sysconfig/network文件
NETWORKING这项是否为yes,如果不是yes请修改为yes。
#vi /etc/sysconfig/network
NETWORKING=yes
或者执行该 *** 作同等于上面的 *** 作#echo "NETWORKING=yes" >> /etc/syconfig/network
下面我们来配置一下DHCP客户机
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 //网卡设备文件名称设置正确
BOOTPROTO=dhcp //自动获得IP地址
ONBOOT=yes
保存退出(wq),启动DHCP服务#service dhcpd start,设置生效。用户就可以获得DHCP服务器地址池内的
其中一个IP地址。
#ifconfig //就会看到DHCP服务器为客户机分配的地址池内的一个IP地址
给DHCP客户机分配固定的IP地址
在DHCP客户机查看MAC(网卡)地址
#ifconfig //可以查看到MAC地址,如MAC地址是12:34:56:78:AB:CD
在DHCP服务器端设置
#vi /etc/dhcpdconf
host ns {
next-server marvinredhatcom;
hardware ethernet 12:34:56:78:AB:CD //指定DHCP客户机网卡地址为
12:34:56:78:AB:CD,IP地址固定设置为1921680100
fixed-address 1921680100
保存退出(wq)
#service dhcpd restart //重启dhcp服务设置生效
在DHCP客户机里重启网络服务#service network restart 可以得到DHCP服务器最新分配给客户机的IP地
址。
#ifconfig //查看IP地址
inet addr 1921680100
设置生效,DHCP服务器已经为DHCP客户机分配了固定的IP地址。
DHCP客户机重启network服务后可以看到DHCP主机的一些信息效果 #cat /etc/resolvconf
windows系统做DHCP客户机
IP地址设置为自动获得IP地址:开始---控制面板---网络连接---本地连接---属性(反击)---常规---
Internet协议(TCP/IP)---属性---自动获得IP地址---确定---确定
查看自获的IP地址:开始---运行---cmd---ipconfig
提示:如果不能自动获取IP地址,请查看是否有防火墙开启,如果有请关闭所有的防火墙。
固定windows的IP地址
方法与Linux *** 作系统相同,只是查看IP地址的时候命令不一样,在windows里是ipconfig,Linux里面是
ifconfig。
在windows里面获得DHCP服务器新的IP地址
ipconfig /release -all //先释放所有网卡IP地址
ipconfig /renew -all //再更新所有的网卡IP地址
就会得到DHCP服务器分配新的IP地址了。
winodws下更改网卡(MAC)地址
我的电脑---属性---硬件---设备管理器---网络适配器---XXXXXX(网卡名称)---属性(反击)---高级
---Network Address---值(连续填入12位MAC地址)
注:相同厂商MAC地址前三段都是一样的。分类: 电脑/网络 >> 反病毒
解析:
什么是 DHCP?
DHCP 是 Dynamic Host Configuration Protocol(动态主机分配协议)缩写,它的前身是 BOOTP。BOOTP 原本是用于无磁盘主机连接的网络上面的:网络主机使用 BOOT ROM 而不是磁盘起动并连接上网络,BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件地址,而且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 "动态性" ,若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常可观的浪费。
DHCP 可以说是 BOOTP 的增强版本,它分为两个部份:一个是服务器端,而另一个是客户端。所有的 IP 网络设定数据都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境数据。比较起 BOOTP ,DHCP 透过 "租约" 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考虑,DHCP 也完全照顾了 BOOTP Client 的需求。
DHCP 的分配形式
首先,必须至少有一台 DHCP 工作在网络上面,它会监听网络的 DHCP 请求,并与客户端搓商 TCP/IP 的设定环境。它提供两种 IP 定位方式:
Automatic Allocation
自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后,就永远使用这个地址。
Dynamic Allocation
动态分配,当 DHCP 第一次从 HDCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的 IP 地址。
动态分配显然比自动分配更加灵活,尤其是当您的实际 IP 地址不足的时候,例如:您是一家 ISP ,只能提供 200 个IP地址用来给拨接客户,但并不意味着您的客户最多只能有 200 个。因为要知道,您的客户们不可能全部同一时间上网的,除了他们各自的行为习惯的不同,也有可能是电话线路的限制。这样,您就可以将这 200 个地址,轮流的租用给拨接上来的客户使用了。这也是为什么当您查看 IP 地址的时候,会因每次拨接而不同的原因了(除非您申请的是一个固定 IP ,通常的 ISP 都可以满足这样的要求,这或许要另外收费)。当然,ISP 不一定使用 DHCP 来分配地址,但这个概念和使用 IP Pool 的原理是一样的。
DHCP 除了能动态的设定 IP 地址之外,还可以将一些 IP 保留下来给一些特殊用途的机器使用,它可以按照硬件地址来固定的分配 IP 地址,这样可以给您更大的设计空间。同时,DHCP 还可以帮客户端指定 router、mask、DNS Server、WINS Server、等等项目,您在客户端上面,除了将 DHCP 选项打勾之外,几乎无需做任何的 IP 环境设定。
DHCP 的工作原理
根据客户端是否第一次登录网络,DHCP 的工作形式会有所不同。
第一次登录的时候:
寻找 Server。当 DHCP 客户端第一次登录网络的时候,也就是客户发现本机上没有任何 IP 数据设定,它会向网络发出一个 DHCP DISCOVER 封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为 0000 ,而目的地址则为 255255255255 ,然后再附上 DHCP discover 的信息,向网络进行广播。
在 Windows 的预设情形下,DHCP discover 的等待时间预设为 1 秒,也就是当客户端将第一个 DHCP discover 封包送出去之后,在 1 秒之内没有得到响应的话,就会进行第二次 DHCP discover 广播。若一直得不到响应的情况下,客户端一共会有四次 DHCP discover 广播(包括第一次在内),除了第一次会等待 1 秒之外,其余三次的等待时间分别是 9、13、16 秒。如果都没有得到 DHCP 服务器的响应,客户端则会显示错误信息,宣告 DHCP discover 的失败。之后,基于使用者的选择,系统会继续在 5 分钟之后再重复一次 DHCP discover 的过程。
提供 IP 租用地址。当 DHCP 服务器监听到客户端发出的 DHCP discover 广播后,它会从那些还没有租出的地址范围内,选择最前面的空置 IP ,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER 封包。
由于客户端在开始的时候还没有 IP 地址,所以在其 DHCP discover 封包内会带有其 MAC 地址信息,并且有一个 XID 编号来辨别该封包,DHCP 服务器响应的 DHCP offer 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定,DHCP offer 封包会包含一个租约期限的信息。
接受 IP 租约。如果客户端收到网络上多台 DHCP 服务器的响应,只会挑选其中一个 DHCP offer 而已(通常是最先抵达的那个),并且会向网络发送一个DHCP request广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。
同时,客户端还会向网络发送一个 ARP 封包,查询网络上面有没有其它机器使用该 IP 地址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLINE 封包给 DHCP 服务器,拒绝接受其 DHCP offer ,并重新发送 DHCP discover 信息。
事实上,并不是所有 DHCP 客户端都会无条件接受 DHCP 服务器的 offer ,尤其这些主机安装有其它 TCP/IP 相关的客户软件。客户端也可以用 DHCP request 向服务器提出 DHCP 选择,而这些选择会以不同的号码填写在 DHCP Option Field 里面:
换一句话说,在 DHCP 服务器上面的设定,未必是客户端全都接受,客户端可以保留自己的一些 TCP/IP 设定。而主动权永远在客户端这边。
租约确认。当 DHCP 服务器接收到客户端的 DHCP request 之后,会向客户端发出一个 DHCPACK 响应,以确认 IP 租约的正式生效,也就结束了一个完整的 DHCP 工作过程。
DHCP 发放流程
第一次登录之后:
一旦 DHCP 客户端成功地从服务器哪里取得 DHCP 租约之后,除非其租约已经失效并且 IP 地址也重新设定回 0000 ,否则就无需再发送 DHCP discover 信息了,而会直接使用已经租用到的 IP 地址向之前之 DHCP 服务器发出 DHCP request 信息,DHCP 服务器会尽量让客户端使用原来的 IP 地址,如果没问题的话,直接响应 DHCPack 来确认则可。如果该地址已经失效或已经被其它机器使用了,服务器则会响应一个 DHCPNACK 封包给客户端,要求其从新执行 DHCP discover。
至于 IP 的租约期限却是非常考究的,并非如我们租房子那样简单, 以 NT 为例子:DHCP 工作站除了在开机的时候发出 DHCP request 请求之外,在租约期限一半的时候也会发出 DHCP request ,如果此时得不到 DHCP 服务器的确认的话,工作站还可以继续使用该 IP ;然后在剩下的租约期限的再一半的时候(即租约的75%),还得不到确认的话,那么工作站就不能拥有这个 IP 了。至于为什么不是到租约期限完全结束才放弃 IP 呢?,对不起,小弟也是不学无术之人,没有去深究了,只知道要回答 MCSE 题目的时候,您一定要记得 NT 是这么工作的就是了。
要是您想退租,可以随时送出 DHCPLEREASE 命令解约,就算您的租约在前一秒钟才获得的。
跨网络的 DHCP 运作
从前面描述的过程中,我们不难发现:DHCDISCOVER 是以广播方式进行的,其情形只能在同一网络之内进行,因为 router 是不会将广播传送出去的。但如果 DHCP 服务器安设在其它的网络上面呢?由于 DHCP 客户端还没有 IP 环境设定,所以也不知道 Router 地址,而且有些 Router 也不会将 DHCP 广播封包传递出去,因此这情形下 DHCP DISCOVER 是永远没办法抵达 DHCP 服务器那端的,当然也不会发生 OFFER 及其它动作了。要解决这个问题,我们可以用 DHCP Agent (或 DHCP Proxy )主机来接管客户的 DHCP 请求,然后将此请求传递给真正的 DHCP 服务器,然后将服务器的回复传给客户。这里,Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。
若不使用 Proxy,您也可以在每一个网络之中安装 DHCP 服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。当然喽,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。端视您的实际情况而定了。
DHCP封包格式
以下为各字段的简要说明:
OP
若是 client 送给 server 的封包,设为 1 ,反向为 2 。
HTYPE
硬件类别,Ether 为 1 。
HLEN
硬件地址长度, Ether 为 6 。
HOPS
若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0 。
TRANSACTION ID
DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。
SECONDS
Client 端启动时间(秒)。
FLAGS
从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。
ciaddr
要是 client 端想继续使用之前取得之 IP 地址,则列于这里。
yiaddr
从 server 送回 client 之 DHCP OFFER 与 DHCPACK 封包中,此栏填写分配给 client 的 IP 地址。
siaddr
若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK 封包中,此栏填写开机程序代码所在 server 之地址。
giaddr
若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0 。
chaddr
Client 之硬件地址。
sname
Server 之名称字符串,以 0x00 结尾。
file
若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。
options
允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如:Netmask、Gateway、DNS、等等)。其长度可变,同时可携带多个选项,每一选项之第一个 byte 为信息代码,其后一个 byte 为该项数据长度,最后为项目内容。
CODE LEN VALUE
此字段完全兼容 BOOTP ,同时扩充了更多选项。其中,DHCP 封包可利用编码为 0x53 之选项来设定封包类别:
项值 类别
1 DHCP DISCOVER
2 DHCP OFFER
3 DHCP REQUEST
4 DHCPDECLINE
5 DHCPACK
6 DHCPNACK
7 DHCPRELEASE
DHCP 的选项非常多,有空请查阅 RFC 或相关文献,并好好理解,这里不再叙述了。
DHCP 协议之 RFC 文件
RFC-951、RFC-1084、RFC-1123、RFC-1533、RFC-1534、RFC-1497、RFC-1541DHCP 是 Dynamic Host Configuration Protocol(动态主机分配协议)缩写,它的前身是 BOOTP。BOOTP 原本是用于无磁盘主机连接的网络上面的:网络主机使用 BOOT ROM 而不是磁盘起动并连接上网络,BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件地址,而且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 "动态性" ,若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常可观的浪费。 DHCP 可以说是 BOOTP 的增强版本,它分为两个部份:一个是服务器端,而另一个是客户端。所有的 IP 网络设定数据都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境数据。比较起 BOOTP ,DHCP 透过 "租约" 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考虑,DHCP 也完全照顾了 BOOTP Client 的需求。 DHCP 的分配形式 首先,必须至少有一台 DHCP 工作在网络上面,它会监听网络的 DHCP 请求,并与客户端磋商 TCP/IP 的设定环境。它提供三种 IP 定位方式:
Manual Allocation
网络管理员为某些少数特定的Host绑定固定IP地址,且地址不会过期
Automatic Allocation
自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后,就永远使用这个地址。
Dynamic Allocation
动态分配,当 DHCP 第一次从 DHCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的 IP 地址。 动态分配显然比自动分配更加灵活,尤其是当您的实际 IP 地址不足的时候,例如:您是一家 ISP ,只能提供 200 个IP地址用来给拨接客户,但并不意味着您的客户最多只能有 200 个。因为要知道,您的客户们不可能全部同一时间上网的,除了他们各自的DHCP 的工作原理 根据客户端是否第一次登录网络,DHCP 的工作形式会有所不同。 第一次登录的时候:
寻找 Server。当 DHCP 客户端第一次登录网络的时候,也就是客户发现本机上没有任何 IP 数据设定,它会向网络发出一个 DHCP DISCOVER 封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为 0000 ,而目的地址则为 255255255255 ,然后再附上 DHCP discover 的信息,向网络进行广播。 在 Windows 的预设情形下,DHCP discover 的等待时间预设为 1 秒,也就是当客户端将第一个 DHCP discover 封包送出去之后,在 1 秒之内没有得到响应的话,就会进行第二次 DHCP discover 广播。若一直得不到响应的情况下,客户端一共会有四次 DHCP discover 广播(包括第一次在内),除了第一次会等待 1 秒之外,其余三次的等待时间分别是 9、13、16 秒。如果都没有得到 DHCP 服务器的响应,客户端则会显示错误信息,宣告 DHCP discover 的失败。之后,基于使用者的选择,系统会继续在 5 分钟之后再重复一次 DHCP discover 的过程。
提供 IP 租用地址。当 DHCP 服务器监听到客户端发出的 DHCP discover 广播后,它会从那些还没有租出的地址范围内,选择最前面的空置 IP ,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER 封包。 由于客户端在开始的时候还没有 IP 地址,所以在其 DHCP discover 封包内会带有其 MAC 地址信息,并且有一个 XID 编号来辨别该封包,DHCP 服务器响应的 DHCP offer 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定,DHCP offer 封包会包含一个租约期限的信息。
接受 IP 租约。如果客户端收到网络上多台 DHCP 服务器的响应,只会挑选其中一个 DHCP offer 而已(通常是最先抵达的那个),并且会向网络发送一个DHCP request广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)