动态主机配置协议(DHCP)

1. 简介

  • 计算机要互联通信自身肯定需要网络 ,如IP地址、子网掩码、DNS服务器地址等。而为了实现IP地址的自动设置与统一分配,DHCP就这样孕育而生了。
  • 动态主机配置协议(DHCP)是一个应用层协议,也就是位于TCP/IP 5层协议模型的第5层,同时它也是一个客户机-服务器协议。
  • DHCP的设计基于早期的Internet引导程序协议(BOOTP),使用UDP/IP协议,客户端使用端口68,服务端使用端口67。
  • DHCP服务器可提供三种地址分配:
    • 手动分配 由网络管理员在DHCP服务器手工配置DHCP客户机的IP地址。
    • 自动分配 当DHCP客户机第一次向DHCP服务器请求到IP地址后,这个地址就永久地分配给了该DHCP客户机,不可撤销。
    • 动态分配(最常见) 与自动分配采用相同的方法,只不过获得的IP地址是有租约期限的,一旦租约到期,地址就会被回收,不过可以通过续订租约以延长期限。

2. 消息格式

DHCP扩展了BOOTP,DHCP消息格式的定义也采用了扩展BOOTP的方式以保持两种协议之间的兼容性。消息格式由一个固定大小的初始部分和一个可变长度的选项部分组成。

字段说明

初始部分

字段说明
Op消息类型,1表示请求,2表示响应
HW Type硬件地址类型,1表示以太网
HW Len硬件地址长度,如以太网地址长度6个字节值就为6
Hops保存消息传输过程中继的的次数,默认为0
Transaction ID事物ID。客户机所选择的一个随机数,服务器把它复制到响应消息中,用于将应答和请求匹配
Secs获取到IP地址或者续约过程开始到现在所消耗的时间,以秒为单位。在没有获得IP地址前该字段始终为0
Flags标志字段。该16位比特字段的最左边的位为 0 ,表示单播,为 1 表示广播
Client IP address客户机IP地址
"Your" IP addressDHCP服务器为客户机提供的IP地址存放在此字段
(Next) Server IP address下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址。仅在DHCP OfferDHCP ACK报文中显示,其他报文中显示为0。
Gateway (Relay) IP addressDHCPBOOTP中继器填写,如果消息没有经过中继器则此字段为0
Client Hardware address客户机硬件地址
Server Name可选的服务器主机名,是一个null结尾的字符串,由服务器填写
Boot File Name引导文件名。是一个null结尾的字符串,DHCP OFFER 报文中提供有效的文件路径,其他消息中不显示, 一般不使用
Options选项字段。可变字段,格式为"代码+长度+数据",是DHCP消息和BOOTP消息的区别之处

选项部分

代码字段名称
1子网掩码
3路由器地址
6域名服务器
15域名
50请求的IP地址
51地址租用期
53DHCP消息类型
54服务器标识符
55参数请求列表
56DHCP错误信息
58租约更新时间
59租约重新绑定时间
61客户机标识符
119域搜索列表
255结束

其中53(DHCP消息类型选项)有多个可能的值:

  • DHCP DISCOVER
  • DHCP OFFER
  • DHCP REQUEST
  • DHCP ARK
  • DHCP NAK
  • DHCP DECLINE
  • DHCP RELEASE
  • DHCP INFORM
  • DHCP FORCERENEW
  • DHCP LEASEQUERY
  • DHCP LEASEUNASSIGNED
  • DHCP LEASEUNKNOWN
  • DHCP LEASEACTIVE

3. 操作和状态

操作过程

上图显示的是当一个DHCP客户端向DHCP服务器新请求一个IP地址的过程:

获取过程

  1. 发现阶段

    • 由于不知DHCP服务器的IP地址和Mac地址,DHCP客户机通过向本地网络广播一个DHCP DISCOVER请求报文以向网络中的DHCP服务器请求网络配置信息。
    • 最后本地网络上每个DHCP服务器都会接收到DHCP发现报文,而同时其他主机也会收到此报文,只不过当拆包后发现源IP地址是0.0.0.0后就会抛弃这个包。
  2. 提供阶段

    • 当DHCP服务器收到发现报文,它就从它的地址池中选出一个空闲IP填充到DHCP OFFER的**"Your" IP address字段,并在选项字段加上子网掩码,路由器,DNS,服务器标识,IP地址租用时间**等字段。再广播此报文(因为此时还不知客户机的IP地址)
  3. 请求阶段

    • 最后客户机可能会收到多个DHCP服务器的DHCP OFFER报文,一般是选最先到达那个报文并作出回应请求,即广播发出一个 包含服务器选项字段的DHCP REQUEST报文。这里还使用广播的目的是因为要让所有的DHCP服务器知道客户机选择了哪个服务器提供的IP。
  4. DHCP服务器收到来自客户机的DHCP REQUEST报文,而只有符合服务器标识这个选项字段的DHCP服务器才会对此作出响应:

    • 如果服务器可以分配此IP则以DHCP ACK报文进行响应。
    • 如果服务器无法分配此IP则以DHCP NAK报文进行响应。

    其他DHCP服务器则清除与此请求相关的状态。响应方式还是跟提供阶段一样广播此报文。

    • 当DHCP客户机收到的响应是DHCP NAK报文,则会重新发送 DHCP DISCOVER报文。
    • 若收到的是DHCP ACK报文则会执行地址冲突检测(ACD)探测获得的IP地址是否未被使用。
      • 如果已经被使用则向DHCP服务器发送一个DHCP DECLINE报文以通知该地址已经不能被使用。之后经过默认的10秒延时后客户机可再次重试。
      • 如果未被使用则获得了该IP地址在租用期间的使用权。

成功获取后的所有网络配置信息可以通过一条命令查看 Windows下:

ipconfig /all

Linux下:

ifconfig

租约更新过程

因为实在获得可以使用是IP地址的基础上进行租约时间的更新,所以不必向获取过程那么麻烦,只需要向DHCP服务器发送DHCP REQUEST报文,DHCP服务器收到请求报文如果响应一个DHCP ACK则更新成功。 同样这个更新租约时间的过程也可以用一条命令来实现 Windows下:

ipconfig /renew

Linux下:

dhclient

租约的释放

如果想在租约结束前释放以获取的IP地址,可以向DHCP服务器发送DHCP RELEASE报文。同样这个释放操作也可以用一条命令来实现 Windows下:

ipconfig /release

Linux下:

dhclient -r

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值