1、6.6 动态主机配置协议 DHCPn为了将软件协议做成通用的和便于移植,协议软件的编写者把协议软件参数化。这就使得在很多台计算机上使用同一个经过编译的二进制代码成为可能。n一台计算机和另一台计算机的区别,都可通过一些不同的参数来体现。n在软件协议运行之前,必须给每一个参数赋值。协议配置n在协议软件中给这些参数赋值的动作叫做协议配置。n一个软件协议在使用之前必须是已正确配置的。n具体的配置信息有哪些则取决于协议栈。协议配置(续)n需要配置的项目 (1)IP 地址 (2)子网掩码 (3)默认路由器的 IP 地址 (4)域名服务器的 IP 地址n这些信息通常存储在一个配置文件中,计算机在引导过程中可
2、以对这个文件进行存取。动态主机配置协议 DHCP(Dynamic Host Configuration Protocol)n动态主机配置协议 DHCP 提供了即插即用连网(plug-and-play networking)的机制。n这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。DHCP 使用客户服务器方式。n需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为 DHCP 客户。n本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。nDHCP 服务器先在其数据库中查找该计算机的配置信息。若
3、找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。DHCP 服务器的回答报文叫做提供报文(DHCPOFFER)。DHCP 中继代理(relay agent)n并不是每个网络上都有 DHCP 服务器,这样会使 DHCP 服务器的数量太多。现在是每一个网络至少有一个 DHCP 中继代理,它配置了 DHCP 服务器的 IP 地址信息。n当 DHCP 中继代理收到主机发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机。DHCP 中
4、继代理以单播方式转发发现报文 主机DHCP服务器其他网络DHCP中继代理DHCPDISCOVER广播DHCPDISCOVER单播注意:DHCP 报文只是 UDP 用户数据报中的数据。租用期(lease period)nDHCP 服务器分配给 DHCP 客户的 IP 地址的临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为租用期。n租用期的数值应由 DHCP 服务器自己决定。nDHCP 客户也可在自己发送的报文中(例如,发现报文)提出对租用期的要求。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCP
5、OFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPNACK服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPRELEASE服务器6768UDPUDP服务器67UDP被动打开:DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCPOFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP
6、客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPNACK服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPRELEASE服务器6768UDPUDP服务器67UDP被动打开:DHCP 客户从 UDP 端口 68 发送 DHCP 发现报文。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCPOFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPU
7、DP客户DHCPNACK服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPRELEASE服务器6768UDPUDP服务器67UDP被动打开:凡收到 DHCP 发现报文的 DHCP 服务器 都发出 DHCP 提供报文,因此 DHCP 客户 可能收到多个 DHCP 提供报文。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCPOFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPNACK
8、服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPRELEASE服务器6768UDPUDP服务器67UDP被动打开:DHCP 客户从几个 DHCP 服务器中选择 其中的一个,并向所选择的 DHCP 服务 器发送 DHCP 请求报文。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCPOFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPNACK服务器6768UDPUDP客户DHCPA
9、CK服务器6768UDPUDP客户DHCPRELEASE服务器6768UDPUDP服务器67UDP被动打开:被选择的 DHCP 服务器发送确认报文 DHCPACK,进入已绑定状态,并可 开始使用得到的临时 IP 地址了。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCPOFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPNACK服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPR
10、ELEASE服务器6768UDPUDP服务器67UDP被动打开DHCP 客户现在要根据服务器提供的租用期 T 设置两个计时器 T1 和 T2,它们的超时时间分别是 0.5T 和 0.875T。当超时时间到就要请求更新租用期。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCPOFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPNACK服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHC
11、PRELEASE服务器6768UDPUDP服务器67UDP被动打开:租用期过了一半(T1 时间到),DHCP 发送 请求报文 DHCPREQUEST 要求更新租用期。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCPOFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPNACK服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPRELEASE服务器6768UDPUDP服务器67UDP
12、被动打开:DHCP 服务器若同意,则发回确认报文 DHCPACK。DHCP 客户得到了新的租 用期,重新设置计时器。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCPOFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPNACK服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPRELEASE服务器6768UDPUDP服务器67UDP被动打开:DHCP 服务器若不同意,则发回否认报文
13、 DHCPNACK。这时 DHCP 客户必须立即 停止使用原来的 IP 地址,而必须重新申 请 IP 地址(回到步骤)。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCPOFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPNACK服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPRELEASE服务器6768UDPUDP服务器67UDP被动打开若 D H C P 服 务 器 不 响
14、 应 步 骤 的 请 求 报 文DHCPREQUEST,则在租用期过了 87.5%时,DHCP 客户必须重新发送请求报文 DHCPREQUEST(重复步骤),然后又继续后面的步骤。DHCP 协议的工作过程 客户DHCPDISCOVER服务器6768UDPUDP客户DHCPOFFER服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPREQUEST服务器6768UDPUDP客户DHCPNACK服务器6768UDPUDP客户DHCPACK服务器6768UDPUDP客户DHCPRELEASE服务器6768UDPUDP服务器67UDP被动打开:DHCP 客户可随时提前终止服务器所提供的 租用期,这时只需向 DHCP 服务器发送释 放报文 DHCPRELEASE 即可。