DHCP协议

一、概述

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67为DHCP server的端口,UDP68为DHCP client的端口,546用于DHCPv6 client,是为DHCP failover服务,这是需要特别开启的服务,用于做双机热备。

   

二、功能描述

    DHCP通常被应用在大型的局域网环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、gateway地址和dns服务器地址等信息,并能够提升地址的使用率。 

DHCP具有以下功能:

    1、保证任何IP地址在同一时刻只能由一台DHCP客户机使用。

    2、DHCP应当可以给用户分配永久固定的IP地址。

    3、DHCP应当可以同其他方法获得IP地址的主机共存(如手动配置IP的主机)。

    4、DHCP服务器应当向现有的bootp客户端提供服务。

DHCP有三种机制分配IP地址:

    1、自动分配方式,dhcp服务器为主机指定一个永久性的IP地址,一旦dhcp客户端第一次成功从dhcp服务器端租用到IP地址后,就可以永久性的使用该地址。

    2、动态分配方式,dhcp服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

    3、手动分配方式,客户端的IP地址是网络管理员指定的,dhcp服务器只是将指定的IP地址告诉客户端主机。

dhcp消息的格式是基于bootp(bootstrap protocol)消息格式的,这就要求设备具有bootp中继代理的功能,并能够与bootp客户端和dhcp服务器实现交互。bootp中继代理的功能,是的没有必要再每个屋里网络都部署一个dhcp服务器。


三、封包格式

    dhcp的封包格式如下图所示:

 

 各字段定义如下:

    op:若是client发送给server的封包,置位1,反向则置位2。

    htype:硬件类别,Ethernet为1.

    hlen:硬件地址长度,Ethernet为6.

    hops:若封包需要经过router发送,每站加1,若在同一网内,为0.

    transaction id:dhcp request时产生的数值,以作dhcp reply时的依据。

    seconds:client端启动时间(秒)。

    flags:16bits,最左一bit为1时表示server将以广播方式传送封包给client,其余尚未使用。

    ciaddr:要是client端想继续使用之前取得的IP地址,则列于这里。

    yiaddr:从server送回client的dhcp offer和dhcp ack封包中,此字段为分配给client的IP地址。

    siaddr:若client需要透过网络开机,从server送出的dhcp offer、dhcp ack和dhcp nack封包中,此字段为开启程序所在的server地址。

    giaddr:若需要跨网进行dhcp发现,此字段为relay agent,否则为0,。

    chaddr:client的硬件地址。

    sname:server的名称字符串,以0x00结尾。

    file:若client需要通过网络开机,此字段将指出开机程序的名称,稍后以TFTP传送。


DHCP中继代理

    dhcp relay,也叫dhcp中继代理,dhcp中继代理,就是在dhcp服务器和客户端之间转发dhcp数据包,当dhcp客户端与服务器不在同一个子网上,就必须要有dhcp中继代理来转发dhcp请求和应答消息。dhcp中继代理的数据转发,与通常的路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包的内容,而dhcp中继代理接收到dhcp消息后,重新生成一个dhcp消息,然后转发出去。


四、工作原理

    dhcp协议的交互过程如下:


1、dhcp client以广播的方式发出dhcp discover报文。

2、所有的dhcp server都能接收到dhcp client发送的dhcp discover报文,所有的dhcp server都会给出响应,向dhcp client发送一个dhcp offer报文。dhcp offer报文中的“your(client) IP address”字段就是dhcp server能够提供给dhcp client使用的IP地址,且dhcp server会将自己的IP地址放在option字段中以便dhcp client区分不同的dhcp server。dhcp server在发出此报文后会存在一个以分配IP地址的记录。

3、dhcp client只能处理其中的一个dhcp offer报文,一般的原则是dhcp client处理最先受到的dhcp offer报文。dhcp client会发出一个广播的dhcp requests报文,在选项字段中会加入选中的dhcp server的IP地址和需要的IP地址。

4、dhcp server收到dhcp requests报文后,判断option字段中的IP地址和自己的地址是否相同。如果不相同,dhcp server不做任何处理,只清除相应的IP地址分配记录,如果相同,dhcp server就会向dhcp client响应一个dhcp ack报文,并在option字段中增加IP地址的使用租期信息。

5、dhcp client接收到dhcp ack报文后,检查dhcp server分配的IP地址是否能够使用。如果可以使用,则dhcp client撑过获得IP地址并根据IP地址使用租期自动启动续延过程;如果dhcp client发现分配的IP地址已经被使用,则dhcp client向dhcp server发出dhcp decline报文,通知dhcp server禁用这个IP地址,然后dhcp client开始新的地址申请过程。

6、dhcp client在成功获取IP地址后,随时可以通过发送dhcp release报文释放自己的IP地址,dhcp server受到dhcp release报文后,会回收相应的IP地址并重新分配。

    在IP使用租期超过50%时刻处,dhcp client会以单播的方式向dhcp server发送dhcp requests报文来续租IP地址。如果dhcp client成功收到dhcp server发送的dhcp ack报文,则按相应时间延长IP地址租期,如果没有收到dhcp server发送的dhcp ack报文,则dhcp client继续使用这个IP地址。

    在IP使用租期超过85%时刻处,dhcp client会以广播的方式向dhcp server发送dhcp requests报文来续租IP地址。如果dhcp client成功收到dhcp server发送的dhcp ack报文,则按相应时间延长IP地址租期;如果没有收到dhcp server发送的dhcp ack报文,则dhcp client继续使用这个IP地址,知道IP地址使用租期到期时,dhcp client才会向dhcp server发送dhcp release报文来释放这个IP地址,并开始新的IP地址申请过程。

    dhcp client可以接收到多个dhcp server的dhcp offer数据包,然后可能接受任何一个dhcp offer数据包,但client通常指接受收到的第一个dhcp offer数据包,另外,dhcp server的dhcp offer中指定的地址不一定为最终分配的地址,通常情况下,dhcp server会保留该地址直到client端发出正式请求。

    正式请求dhcp server分配地址dhcp requests报文采用广播包,是为了让其他所有发送dhcp offer数据包的dhcp server也能够收到该数据包,然后释放在dhcp offer中预分配给client的IP地址。

    如果发送给dhcp client的地址已经被其他dhcp client使用,client会向server发送dhcp decline报文拒绝接受已经分配的地址信息。

    在协商过程中,如果dhcp client发送的dhcp requests报文中的地址信息不正确,如client已经迁移到心的子网或者租约已经过期,dhcp server会发送dhcp nack报文给client,让client重新发起地址请求过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值