DHCP地址分配流程简述

dhcp是什么

学技术的,经常会被问到,xxx是什么?我们经常会回答,xxx不就是那啥啥啥嘛,嗯..

dhcp是什么?全称Dynamic Host Configuration Protocol,动态主机配置协议,主要用于在一个局域网内为主机动态分配ip。通常情况下,网络服务提供商可以使用dhcp的服务给客户动态的分配IP地址,网络管理员也可以使用dhcp服务来控制和管理ip地址的分配。

dhcp服务的开启方式有几个依赖条件:

  • dhcp客户端(也即我们待获取ip的服务器)开启dhcp获取ip的配置(例如ifcfg-eth0的配置中,BOOTPROTO设为dhcp)
  • dhcp服务器,开启dhcp服务即可,service start dhcp(dhcp服务有独立的安装包)

dhcp流程具体是怎样的

dhcp实际的ip分配过程是如何呢,这个分配流程相对是比较清晰的,主要流程分为以下几步:

  1. dhcp客户端开机后,以广播的方式发送dhcp discover包
  2. 广播域范围内的dhcp服务器都会收到dhcp client的dhcp discover包,收到后,dhcp服务器会响应一个dhcp offer报文,该报文主要包含两项信息:dhcp svr本身的IP地址以及分配给客户端的IP地址
  3. 如果广播域内有多个dhcp服务器,那么dhcp客户端便会收到多个dhcp offer报文,客户端只会处理一个dhcp offer报文,一般情况下,处理第一个接收到的包。此时,客户端会广播一个dhcp request报文(对,仍然而且必须是广播),该报文中最重要的信息是dhcp svr的IP地址。
  4. 相应的,广播域范围内的所有dhcp服务器都会收到dhcp request包,此时检查收到的包里的IP地址和自身的IP地址是否一致,如果不一致,那么清除掉第二步分配的IP地址即可,如果一致,那么回应客户端一个dhcp ack的包
  5. 客户端收到dhcp ack包后,检查该IP地址是否可以使用。如果不可以使用,则需要给dhcp服务器发送一个dhcp DECLINE包,告知dhcp服务器该IP地址需要禁用,然后重新发起IP地址申请(从第1步开始);如果可以使用,那么使用该IP地址并且根据租期续期就可以了。

后续IP地址租期快到时(一般到租期的50%和87.5%时,便会发起续租),dhcp客户端会发起续租的过程,其实过程很简单:

  1. 客户端发起dhcp request请求到dhcp服务器
  2. dhcp服务器收到dhcp request包后,会回应一个dhcp ack的包(也可以不回应),并带上最新的租期时间
  3. 客户端如果收到了dhcp服务器的ack响应,更新最新的租期时间。如果没有收到dhcp服务器的续期ack包,按照旧的租期时间继续使用改IP地址。
  4. 当IP地址的租期到期时,dhcp的客户端通过使用dhcp release的包来释放自己的ip地址,然后重新发起dhcp的ip地址申请过程。

流程中提到了很多次广播域,那如果两个广播域希望使用一套dhcp服务的时候应该怎么办,dhcp有一个relay服务,可以配置dhcp relay的方式将dhcp请求从一个广播域中继至广播域之外的dhcp svr,通常交换机上有dhcp relay的配置选项。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WindCoder

Git命令小记

[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF

781
来自专栏IT笔记

Java 导入包正确依旧报错的处理方法

今天想要测试某个方法,开始打开项目的时候是没问题的,然后写了两行代码就报错了,提示本包下的要导入,然后导入无效,其实同一个包下调用是不需要导入的。 解决发方法...

4105
来自专栏一枝花算不算浪漫

[常见问题]在Linux下执行Redis命令不起作用.

3608
来自专栏Python、Flask、Django

我博客图片存在哪里的?

1404
来自专栏王磊的博客

nodejs常用组件

mssql 用途:连接SqlServer数据库 node-excel-export 用途:导出excel表格 nodegrass 用途:模拟用户进行get/po...

3346
来自专栏令仔很忙

Nginx反向代理

客户端访问数据的时候,不会直接与目标服务器进行连接,而是所有的请求都发送到代理(Proxy)服务器,然后代理服务器会去根据你的请求去访问相应的服务器,并最终返...

3972
来自专栏IT可乐

Hadoop 2.7 伪分布式环境搭建

1、安装环境 ①、一台Linux CentOS6.7 系统   hostname                ipaddress              ...

2357
来自专栏程序员同行者

使用Nginx转发TCP/UDP数据

6293
来自专栏惨绿少年

route命令实例练习

第1章 命令配置 虚拟服务器 网卡配置信息 虚拟网卡名称 虚拟网卡模式 服务器01 eth1 10.0.0.1...

2190
来自专栏Java学习123

TCP和Http的区别! 我都搞懂了,你就别迷糊了!

3336

扫码关注云+社区

领取腾讯云代金券