动态主机配置协议DHCP

一---导读

在日常生活中我们使用电脑,当我们连接到一个新的网络的时候,你知道中间发生了什么,最终你可以上网的吗?一个主机想要上网,需要如下配置信息:IP地址,子网掩码,默认网关,DNS服务器。

如果手动去配置这些,容易出错还麻烦,这时就有一个解放人类双手的好工具-DHCP服务器,可为局域网主机中各主机配置以上4个信息。

主机开机后自启动DHCP服务器,然后向DHCP服务器请求配置信息 本篇我们就来介绍一下DHCP(Dynamic Host  Configuration Protocol)。

 

 

 二---相关术语的介绍

DHCP DISCOVER: DHCP发现报文,其内部装有事物ID和DHCP客户端MAC地址。

DHCP OFFER:DHCP提供报文

DHCP REQUEST: DHCP请求报文

DHCP ACK:DHCP确认报文

DHCP NACK :DHCP否认报文

DHCP RELEASE:DHCP释放报文

说明:DHCP客户没有获取地址的时候使用的地址为0.0.0.0。

          最开始客户采用广播地址广播发送的方式去发送相应的报文。

 

 

三---实例讲解DHCP工作过程

假设网络中有两台DHCP服务器和一台主机,DHCP使用客户-服务器方式,在DHCP服务器上运行DHCP服务进程(简称服务器),在用户主机商行运行DHCP客户进程(简称为客户)

DHCP是TCP/IP协议体系中的应用层中的协议,使用运输层的UDP所提供的服务,也就是说,DHCP报文在运输层会被打包成UDP用户数据报,服务器使用的UDP端口是67,客户用的是68,UDP用户数据报在网络层被打包成IP数据报。根据所使用的网络接口封装成相应的数据链路层的帧。

下面我们来看看服务器和客户的交互过程,当启用主机的DHCP后,DHCP客户进程通过广播的方式向DHCP服务器发送DHCP发现报文,因为主机目前还没有分配到IP地址,所以该发现报文的源地址0.0.0.0,

目的IP地址为广播地址255.255.255.255,之所以采用广播发送,因为主机此时并不知道服务器有几台,IP地址是什么?由于是光播的IP数据报,所以网络中的进程都会收到该数据报,对其层层解封。解封出封装有DHCP发现报文的用户数据报,对于DHCP客户来说,其应用层没有监听该UDP数据报的目的端口67的进程,无法交付 DHCP发现报文,只能丢弃。另一边,DHCP服务器始终运行着DHCP服务器进程。接受该发现报文并做出响应。DHCP的服务器收到发现报文后,根据报文中的客户端的MACI地址来查找自己的数据库,看是否有针对该MACI地址的配置信息。如果有,就把这些配置信息打包成提供报文发给用户主机,没有的话就采取默认的配置信息来发送提供报文,封装该数据报的源IP地址就是服务器本身的地址,源IP地址任然为广播地址(主机目前还没有配IP地址,为了让他收到,只能用广播)。因为是广播发送,所以所有设置都能收到。服务器没有监听目的端口68的进程,于是会丢弃该报文,只有客户会收到并且提取出有用的信息。客户会根据收到的提供报文中的事物ID来判断该报文是不是自己所请求的报文(看两个事物ID是否一样),如果一样,就接受该报文。否则丢弃该报文。

其中分配IP地址的时候,服务器会使用ARP来确保所选的IP地址未被网络中的其他主机占用,本例中,两个服务器的都收到,但留下先到的那个。然后发送请求报文,征得该服务器同意就可以用IP地址了。

服务器1接收该请求,发送确认报文。

 

之后主机就可以使用该IP地址上网了。

全过程图解

 

 

四---DHCP中继代理

我们看如图所示情况,有些主机隔的远,当发送发现报文给DHCP服务器的时候,会被路由器无情的拒绝。

这时我们需要策反路由器,使其成为DHCP中继代理,每月给他发点工资,让他乖乖听话。

 

posted on 2021-01-13 17:54  Love&Share  阅读(478)  评论(0编辑  收藏  举报

导航