为了将软件协议做成通用的和便于移植,协议软件的编写者不会把所有细节都固定在源代码中,而是把协议软件参数化,这就使得在很多台计算机上使用同一个经过编译的二进制代码成为可能。
一台计算机和另一台计算机的区别,都可通过一些不同的参数来体现。在软件协议运行之前,必须给每一个参数赋值。
例如,连接到因特网的计算机的协议软件需要配置的项目包括:
(1)IP地址
(2)子网掩码
(3)默认路由器的IP地址
(4)域名服务器的IP地址
这些信息通常存储在一个配置文件中,计算机可以对这个文件进行存取。
使用人工配置既不方便,又容易出错,现在广泛使用的是动态主机配置协议DHCP(Dynamic Host Configuration Protocol)。DHCP 提供了即插即用连网(plug-and-playnetworking)的机制。这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。
DHCP使用UDP协议工作。
需要 IP 地址的主机在启动时就向DHCP 服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为DHCP 客户。
本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。
DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。DHCP 服务器的回答报文叫做提供报文(DHCPOFFER)。
并不是每个网络上都有 DHCP 服务器,这样会使 DHCP服务器的数量太多。现在是每一个网络至少有一个DHCP 中继代理,它配置了 DHCP 服务器的 IP 地址信息。
当 DHCP 中继代理收到主机发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机。
DHCP 服务器分配给 DHCP 客户的 IP 地址的临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的IP 地址。DHCP 协议称这段时间为租用期。
租用期的数值应由 DHCP 服务器自己决定。DHCP 客户也可在自己发送的报文中(例如,发现报文)提出对租用期的要求。