DHCP协议的租约确认和封包格式

网络 网络管理
我们接下来主要讲述一下有关于DHCP协议的租约确认和封包格式。在这里,租约确认也是流程的一部分,那么封包格式则是我们重点强调的部分。

对于DHCP协议我们总是有很多内容需要介绍。在之前我们已经对概念、结构和工作流程有了一定的了解了。这里,我们将要在流程中补充一部分知识,另外在对DHCP协议的封包格式进行重点讲述。

租约确认

当 DHCP服务器接收到客户端的 DHCPrequest 之后,会向客户端发出一个 DHCPACK 响应,以确认IP租约的正式生效,也就结束了一个完整的 DHCP工作过程。

DHCP发放流程***次登录之后: 一旦 DHCP客户端成功地从服务器哪里取得 DHCP租约之后,除非其租约已经失效并且IP地址也重新设定回 0.0.0.0 ,否则就无需再发送 DHCPdiscover 信息了,而会直接使用已经租用到的IP地址向之前之 DHCP服务器发出 DHCPrequest 信息,DHCP服务器会尽量让客户端使用原来的IP地址,如果没问题的话,直接响应 DHCPack 来确认则可。如果该地址已经失效或已经被其它机器使用了,服务器则会响应一个 DHCPNACK 封包给客户端,要求其从新执行 DHCPdiscover。

至于IP的租约期限却是非常考究的,并非如我们租房子那样简单, 以 NT 为例子:DHCP工作站除了在开机的时候发出 DHCPrequest 请求之外,在租约期限一半的时候也会发出 DHCPrequest ,如果此时得不到 DHCP服务器的确认的话,工作站还可以继续使用该IP;当租约期过了87.5%时,如果客户机仍然无法与当初的DHCP服务器联系上,它将与其它DHCP服务器通信。如果网络上再没有任何DHCP协议服务器在运行时,该客户机必须停止使用该IP地址,并从发送一个Dhcpdiscover数据包开始,再一次重复整个过程。要是您想退租,可以随时送出 DHCPRELEASE 命令解约,就算您的租约在前一秒钟才获得的。

跨网络的 DHCP运作 从前面描述的过程中,我们不难发现:DHCPDISCOVER 是以广播方式进行的,其情形只能在同一网络之内进行,因为 router 是不会将广播传送出去的。但如果 DHCP服务器安设在其它的网络上面呢?由于 DHCP客户端还没有IP环境设定,所以也不知道 Router 地址,而且有些 Router 也不会将 DHCP广播封包传递出去,因此这情形下 DHCPDISCOVER 是永远没办法抵达 DHCP服务器那端的,当然也不会发生 OFFER 及其它动作了。要解决这个问题,我们可以用 DHCPAgent (或 DHCPProxy )主机来接管客户的 DHCP请求,然后将此请求传递给真正的 DHCP服务器,然后将服务器的回复传给客户。这里,Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。

若不使用 Proxy,您也可以在每一个网络之中安装 DHCP服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。当然喽,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。端视您的实际情况而定了。

DHCP协议封包格式

以下为各字段的简要说明:

OP 若是 client 送给 server 的封包,设为 1 ,反向为 2 。

HTYPE 硬件类别,Ethernet 为 1 。

HLEN 硬件地址长度, Ethernet 为 6 。

HOPS 若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0 。

TRANSACTION ID DHCPREQUEST 时产生的数值,以作 DHCPREPLY 时的依据。

SECONDS Client 端启动时间(秒)。

FLAGS 从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。

ciaddr 要是 client 端想继续使用之前取得之IP地址,则列于这里。

yiaddr 从 server 送回 client 之DHCPOFFER与 DHCPACK 封包中,此栏填写分配给 client 的IP地址。

siaddr 若 client 需要透过网络开机,从 server 送出之 DHCPOFFER、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 DHCPDISCOVER 2DHCPOFFER3 DHCPREQUEST 4 DHCPDECLIENT 5 DHCPACK 6 DHCPNACK 7 DHCPRELEASE DHCP协议的选项非常多,有空请查阅 RFC 或相关文献,并好好理解,这里不再叙述了。

责任编辑:佟健 来源: 赛迪网
相关推荐

2010-08-23 17:34:06

DHCP协议

2010-08-31 17:33:24

DHCP服务器

2010-08-23 17:29:27

DHCP协议

2010-06-23 14:09:50

DHCP协议

2010-08-30 11:03:48

DHCP服务器Windows 200Windows Ser

2011-09-15 13:42:18

Linuxsquashfs

2010-08-23 17:13:25

设置DHCP协议

2010-08-29 21:21:18

DHCP协议

2010-08-23 17:35:46

DHCP协议

2010-09-01 09:45:42

DHCP协议

2010-07-13 16:12:15

DHCP协议

2010-08-29 21:06:30

DHCP协议

2010-09-29 15:18:25

DHCP协议命令

2010-08-29 21:45:14

DHCP协议

2010-06-24 14:58:06

ICMP协议消息

2010-08-25 09:48:41

DHCP协议

2010-08-23 16:58:17

DHCP协议

2010-08-29 21:26:59

DHCP协议

2010-07-12 15:14:45

DHCP BOOTPBOOTP协议

2010-08-29 21:24:53

DHCP协议
点赞
收藏

51CTO技术栈公众号