欢迎您访问DHCP 协议:让网络配置变得简单的神奇协议!

DHCP 协议:让网络配置变得简单的神奇协议

更新时间:2024-06-04 08:46:49作者:佚名

点击蓝色“程序员cxuan”关注我

添加“星星”以便及时接收最新文章

大家好,这是cxuan计算机网络系列文章的第11篇,在这篇文章中,我们来聊聊DHCP协议,在聊之前,先想象一个场景。

你现在站在地铁上或者坐在办公室里,你的手机或者电脑都有一个IP地址,如果你手动输入这个IP地址,你需要写下面这些东西……

在电脑上配置这些还好,一眨眼就能搞定。如果用手机,就需要点IP地址,输入IP地址,点子网掩码,输入子网掩码,点默认路由,输入路由,点DNS服务器,输入DNS服务器……这样好麻烦啊。刚配置完留学之路,老板就叫你去开会,刚刚配置的地址就浪费了。你换环境,又需要重新配置IP地址,于是又重复上述步骤。此时,会议结束了,你手忙脚乱……

我们还为您节省了配置错误的可能性。

上面的描述最让人恼火的就是需要手动配置IP地址。哇塞,为啥不能设置自动配置IP地址呢?谁说不能设置的?没错!那就是使用DHCP,也就是我们下面要讲的。

了解 DHCP

DHCP 是动态主机配置协议 ( Host ) 的缩写,DHCP 可以自动设置 IP 地址,并统一管理 IP 地址分配。这意味着,无论你是在开会还是在办公桌前工作,都可以省去手动配置 IP 地址的繁琐步骤。同时,DHCP 也大大降低了手动分配 IP 地址导致出错的几率。

DHCP与IP关系密切,是IP网络上使用的协议。如果要使用DHCP提供服务,整个通信链路上都需要有DHCP服务器。连接到网络上的设备使用DHCP协议向DHCP服务器申请IP地址,DHCP服务器会为设备分配一个唯一的IP地址。

除了 IP 地址,DHCP 服务器还会告诉您子网掩码、默认路由和 DNS 服务器。

DHCP 服务器

现在,您不需要手动配置 IP 地址,也不再需要管理 IP 地址,管理工作已转移到 DHCP 服务器,该服务器负责维护 IP 地址池并在启用 DHCP 的客户端在网络启动时将地址出租给它们。

由于 IP 地址是动态的(临时分配)而不是静态的(永久分配),因此不再使用的 IP 地址会自动返回到 IP 地址池以供重新分配。

那么谁维护 DHCP 服务器?

网络管理员负责架设DHCP服务器,并以租约的形式向启用DHCP的客户端提供地址配置。啊,既然不用我管理了,那就舒服多了~

OK,现在你可以舒舒服服地开发了。你用 192.168.1.4/x/x 这个接口发出请求,请求可以顺利进行。但是过了一段时间,你发现 192.168.1.4/x/x 这个接口的请求不起作用了。为什么?然后你查看自己的 IP 地址,发现 IP 地址已经变成了 192.168.1.7。怎么我正在使用的时候 IP 地址就变了?DHCP 就是个垃圾,一个破玩意儿!!@#¥%¥%……¥%

其实这也是DHCP服务器的一个功能,它通常会给每一个客户端分配一个唯一的动态IP地址,当客户端对该IP地址的租约到期后,该地址就会改变。

它唯一的意义在于如果你手动设置了一个静态IP,而DHCP服务器却分配了一个动态IP,并且这个动态IP和静态IP相同的话,那么必然会出现其中一个客户端无法上网的情况。

我也遇到过这种情况,我虚拟机配置的静态IP是192.168.1.8,手机也是用DHCP配置的192.168.1.8的IP地址,这时候我的虚拟机连不上网络,连上网络后就连不上虚拟机了,检查了一下,发现是IP地址冲突了...

DHCP服务器虽然可以提供IP地址,但是它如何知道哪些IP地址是空闲的,哪些IP地址正在使用呢?

其实这些信息都是在数据库中配置的,我们来看看DHCP服务器维护了哪些信息。

这些参数主要包括主机名(Host name)、DHCP客户端(DHCP)、域名(name)、IP地址(IP)、网关()、广播地址()、默认路由()。

OK,现在你知道了DHCP服务器需要保存哪些信息,看完上面的内容,你应该也知道DHCP有哪些组件了。现在我们来说说DHCP中都有哪些组件,这些组件一个都不能少。

DHCP 的组件

使用 DHCP 时,了解所有组件非常重要。下面我列出了一些 DHCP 组件及其功能。

现在您了解了 DHCP 的组件,我将向您介绍 DHCP 的工作原理。

DHCP 的工作原理

在讲DHCP工作机制之前我们先来了解一下DHCP报文。

