DHCP 原理以及IP获取过程

DHCP 原理以及IP获取过程

一、概述

DHCP 基本定义

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)。是一个局域网的网络协议,使用UDP协议工作。 DHCP主要有两个用途:

  1. 给内部网络或网络服务供应商自动分配IP地址
  2. 给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

DHCP有3个端口,其中UDP67UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。

下面来看一个DHCP DIscover包:
在这里插入图片描述

DHCP 分配方式

  • 自动分配方式(Automatic Allocation)
    DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
  • 动态分配方式(Dynamic Allocation)
    DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

DHCP 优点

  • 减少管理员的工作量
  • 避免输入错误的可能
  • 避免ip地址冲突
  • 当网络更改ip地址段时,不需要再重新配置每一个用户的ip地址
  • 提高了ip地址的利用率
  • 方便客户端的配置

二、DHCP 获取IP的过程

在这里插入图片描述

首次连接网络

  1. 第一步寻找DHCP服务器
    当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。第一阶段为dhcp发现阶段,主要意思即为寻找局域网内的dhcp服务器。

  2. 第二步分配IP地址
    在网络中接收到DHCP discover发现信息的DHCP服务器就会做出响应,它从尚未分配的IP地址池中挑选一个分配给DHCP客户机,并向DHCP客户机发送一个包含分配的IP地址,分配的DHCP offer报文中还包含了一些其他的字段,如dns地址,网关,掩码等

  3. 第三步接受IP地址
    DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息(存在多个DHCP服务器回应的话,先来的优先),然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。

  4. 第四步IP地址分配确认
    当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,确认地址池中的这个地址没有被分配,如果没有被分配便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它提供的IP地址。如果被分配了 ,就会回复DHCP-NAK报文,告诉CLient 地址已经被分配了。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的DHCP服务器外,其他的DHCP服务器将收回曾经提供的IP地址。

  5. 获取到IP后广播ARP
    当CLient收到服务器分配的地址后,会向这个广播域内发送一个免费ARP的请求,如果没有人响应这个请求,CLient才正式使用这个地址,如果有人回应的话,会返回一个DHCP-Decline报文,要求服务器重新获取地址。

    广播ARP实现的原理是:当机子重启或者设置了IP地址的时候,这个主机会通过免费ARP来询问这个局域网中是否有相同的IP存在(这个ARP询问的就是自己本身的IP地址,看是否有人回应),如果有人回复这个ARP的请求(因为ARP询问是广播的,所以局域网内所有的主机都可以收到),那么就会得到一个错误的消息“以太网地址 aa:bb:cc:dd:ee:ff发送来重复的IP地址”,通常情况下,是没人回应的,因为没有冲突存在,如果有人回应了这个ARP的请求,那么说明该IP地址已经被使用了,对方回应了这个ARP的响应,它会通过操作系统显示提示出来,说该IP地址存在冲突问题。在现在的DHCP服务器中,已经也引入了这个机制了,它会在分配给客户端这个IP地址之前,会先发送一个Ping,或者ARP等机制来查看该局域网中是否已经有该IP地址存在了,如果有得话,那么DHCP会分配其他IP给请求的客户端,如果没有人回应,那么则把该IP地址让客户端使用,所以很多情况下,看到设备上面,没有做地址排除的时候,而且有些IP地址已经在使用了,但是服务器能够很好的分配不冲突的地址给客户端,不造成地址冲突。

  6. 续租IP
    CLient的IP租期到达一半的时候,DHCP client会单播发送DHCP-Request报文,请求服务器更新租期,服务器收到以后,如果Client可以继续使用该IP地址的话,会响应CLient DHCP-ACK,如果该IP不能继续分配,则响应CLient DHCP-NAK。此时Client会在租期的75%再次询问server 进行续约,如果该IP地址可用则回复ACK,否则回复NAK。

再次登录

  1. 如果客户端重启后,会自动发送DHCPREQUEST广播给DHCP服务器以便请求继续租用原来使用的IP地址,如果服务器收到这个消息,确认客户端可以使用该地址,则回答一个DHCP ACK确认消息,如果此IP地址已经无法再分配,则返回一个DHCP NCK否认信息,客户端收到这个信息以后,则必须重新发送DHCP Discovery消息获取新的地址(启动首次登录的流程)。 若没有得到响应,则尝试与网关通信,如果通信正常,这个租期还没到期的话,则可以继续使用,但是不能和网关通信的话,则会获得169.254.0.1~169.254.255.254之间的IP地址,然后每隔5min尝试更新租约。

  2. 当客户端已经获得了IP地址,发送DHCP INFORM报文来获取其他一些网络配置信息,比如网关、DNS服务器

  3. 当客户端可通过DHCP RELEASE报文主动释放服务器分配给它的地址,当服务器收到此报文后,可将这个IP地址分配给其他客户端。

  • 11
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值