37 张图详解 DHCP :给你 IP 地址的隐形人
电脑或手机需要 IP 地址才能上网。大刘有两台电脑和两台手机,小美有一台笔记本电脑、一台平板电脑和两台手机,老王、阿丽、敏敏也有几台终端设备。如果为每台设备手动配置 IP 地址,那会非常繁琐,一点儿也不方便。特别是手机、笔记本电脑、平板电脑等设备,每移动到一个新的地方,接入不同的网络,都要重新设置 IP 地址,实在是太麻烦了。
于是就有了 DHCP 协议,会自动配置设备的网络参数,包括 IP 地址、子网掩码、网关地址、DNS 服务器等,替代手动配置。还能统一 IP 地址分配,方便网络管理。
(资料图片)
DHCP 简介DHCP 协议是从 BOOTP 协议发展而来。但 BOOTP 运行在相对静态的环境中,每台设备配置专门的 BOOTP 参数文件,该文件会在相当长的时间内保持不变。DHCP 从以下两方面对 BOOTP 进行了扩展:
DHCP 允许设备动态地获取 IP 地址,而不是静态指定每台主机地址。DHCP 能够分配其它的配置参数,客户端仅用一个消息就获取它所需要的所有配置信息。大刘他们的设备使用 DHCP 功能后,只要连接到网络,就可以进行 TCP/IP 通信。对于路由器和交换机,通常是手动配置 IP 地址等参数。
DHCP 是一种 Client/Server 模式的网络协议,由 DHCP Client 向 DHCP Server 提出配置申请,DHCP Server 返回为 DHCP Client 分配的配置信息。这里的 Client 和 Server 是应用程序,可以运行在电脑、服务器、路由器等设备上。
举个栗子:大刘的电脑开机后,自动运行 DHCP Client ,DHCP Client 主动向其它设备上的 DHCP Server 提出请求,DHCP Server 根据预先配置的策略,返回相应 IP 配置信息,DHCP Client 使用获得的 IP 配置信息与其它设备进行通信。
DHCP 分配机制DHCP 提供了两种地址分配机制,可以根据网络需求为不同的 Client 选择不同的分配策略。
动态分配机制:通过 DHCP 为 Client 分配一个有使用期限的 IP 地址。如果 Client 没有及时续约,到达使用期限后,这个地址可能会被其它 Client 使用。绝大多数 Client 使用的都是这种动态分配的地址。静态分配机制:通过 DHCP 为特定的 Client 分配固定的 IP 地址。固定 IP 地址可以永久使用, Client 通常是打印机、服务器等设备。在实际情况中,我们发现 DHCP Client 重启后,也能获得相同的 IP 地址。DHCP Server 为 DHCP Client 分配 IP 地址时,采用如下的顺序:
DHCP Server 中与 DHCP Client 的 MAC 地址静态绑定的 IP 地址。DHCP Client 曾经使用过的 IP 地址。最先找到的可用 IP 地址。如果没找到可用的 IP 地址,就依次查询超过租期、发生冲突的 IP 地址,如果找到就进行分配,否则报错处理。
DHCP 系统组成DHCP 系统由 DHCP Server( DHCP 服务器)、DHCP Client( DHCP 客户端)、DHCP Relay( DHCP 中继)等组成。
DHCP ServerDHCP Server 提供网络参数给 DHCP Client ,通常是一台提供 DHCP 服务功能的服务器或网络设备(路由器或三层交换机)。比如:家里用的无线路由器。DHCP ClientDHCP Client 通过 DHCP Server获取网络参数,通常是一台主机或网络设备。比如:大刘的电脑、小美的手机。DHCP Relay通常情况下,DHCP 采用广播方式实现报文交互,DHCP 服务仅限在本地网段使用。如果需要跨网段实现 DHCP ,那么使用 DHCP Relay 技术实现。在 DHCP Server 和 DHCP Client 之间转发跨网段 DHCP 报文的设备,通常是三层网络设备。DHCP 基本流程DHCP 协议报文采用 UDP 方式封装,DHCP Server 侦听的端口号是 67 ,DHCP Client 的端口号是 68 。DHCP 设备通过发送和接收 UDP 67 和 UPD 68 端口的报文进行协议交互。DHCP 的基本工作流程分为 4 个阶段,即发现阶段、提供阶段、请求阶段、确认阶段。我们假设大刘的 PC 是一台新电脑,下面将描述 PC 第一次是如何通过 DHCP 获取 IP 地址的。
为方便描述,DHCP Server 简称 小 S ,DHCP Client 简称 小 C 。
1、发现阶段小 C在本地网段中广播一个 DHCP Discover 报文,目的寻找能够分配 IP 地址的 小 S 。
2、提供阶段本地网段的 小 S 收到 DHCP Discover 报文后,回应 DHCP Offer 报文。DHCP Offer 报文包含了可用 IP 地址和其它网络参数。
小 C 通过对比 Discover 报文和 Offer 报文中的 xid 字段是否相同,来判断 Offer 报文是不是发给自己的。
3、请求阶段小 C 会收到 小 S 发送的 DHCP Offer 报文。如果有多个 小 S ,那么每个 小 S 都会回应 DHCP Offer 报文。通常 小 C 会选择最先收到的 Offer 报文,并广播 DHCP Request 报文来表明哪个 小 S 被选择,其余 小 S 就凉凉了。
如果 小 C 在一定时间后一直没收到 DHCP Offer 报文,那么它就会重新发送 DHCP Discover 报文。
4、确认阶段小 S 收到 DHCP Request 广播报文后,发送 DHCP Ack 报文作为回应,其中包含 小 C 的网络参数。DHCP Ack 报文和之前 DHCP Offer 报文的参数不能有冲突,否则 小 S 会回应一个 DHCP Nak 报文。
当 小 C 收到 DHCP Ack 报文后,会发送免费 ARP 报文进行探测,目的地址为获得的 IP 地址,如果探测此地址没有被使用,那么 小 C 就会使用这个地址,并完成配置。
DHCP 租期从 DHCP 协议上看,小 S 才有 IP 地址的所有权,而 小 C 只有 IP 地址的使用权。小 S 每次给 小 C 分配一个 IP 地址时,会约定一个 IP 地址的租期,通常是 24 小时。在租期内,小 C 才能使用相应的 IP 地址。当租期到期后,小 C 将不能继续使用这个 IP 地址。当然了,在租期还没到期的时候,小 C 是可以申请续租这个 IP 地址的。
T1 时刻是租期到一半的时候,T2 时刻是租期到 87.5% 的时候。在 T1 时刻 小 C 会单播一个 DHCP Request 报文给 小 S ,请求续租 IP 地址。如果 小 C 收到了 DHCP Ack 回应报文,则说明续租成功。
如果直到 T2 时刻,小 C 都未收到 DHCP Ack 回应报文,那么会广播发送一个 DHCP Request 报文,继续请求续租 IP 地址。如果 小 C 收到了 DHCP Ack 回应报文,则说明续租成功。
如果直到租期到期, 小 C 都未收到 DHCP Ack 回应报文,那么必须停止使用原来的 IP 地址。 小 C 将从发现阶段开始,重新来申请一个 IP 地址。
DHCP Relay动态获取 IP 地址的过程中,使用广播方式发生报文,因此 DHCP 只适用于 小 C 和 小 S 在同一个子网内的情况。如果为每个网段配置一个 小 S ,这显然太浪费了。
实际上还有 DHCP Relay 这种角色。小 C 通过 DHCP Relay 实现跨网段与 小 S 通信,获取 IP 地址。这样,多个子网上的 小 C 可以使用同一个 小 S ,既节省成本,又方便集中管理。
DHCP Relay 的工作原理如下:
小 C 发送 DHCP Discover 或 DHCP Request 广播报文,具有 DHCP Relay 功能的网络设备收到后,根据配置将报文单播给指定的 小 S ;小 S 进行 IP 地址的分配,单播发送给 DHCP Relay ,DHCP Relay 再将配置信息广播给 小 C ,完成对 小 C 的动态配置。DHCP 协议报文前面的内容有提到 DHCP 的一些报文类型,现在讲讲 DHCP 主要的 8 种报文类型。常见的 5 种报文类型有:DHCP Discover 、DHCP Offer 、DHCP Request 、DHCP Ack 和 DHCP Release ,用得少的 3 种报文类型有:DHCP Nak 、DHCP Decline 和 DHCP Inform 。
DHCP Discover 报文它是 DHCP Client 首次接入网络,DHCP 交互过程的第一个报文,用来寻找 DHCP Server的请求报文。DHCP Offer 报文它是 DHCP Server 用来回应 DHCP Discover 报文的,并携带网络参数,包括:IP 地址、子网掩码、默认网关、DNS 服务器等。DHCP Request 报文它是 DHCP Client 发送的报文,有三种使用场景:根据策略选择相应的 DHCP Server,并回应 DHCP Offer 报文;DHCP Client 非首次接入网络,直接发送 DHCP Request 报文来申请之前使用过的 IP 地址等参数;当 IP 地址的租约到期后,发送 DHCP Request 进行租期更新。DHCP Ack 报文它是 DHCP Server 对 DHCP Request 报文的回应报文,进行最终确认。DHCP Client 收到这个报文后,才能获得 IP 地址和相应网络参数。DHCP Nak 报文它也是 DHCP Server 对 DHCP Request 报文的回应报文,当 DHCP Request 报文中的各个参数都正确时,回应 DHCP Ack 报文,否则回应 DHCP Nak 报文,告诉 DHCP Client 禁止使用获得的 IP 地址。DHCP Decline 报文当 DHCP Client 收到 DHCP Ack 报文后,还会发送免费 ARP 报文,确认申请的 IP 地址是否已经在网络上使用了。如果 IP 地址已经被其它 Client 使用,那么 DHCP Client 发送 DHCP Decline 报文,拒绝分配的 IP 地址,并重新向 DHCP Server 申请地址。DHCP Release 报文当 DHCP Client 想要释放获得的 IP 地址时,向 DHCP Server 发送 DHCP Release 报文,DHCP Server 收到报文后,可将这个 IP 地址分配给其它的 Client 。DHCP Inform 报文DHCP Client 通过手动方式获得 IP 地址后,还想向 DHCP Server 获取更多网络参数时,比如:默认网关地址、DNS 服务器地址,DHCP Client 就向 DHCP Server 发送 DHCP Inform 报文进行申请。DHCP 状态机如果把功能各异的 8 种报文串起来,就是整个 DHCP 协议交互流程。前面讲的 4 种阶段(发现、提供、请求、确认)不能完全展现出来,这就需要使用 DHCP 协议的状态机。状态指出下一步使用的报文类型,状态转换是通过报文的接收、发送或超时。下面是 Client 的状态机。
Client 从 INIT 状态开始,广播 DHCP Discover 报文。在选择状态时,它收到 DHCP Offer 报文,并决定使用哪个地址和 Server 。做出选择后,通过 DHCP Request 报文进入请求状态。如果分配的地址和曾使用过的地址不一致,那么回应 DHCP Nak 报文进行拒绝,并返回 INIT 状态;如果分配的地址已经被占用,那么回应 DHCP Decline 报文进行拒绝,也返回到 INIT 状态。通常是收到一个需要的地址,回应 DHCP Ack 报文,获得租期超时值 T1 和 T2 ,并进入绑定状态,这个时候就可以使用这个地址直到租期到期。当 T1 到期时,进入更新状态并进行续租申请。如果续租成功,那么可以收到 DHCP Ack 报文,并返回到绑定状态;如果续租不成功,那么在 T2 到期时,再次进行续租申请。如果租期最终到期,那么 Client 将禁止使用所租用的地址,并返回到 INIT 状态。
DHCP 网络实战DHCP 协议是为解决网络问题而生,现在我们就来模拟实际环境,动手操作,验证下 DHCP 的功能。
DHCP Server 示例网络拓扑实验要求RT(路由器)配置 DHCP Server ,PC 动态获取 IP 地址等网络参数。操作步骤配置思路:
在 RT 上开启 DHCP 功能。创建一个地址池。配置地址池的相关参数。在 RT 的接口下引用地址池,实现 DHCP Server 功能。配置命令:
使用 DHCP 功能之前,先要开启 DHCP 功能。系统视图下,使用命令 dhcp enable 启动 DHCP 功能。
动态分配 IP 地址,就需要有多个可分配的 IP 地址,使用 ip pool ip-pool-name 命令来创建全局地址池,ip-pool-name 表示地址池的名称。
在全局地址池视图下,通过命令 network ip-address [ mask { mask | mask-length } ] 配置可分配的 IP 地址段。mask { mask | mask-length } 表示子网掩码,通常根据设备数量来确定掩码长度。
有了 IP 地址和子网掩码,再加上默认网关,终端设备就能网络互通了。在全局地址池视图下,使用命令 gateway-list ip-address 配置网关 IP 地址。
网络互通,还不能正常访问网站,需要配置 DNS 服务器,用于域名解析。在全局地址池视图下,使用 dns-list ip-address 配置 DNS 服务器的 IP 地址。
地址池配置中,常用的可选命令如下,可根据需求进行选择性设置。
lease { day day [ hour hour [ minute minute ] ] | unlimited } :配置 IP 地址的租期,默认租期是 1 天。
excluded-ip-address start-ip-address [ end-ip-address ] :在可分配的地址池中,设置不分配的 IP 地址。比如:地址池是 192.168.100.0/24 ,可设置 192.168.100.1 - 192.168.100.10 不参与地址分配。
static-bind ip-address ip-address mac-address mac-address :为 Client 固定分配一个 IP 地址。
配置完地址池,还需要进行引用,DHCP Server 功能就能正常使用了。在 RT 的接口下配置引用,命令为 dhcp select global 。
功能验证配置完成后,理论上是 DHCP 功能正常工作了,实际情况的话,可通过命令 display ip pool name pool-name used,查看地址池的配置情况,和地址分配情况。
在 RT 上查看 DHCP Server 地址分配状态。
同时也在 PC 上查看动态获取地址情况,进行双向验证。
抓包还可以看到 DHCP 报文交互的详细过程,同时也是检验理论知识是否正确。
这里我们发现抓包看到的是 DHCP Offer 单播报文,而前面介绍的时候,DHCP Offer 是广播报文。其实 DHCP Offer 报文有可能是单播,也有可能是广播。DHCP 在报文的标志字段有一个广播位,如果 Client 支持接收 Offer 单播报文,那么 Client 就会将发送报文中的广播位设为 0 ,否则为 1 。
DHCP Relay 示例网络拓扑实验要求DHCP Client 和 DHCP Server 在不同网段,DHCP Client 通过 DHCP Relay 获取到 IP 地址等网络参数。操作步骤PC( DHCP Client )开启 DHCP 功能。RT1( DHCP Relay )使用 dhcp select relay 命令开启 DHCP Relay 功能,在 G0/0/1 口下使用 dhcp relay server-ip ip-address 命令,配置 DHCP Server 的 IP 地址。RT2(DHCP Server)开启 DHCP 功能,创建地址池并配置相关参数,在接口下引用地址池,实现 DHCP Server 功能。功能验证PC 端能获取到 IP 配置,并且获取的配置正确。
在 RT1 的 G0/0/1 抓包,查看 DHCP Client 和 DHCP Relay 的报文交互过程。
在 RT1 的 G0/0/0 抓包,查看 DHCP Server 和 DHCP Relay 的报文交互过程。
DHCP 报文格式如果想要更深入的了解 DHCP 协议,那就要看它的报文格式。DHCP 设备通过识别报文内容,实现协议功能。
op(操作类型):表示报文的格式。当值为 1 时,表示客户端的请求报文;当值为 2 时,表示服务器的响应报文。htype(硬件类型):不同的硬件类型取不同的值,最常见的以太网,值是 1 。hlen(硬件地址长度):表示硬件地址长度,以太网的值是 6 ,也就是 MAC 地址的长度。hops(跳数):DHCP 报文经过的 DHCP 中继的数量。xid(交互 ID ):DHCP 客户端取的随机值,收到 DHCP 服务器的响应报文时,查看 xid 值是否相同,来判断报文是否是发送给自己的。secs(客户端启动秒数):记录 IP 地址的使用时间。flags(标志):广播响应标志位,当值为 0 时,表示服务器以单播形式发送响应报文;当值为 1 时,服务器以广播形式发送响应报文。ciaddr(客户端 IP 地址):客户端的 IP 地址,可以是分配的地址,也可以是正在使用的地址,还可以是的 0.0.0.0 。0.0.0.0 是客户端初始状态没有地址的时候,仅用于临时通信,不是有效的地址。yiaddr(你的 IP 地址):当服务器发送响应报文时,将分配给客户端的 IP 地址填入这个字段。siaddr(服务器 IP 地址):用来标识服务器的 IP 地址。giaddr(中继设备 IP 地址):表示 DHCP 中继的 IP 地址,服务器通过识别这个字段来判断出客户端的网段地址,从而选择合适的地址池,为客户端分配该网段的 IP 地址。chaddr(客户端硬件地址):用来标识客户端的硬件地址,当客户端发送广播发现报文时,这个字段就是自己的硬件地址。sname(服务器名):可选项,DHCP 服务器填写这个字段。file(引导文件名):可选项,DHCP 服务器填写这个字段。options(可选项):可选项,DHCP 客户端获取网络参数,DHCP 服务器提供网络参数,都是使用的这个字段。内容有很多,例如:租期、子网掩码、默认网关地址、DNS 服务器地址等。拿着 DHCP 报文格式,就可以看懂抓包获取的报文内容。
DHCP Discover 报文:
DHCP Offer 报文:
DHCP Request 报文:
DHCP Ack 报文:
标签:
为您推荐
广告
- 37 张图详解 DHCP :给你 IP 地址的隐形人
- 沪指收盘上涨0.22%,创业板指上涨1.37%,北上资金当日净流入12.3亿元
- 为何“不要给女儿打扮得太好看”?班主任的忠告,家长别不听
- 被“骗子”忽悠5年,又亏了20亿!最惨“股神”正在搞垮云南白药
- 一级建造师报名工作年限怎么算?
- 今日中国黄金基础金价(2023年7月10日)
- 郑州通报“河道贴瓷砖”情况:河道挂贴花岗岩造价约650万元
- “网红城市”要长红,终究不能依赖流量
- 相差40岁爷孙恋女 相差40岁“爷孙恋”男主儿子再爆料 基本情况讲解
- 深圳上市公司年报审计平均收费196万,“业务随人走”的换所现象显现
- 中国驻泰国大使馆通报“中国旅游大巴侧翻事故”:均无生命危险
- 国家统计局:6月份CPI同比持平 环比下降0.2%
- 2023年1-4月中国包装专用设备产量为21.8万台 华南地区产量最高(占比50%)
- 2023年07月10日磷酸氢钙出厂参考报价
- dnf装备赋予异界气息(dnf怎么赋予装备异界气息)
- 长沙早稻收购工作即将全面铺开 可免费送检、预约收购
- 老龄化社区食堂被年轻人盯上,公益变味?
- 交口:智慧畜牧龙头产业
- 黄钻可以删除被挡记录吗(黄钻能删除被挡记录吗)
- 海南:退证!
- 1苹果2025年入局?折叠屏市场逆势上升,华为、小米新机曝光
- 2开盘:A股三大指数集体高开沪指涨0.38%,电力行业领涨
- 3海口:高温天 送清凉
- 4菜价回升抵不过“二师兄”连降,6月CPI或小幅回落
- 5绿色转型、团结协作:家用电热水器专业委员会2023年第一次会议圆满落幕
- 6天风证券:当前时点看好地产板块表现
- 7oppo手机隐藏快捷工具栏(oppo隐藏应用快捷方式)
- 8申万菱信可转换债券债券型证券投资基金 基金经理变更公告
- 9山阴县场馆建设项目全力冲刺保节点
- 10魅族折叠终端专利公开:降低展开难度
- 1“氢”“水”“风”“光”入画来——河北加快构建稳定可靠、多能互补能源格局
- 2中国最大的盐湖在哪里(中国最大的盐湖在哪里及在世界排名第几及叫什么名字)
- 3“民族团结一家亲 千里送教共成长”张家界民族实验幼儿园开展结对送教活动
- 4沙特也非人傻钱多!扎哈要求60万镑周薪外加750万签字费 遭对方秒拒
- 5联创股份:拟参与新华联控股破产重整投资;山航B退:公司股票将在7月10日被摘牌
- 6北京成功申办2029年世界建筑师大会
- 7墨翠手镯_墨翠
- 8oppo怎么看原封(oppo怎么辨别原封机)
- 9泪目!杨鸣主场会面哈德森,全程拥抱合影+狂笑,但体型明显发福
- 10新款奔驰GLE到店,细节调整,造型精致大气,搭2.5T直列六缸动力
广告
- 俄罗斯叶卡捷琳堡发现15例球菌性脑膜炎病例 已有2人死亡
- 迪哲医药最新公告:DZD1516研究成果在国际期刊发表
- 榜样在身边 | 海南省治水工作领导小组办公室业务组组长王晓霞:做好“水”文章 保护海南岛“肾脏”
- WNBA前瞻:神秘人受困伤病,李梦或被重用,客战阳光力争复仇
- 王强演的军旅片儿_王强演的军旅电视剧
- 我小时候曾见过一只金色的知了,全身金红色,双翼透明,非常漂亮
- 宁乡人民北路一电动汽车发生自燃,还好有他们……
- “三聚焦三发力”推进调查研究
- 交流接触器与热继电器 接触器和继电器的区别
- 完美世界:石昊成长的道路中一共死过几次,又是如何起死回生的?
- 重庆彩民误车后转乘到长沙 刮中“时来运转”100万元
- 上半年全国铁路发送旅客17.7亿人次!接近2019年同期水平
- 收纳物语龙泉印泥怎么过-龙泉印泥通关攻略
- 山体滑坡致9人失联 湖北省长赴现场 网友:今年为何如此多灾多难?
- 规模创新高!货币型基金又火了 发生了什么?
- 意媒:国米将在下周免签佩雷拉,两年合同总费用500万欧元
- ITF国际网球巡回赛天津站决出双打冠军
- 湖北五峰县山体滑坡已救出 5 人,另有 9 人失联
- 加拿大不列颠哥伦比亚省罢工持续 波及价值46亿加元货物运输
- 内蒙古第十届少数民族传统体育运动会开幕