DHCP 消息

DHCP 消息有以下几种类型:

DHCP的工作机制比较简单,无非就是客户端向服务器租用一个IP,服务器把这个IP提供给客户端的过程。嗯,你很聪明,大致就是这样,不过还是有些细节需要注意,我通过两张图跟大家说一下。

DHCP获取IP地址的过程主要分为两个阶段。

第一阶段是DHCP查找包阶段

搜索包阶段主要分为两个步骤:第一步是DHCP 包,第二步是DHCP offer包。

DHCP客户端在通讯链路上发起广播,查看链路上是否有可以提供DHCP数据包的服务器。然后通讯链路上的每个节点都会检查自己是否可以提供DHCP数据包。此时DHCP服务器表示自己可以提供DHCP数据包,然后DHCP就会沿着通讯链路将DHCP数据包发回给DHCP客户端。

第二阶段是DHCP请求阶段。

DHCP请求数据包也分为两步:第一步是DHCP请求数据包,第二步是DHCP确认数据包。

DHCP客户端在通讯链路上发起DHCP请求包,请求包主要告诉DHCP服务器自己想使用上一步提供的网络设置,DHCP服务器随后向DHCP客户端发送确认包,表示允许DHCP客户端使用第二步发送的网络设置。

至此,DHCP网络设置完成,接下来就可以在通信链路上与主机之间进行TCP/IP通信了。

当不再需要该 IP 地址时,可以发送 DHCP 释放数据包(DHCP )来释放它。另外,DHCP 设置中通常有一个租约时间设置。DHCP 客户端可以在这个时间限制内发送 DHCP 请求数据包,通知自己想要延长这个期限。

DHCP 状态机

上面我们知道DHCP会发送几个请求包,我们知道动作总是伴随着状态的变化,DHCP也是一样,当DHCP发送/接收各种包的时候,它的状态也在随之变化,DHCP协议可以在客户端和服务器上运行状态机,状态决定了协议接下来要处理的消息类型。

状态之间的转换(箭头)是由于接收和发送消息或计时器到期而发生的。以下是 DHCP 的状态轮换图。

客户端一开始没有任何消息,处于INIT状态。然后客户端在通信链路上发起广播DHCP。

在选择状态下,客户端收集消息,直到确定要使用的地址和服务器。

一旦 DHCP 客户端做出选择,它就会发送一条消息并进入 DHCP 状态,在该状态下,它很可能会收到不需要的 ACK 响应。如果在此状态下未找到合适的地址,客户端将发送并恢复到 INIT 状态,但这种情况不太可能发生。

处于该状态的客户端有可能接受发送的消息,获得超时时间T1和T2,然后进入Bound状态,在该状态下该地址可以使用,直到过期。

意思是的反义词英语_意思是的反义词_default是什么意思

当第一个定时器T1到期后,客户端进入续约状态,再次尝试建立租约时间,如果收到新的ACK消息,则表示续约成功,然后返回到Bound状态。

如果没有收到 ACK,T2 最终会过期并进入该状态。进入此状态的客户端会重新尝试获取地址。如果最终租约过期,客户端必须放弃租用的地址,并且如果没有其他地址或网络连接可用,客户端会断开连接。

DHCP 冲突

现在我们来讨论一下DHCP冲突的问题。DHCP冲突其实就是IP重复,当一个子网内有两台或多台主机配置了相同的IP地址时,就会发生IP冲突,这种情况的后果可能是两台冲突的主机混在一起,一台主机可能会收到另一台主机的数据包。

那么造成这种情况的原因是什么呢?

造成这种情况的原因有很多。以下是两个可能的原因:

当检测到IP冲突时,系统通常会和Mac系统一样弹出IP冲突弹窗。

DHCP 中继代理

大部分常规家庭网络(富人家庭除外)都只有一个以太网,也就是一个局域网段,一台 DHCP 服务器完全可以满足局域网内客户端的需求。但在更复杂的网络中,比如企业或者学校,一台 DHCP 服务器显然是不够的。因此这种情况下往往需要对 DHCP 进行统一管理,具体实现方式可以是通过 DHCP 中继代理来转发 DHCP 流量,如下图所示。

如上图所示,有A、B两个网段,DHCP客户端与DHCP服务器不在同一网段,因此我们在通讯链路上设置中继代理,DHCP客户端通过访问中继代理来访问DHCP服务器。

采用这种方法,我们不再需要在每个网段上都架设一台DHCP服务器,而只需要在每个网段上架设一个中继代理,它可以设置DHCP服务器的IP地址,这样就可以将每个网段的IP地址分配范围都注册到DHCP服务器上。

DHCP客户端向DHCP中继代理发送DHCP请求报文,DHCP中继代理收到广播报文后,以单播形式发送给DHCP服务器,DHCP服务器收到报文后,返回应答给DHCP中继代理,DHCP中继代理再将报文发送给DHCP客户端。

