获取主机地址:动态主机配置协议DHCP
动态主机配置协议(Dynamic Host Configuration,DHCP)允许主机自动获取一个IP地址。网络管理员能够配置DHCP,以使某给定主机每次与网络连接时能得到一个相同的IP地址,或者某主机将被分配一个临时的IP地址 ,该地址在每次与网络连接时也许是不同的。除了主机IP地址分配外,DHCP还允许一台主机得知其他信息,例如它的子网掩码、它的第一跳路由器地址(常称为默认网关)与它的本地 DNS服务器的地址。
DHCP使用场景
由于 DHCP具有自动将主机连接进一个网络的能力,故它又常被称为即插即用协议。这种能力对于网络管理员来说非常有吸引力,否则他将不得不手工执行这些任务! DHCP还广泛地使用于住宅因特网接入网与无线局域网中,其中的主机频繁地加入和离开网络。
例如,考虑一个学生带着便携机从宿舍到图书馆再到教室。很有可能在每个位置,这个学生将连接到一个新的子网,因此在每个位置都需要一个新的IP地址。DHCP在此情形下是最理想的方法,因为有许多用户来来往往,仅在有限的时间内需要地址。类似地,DHCP在住宅ISP接入网中是有用的。举一个例子,一个住宅区 ISP有2000个客户,但不会有超过400个客户同时在线。在这种情况下,动态地分配地址的DHCP服务器不需要一个含2048个地址的块,而仅需一个含512个地址的块(例如像形式为a.b.c.d/23的块)。当主机加入或离开时,DHCP服务器要更新其可用的IP地址表。每当一台主机加入时,DHCP服务器从其当前可用的地址池中分配一个任意的地址给它;每当一台主机离开时,其地址便被收回这个池中。
DHCP是一个客户-服务器协议。客户通常是新达到的主机,它要获得包括自身使用的IP地址在内的网络配置信息。在最简单场合下,每个子网将具有一台DHCP服务器。如果在某子网中没有服务器,则需要一个 DHCP中继代理(通常是一台路由器),这个代理知道用于该网络的DHCP服务器的地址。
上图显示了连接到子网223.1.2/24的一台 DHCP服务器,具有一台提供中继代理服务的路由器,它为连接到子网223.1. 1/24和223.1.3/24的到达客户提供 DHCP服务。
对于一台新到达的主机而言,针对上图所示的网络设置,DHCP 协议是一个4个步骤的过程,如下图DHCP客户-服务器交互所示:yiaddr(表示“你的因特网地址”之意)指示被分配给该新到达客户的地址。
这4个步骤是:
- DHCP服务器发现。一台新到的主机的首要任务是发现一个要与其交互的 DHCP服务器。这可通过使用一个 DHCP发现报文来完成,客户在UDP分组中向端口67发送该发现报文。但是这个数据报应发给谁呢?主机甚至不知道它所连接网络的IP地址,更不用说用于该网络的 DHCP服务器地址了。在这种情况下,DHCP客户生成包含DHCP发现报文的IP数据报,其中使用广播目的地址255.255.255.255(该报文会交付给同一个网络中的所有主机)源地址使用0.0.0.0。DHCP客户将该IP数据报传递给链路层,链路层然后将该帧广播到所有与该子网连接的子网
- DHCP服务器提供。DHCP服务器收到一个 DHCP发现报文时,用一个 DHCP提供报文向客户作出响应,仍然使用IP广播地址255.255. 255.255。因为在子网中可能有几个DHCP服务器,该客户也许会发现它处于能在几个提供者之间进行选择的优越位置。每台服务器提供的报文包含有收到的发现报文的事务ID、向客提供的IP地址、网络掩码以及IP地址租用期,即IP地址有效的时间量。服务器租用期通常设置为几小时或几天。
- DHCP请求。新到达的客户从一个或多个服务器提供中选择一个,并向选中的服务器提供用一个 DHCP请求报文(DHCP)进行响应,回显配置参数。
- DHCP ACK。服务器用DHCP ACK报文对DHCP请求报文进行响应,证实所要求的参数。
然而,从移动性角度看,DHCP确实有不足之处。因为每当结点连到一个新子网时,要从 DHCP得到一个新的IP地址,当一个移动结点在子网之间移动时,就不能维持与远程应用之间的TCP连接。移动IP技术就解决了这种问题。