6.3 动态主机配置协议DHCP.pdf

概念

  • 互联网广泛使用的动态主机配置协议 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用连网 (plug-and-play networking) 的机制。
  • 这种机制允许一台计算机加入新的网络和获取 IP 地址,而不用手工配置。

    DHCP的作用

    在之前,如果要正常访问Web服务器,需要该主机手动配置网络的相关配置信息
    image.png

    在没有DHCP时,我们需要手动给每台主机设计IP地址、子网掩码、默认网关等数据。 当网络中主机较多时,手工配置的工作量大,并且容易出错。

如果我们给网络中添加一台DHCP服务器
image.png

在引入DHCP服务器后,网络中各主机开机后自动启动DHCP程序,向DHCP服务器请求自己的网络配置信息。
此时网络中各主机就可以通过DHCP自动获取网络配置信息。

DHCP的工作过程

DHCP 使用客户 - 服务器方式

  • 需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文 (DHCP DISCOVER),这时该主机就成为 DHCP 客户。
  • 本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。
  • DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池 (address pool) 中取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文(DHCP OFFER)。

    DHCP 工作方式

  • DHCP 使用客户-服务器方式,采用请求/应答方式工作。

  • DHCP 基于 UDP 工作(DHCP报文在运输层会被封装成为UDP用户数据报),DHCP 服务器运行在 67 号端口, DHCP客户运行在 68 号端口

    DHCP交互过程

  1. 客户端广播DHCP发送报文

image.png

由于此时客户端还没有设置地址,此时将源地址设置为0.0.0.0目的地址设置为广播地址255.255.255.255,目的端口设置为67(DHCP服务器端口)

除了DHCP服务器外,其他进程不能接收该UDP报文(其他接收端口不是67)

在DHCP发送报文中格式比较复杂,只需要知道其内部有事务ID和DHCP客户端的MAC地址

由于DHCP服务器进程是一直运行的,当收到DHCP发送报文后,会根据其MAC地址在自己的数据库查找,若数据库中有该MAC地址的配置信息,则用这些配置信息来构建发送报文。若没有,则采用默认信息来构建并发送DHCP报文

  1. DHCP服务器接收报文后返回DHCP提供报文:

image.png

源地址设置为服务器地址,由于此时客户端还没有设置地址,此时将,目的地址设置为广播地址255.255.255.255(只有广播地址能使其接到),目的端口设置为68(DHCP客户端端口)

除了DHCP客户端外,其他进程不能接收该UDP报文(其他接收端口不是68)

在DHCP提供报文中有以下信息:

事务ID:DHCP客户会根据DHCP提供的事务ID,当报文中的事务ID与客户端的发送的事务ID相等时,就表示是自己请求的报文,将其接收。

配置信息:IP地址、子网掩码、地址租期等。 在使用IP地址时会使用ARP协议来确保所选IP地址未被网络中其他主机占用。 在本例子中会受到两个服务器发来的报文,只会从中选择一个,并且一般会选择先到达的那个。 并向该服务器发送DHCP请求发送报文。

  • 配置信息:
  1. * IP地址:DHCP服务器从自己的IP地址池中挑选待租用给主机的IP地址(使用ARP来确保所选IP地址未被网络中其他主机占用)
  2. * 子网掩码
  3. * 地址租期
  4. * 默认网关
  5. * DNS服务器

源IP地址:发送DHCP提供报文的DHCP服务器的IP 目的地址:因为目的主机还没分配到IP,所以使用广播地址

  1. 客户端发送选择服务器的发送请求报文:

在本例中,DHCP客户会收到两个DHCP服务器发来的DHCP提供报文,DHCP客户从中选择一个,一般选择先到的,并向所选择的DHCP服务器发送DHCP请求报文
image.png

此时为了避免向网络中的每一个DHCP服务器单播发送DHCP请求报文,选择广播发送报文,来告知他们是不是自己选择的DHCP服务器。

DHCP请求报文中封装有以下数据: 事务ID、DHCP客户端的MAC地址、接受租约中的IP地址、接收此租约DHCP服务器的IP地址。

DPCH服务器根据报文中的内容,若发现其选择自己服务器,便将其接收,并给该客户端发送DHCP确认报文。

  1. DHCP服务器发送确认报文:

在本例中,假设DHCP客户端选择DHCP服务器1作为自己的DHCP服务器,DHCP服务器1接受该请求,于是DHCP服务器1给DHCP客户端发送DHCP确认报文
image.png

源地址:DHCP服务器1的IP地址

目的地址:广播地址

DHCP客户收到该报文后就可以使用租用的IP地址 在使用前还会进行ARP检测 image.png

剩下流程图示
image.png

当到达租用期的一半时,会发送续约请求给服务器,根据服务器情况进行相应反馈。

若没收到服务器反馈,会在0.75个续约期后再次发送并等待回应。

若还是没有反应,会在续约期到达后立即放弃使用该IP地址。

客户端可以随时终止使用该IP地址。

image.png

DHCP中继代理

下图的网络拓扑中的各主机是否可以通过DHCP来自动获取到网络配置?
image.png

由于路由器隔离广播域,因此其DHCP请求报文不能发送到DHCP服务器中,所以其不能使用DHCP服务。

解决方法是给服务器配置一个DHCP服务器地址,使其称为DHCP代理中继:
image.png

使用DHCP中继代理是因为我们不用给每一个网络上都设置一个DHCP服务器,这样会使DHCP服务器的数量太多

这样做的原因是可以减少DHCP服务器的数量

通过中继代理进行转发来获取DHCP,而不用新增加一个DHCP服务器。

总结

image.png