DHCP 身份验证

我们总是假设一切都会顺利,害怕出现问题。这可能意味着我永远只是一名初级程序员。上面我们讨论的 DHCP 服务器都是合理合法的,但互联网是一把双刃剑,并不是每个人都是合法公民。如果假设了一个未经授权的 DHCP 服务器怎么办?很可能会影响网络。

为了避免这些问题,在[]中指定了一种对DHCP消息进行身份验证的方法。它定义了一个DHCP选项,,如下所示

认证选项的主要目的是确定 DHCP 消息是否来自授权发送者。

身份验证代码属性值为 90,() 给出选项中的字节数(不包括代码和长度字段的字节数)。如果 () 和 () 属性设置为 0,则身份验证信息字段将保存一个简单的共享配置令牌。只要客户端和服务器上的配置令牌匹配,就会接受该消息。

上面我们讲的只是其中一种,还有一种更安全的方法,就是所谓的延迟认证。如果协议和算法都设置为1,就表示使用延迟认证。在这种情况下,客户端的消息或消息中包含认证选项,服务器用其中或消息中包含的认证信息进行响应。这个认证信息包括消息认证码,它提供发送者的认证和消息的完整性验证。RDM 代表中继检测。中继检测包括单项增量值,只要经过代理中继,这个中继检测的值就会+1。

虽然 DHCP 身份验证可以确保安全性,但由于以下两个原因,它尚未得到广泛应用:

总结

这篇文章我跟大家讨论一个计算机网络中很容易被忽略的概念。为什么容易被忽略呢?因为我们在开发的时候通常不会关心IP地址的配置,也就是在搭建环境的时候才会用到。但是如果你想系统地学习计算机网络default是什么意思default是什么意思,DHCP的重要性是不能忽视的。DHCP包括工作机制、DHCP消息信息、DHCP状态机、DHCP认证等,这些都是你需要了解和掌握的。

超过

先前的建议

另外,cxuan整理了6个PDF,在公众号回复cxuan即可收到作者全部PDF。

为您推荐

Just My Luck 是什么意思?Beginners Luck 又是什么?快来了解

Luck是什么意思?示碰巧的意思,在不同的语境里既可以指好运也可能指霉运。碰巧,我最好的朋友是世界上最棒的厨师。luck”表示在完全没有准备或计划的前提下“不经意,碰巧得到的东西”,也就是我们常说的“碰碰运气”。luck”的时候,心里会异常地喜悦,因为没有期待。

2024-06-04 07:43

friday 短语大揭秘:你意想不到的组合和含义

一个短语里,每个单词的意思我们都知道,但是它却不是字面表达的意思。就像中国有些地方比较迷信,不喜欢数字4,有些信基督教的外国人不喜欢星期五。有一首很著名的歌曲叫《黑色星期五》,因此星期五加上数字13意味着最倒霉的一天。face不是“星期五的脸”的意思。face,能证明你那天的脸色很差,需要注意下哦。

2024-06-03 17:13

rabbit 和 visit 的读音、释义及用法介绍

一)rabbit怎么读1、rabbit:英[ˈræbɪt]、美[ˈræbɪt]。二)visit怎么读(1)visit怎么读(2)铅笔英语怎么读(3)dinosaur怎么读1、dinosaur的英语读音:英[ˈdaɪnəsɔː(r)],美[ˈdaɪnəsɔːr]。(4)苟怎么读

2024-06-03 11:33

in no time 不是没时间!立刻、马上的正确表达方式

time立刻;马上time.time立刻做是生活中常用的表达,都有马上的意思,通常放在句尾。差不多,这几个单词都是表示程度的副词,我们要翻译为非常。也是个名词,有出名和成功的意思。time.someone对某人没有好感you,这句话的意思不是我没时间,而是说我对你没什么好感。

2024-06-03 10:54

Temporary 和 Interim 的区别及用法解析

两个单词的中文意思差不多,主要用法不同:中文:多数青春期的问题都是暂时的。中文:但是,在过渡时期我们显然有责任维持法律与秩序。这个临时(temporary)大多用在这样没有固定开始和结束的临时。report,你可以看临时报告,因为这里的临时报告之后会有正式的。

2024-06-03 10:17

电视机插座字母含义、爱普生投影机遥控器 standby 键功能及 stan

本文目录一览1,电视机插座上面的这些字母分别都是代表什么意思这是关机键,传统的电源键只做开机用,关不了机了。4,液晶电视机电源5VSB是什么意思它与主+V电源是有区别的,首先,电源通电后,就一直有5VSB电源输出了,而主5V电源必须在电脑开机或被唤醒状态下,才有输出。

2024-06-03 10:12

加载中...