208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
址,所以在其 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 之后,会向客户端发出一个
228
11
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253
相关图片
DHCPACK 响应,以确认 IP 租约的正式生效,也就结束了一个完整的 DHCP 工作过程。
DHCP 发放流程第一次登录之后:一旦 DHCP 客户端成功地从服务器那里取得 DHCP 租约之后,除非其租约已经失效并且 IP 地址也重新设定回 0.0.0.0 ,否则就无需再发送 DHCP discover 信息了,而会直接使用已经租用到的 IP 地址向之前的 DHCP服务器发出 DHCP request 信息,DHCP 服务器会尽量让客户端使用原来的 IP 地址,如果没问题的话,直接响应 DHCPack 来确认则可。如果该地址已经失效或已经被其它机器使用了,服务器则会响应一个 DHCPNACK 封包给客户端,要求其重新执行 DHCP discover。至于 IP 的租约期限却是非常考究的,并非如我们租房子那样简单, 以 NT 为例子:DHCP 客户端除了在开机的时候发出 DHCP request 请求之外,在租约期限一半的时候也会发出 DHCP request ,如果此时得不到 DHCP 服务器的确认的话,客户端还可以继续使用该 IP ;当租约期过了87.5%时,如果客户端仍然无法与当初的DHCP服务器联系上,它将与其它DHCP服务器通信。如果网络上再没有任何DHCP服务器在运行时,该客户端必须停止使用该IP地址,并从发送一个Dhcpdiscover数据包开始,再一次重复整个过程。要是您想退租,可以随时送出 DHCPRELEASE 命令解约,就算您的租约在前一秒钟才获得的。
跨网络的 DHCP 运作 从前面描述的过程中,我们不难发现:DHCP DISCOVER 是以广播方式进行的,其情形只能在同一网络之内进行,因为 router 是不会将广播传送出去的。但如果 DHCP 服务器安设在其它的网络上面呢?由于 DHCP 客户端还没有 IP 环境设定,所以也不知道 Router 地址,而且有些 Router 也不会将 DHCP 广播封包传递出去,因此这情形下 DHCP DISCOVER 是永远没办法抵达 DHCP 服务器那端的,当然也不会发生 OFFER 及其它动作了。要解决这个问题,我们可以用 DHCP Agent (或 DHCP Proxy )主机来接管客户
12
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
的 DHCP 请求,然后将此请求传递给真正的 DHCP 服务器,然后将服务器的回复传给客户。这里,Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。若不使用 Proxy,您也可以在每一个网络之中安装 DHCP 服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。当然喽,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。视您的实际情况而定了。
编辑本段DHCP的责任
1.保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。 2.DHCP应当可以给用户分配永久固定的IP地址。
3.DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)
4.DHCP服务器应当向现有的BOOTP客户端提供服务。 编辑本段封包格式
以下为各字段的简要说明: OP
若是 client 送给 server 的封包,设为 1 ,反向为 2。HTYPE
270 271
DHCP报文格式
13
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290
硬件类别,Ethernet 为 1。 HLEN
硬件地址长度, Ethernet 为 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、
14
291 292 293 294 295 296 297 298 299 300 301 302
DHCPNACK 封包中,此栏填写开机程序代码所在 server 之地址。 giaddr
若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0。 chaddr
Client 之硬件地址。 sname
Server 之名称字符串,以 0x00 结尾。 file
若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。 options
允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如
303 304 305 306 307
相关图片
:Netmask、Gateway、DNS、等等)。其长度可变,同时可携带多个选项,每一选项之第一个 byte 为信息代码,其后一个 byte 为该项数据长度,最后为项目内容。CODE LEN VALUE 此字段完全兼容 BOOTP ,同时扩充了更多选项。
15
最新DHCP服务使用与简介



