专栏首页飞天小牛肉DHCP:IP 并非与生俱来

DHCP:IP 并非与生俱来

初识 DHCP

众所周知,因特网上的每台设备都规定了其全世界唯一的地址,也就是说 “IP 地址”,正是由于有了 IP 地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。

IP 地址就好像电话号码(地址码):有了某人的电话号码,你就能与他通话了。同样,有了某台主机的 IP 地址,你就能与这台主机通信了。

But,如果逐一为每一台主机设计 IP 地址那不得累死,不说全世界可能上百亿台计算机的存在,就说一台笔记本电脑,每移动到一个地方,就需要重新配置 IP 地址

显然,手动分配 IP 地址不是我们人类中的那些顶级大脑能够做出来的事情,为了实现自动配置 IP 地址、统一管理 IP 地址分配,DHCP 协议(Dynamic Host Configuration Protocol,动态主机配置协议)就被创造了出来,这是一个应用层协议

在没有 DHCP 服务的网络中,计算机接入到网络时必须先被设置 IP 地址、子网掩码、默认路由等等,并且,为了保证所有的主机 IP 地址都是唯一的,管理员必须清楚的知道该如何分配 IP 地址以避免冲突。

而在提供 DHCP 服务的网络中,管理员的负担大幅度减轻,只要在 DHCP 服务器上做一些必要的设置即可,计算机一旦接入到网络,就会自动获取 TCP/IP 通信所必须的设置(IP 地址等信息),并且 DHCP 服务器会保证其 IP 地址的唯一性。

可以看出,DHCP 实际上提供的是一种即插即用的网络,就是说只要某台计算机物理上一连通,无需专门的设置,就可以直接使用这台物理设备。

DHCP 的工作原理

DHCP 不仅可以为接入互联网的计算机配置 IP 地址,还可以配置子网掩码、默认路由等信息,那这些信息当然是不会凭空变出来的,它们都需要被提前配置到 DHCP 服务器上。

从 DHCP 获取 IP 地址的流程和 ARP 有一点相似不过还是存在不同的,客户端主机和 DHCP 服务器之间基于 UDP 协议采用广播形式进行交互,主机发送请求消息到 DHCP 服务器的 67 号端口,DHCP 服务器回应应答消息给主机的 68 号端口。具体流程如下:

1)客户端主机广播 DHCP Discover 包:主机请求 DHCP 服务器为自己设置 IP 地址、子网掩码等信息

说的通俗一点,当一台设备新加入一个网络的时候,它只知道自己的 MAC 地址,那么为了获取一些必要的信息,它会先大吼一句(广播,目标地址 255.255.255.255):“我是新来的,我的 MAC 地址是这个,我还没有 IP 地址(或者说 IP 地址是 0.0.0.0,表示未知),有没有 DHCP 服务器能租给我一个 IP 地址呀?”,这个过程称为 “DHCP Discover”。

想必看到这里各位也就能知道 MAC 地址的重要性了,它是与生俱来的,而 IP 地址并不是

2)DHCP 服务器广播 DHCP Offer 包:DHCP 服务器通知主机哪些网络设置是可以使用的

如果这个网络中存在多个 DHCP 服务器,它们都听到了新人的大吼,并且都愿意租给这位新人一个 IP 地址等信息,那么这个新人主机就会收到多个可用的 IP 地址等信息。这个过程称为 “DHCP Offer”。

3)客户端主机广播 DHCP Request 包:主机通知服务器自己想要使用在(2)中通知的设置

主机在它收到的多个 Offer 中,选择其中一个,一般是最先到达的那个。并且会向网络广播一个 DHCP Request 包,包中包含客户端主机的 MAC 地址、接受的 Offer 中的 IP 地址、提供此 Offer 的 DHCP 服务器地址等,并告诉所有 DHCP 服务器,它将要接受哪一台服务器提供的 IP 地址,告诉其他的 DHCP 服务器,撤销它们提供的 IP 地址,以便提供给下一个 IP 租用请求者。

4)DHCP 服务器广播 DHCP ACK 包:服务器通知主机允许(3)的设置,即正式将 IP 地址等信息分配给主机

在完成第(4)步之前,主机还没有得到 DHCP 服务器的最后确认,所以它还没有 IP 地址,DHCP 服务器想 要给这个主机发送消息,仍然只能采取广播的方式,广播包中包含分配给这台主机的 IP 地址等信息。

至此,DHCP 的网络设置结束,可以进行正常的 TCP/IP 通信了。

DHCP 设置中通常会有一个时间的限制,租期到了,分配的这个 IP 就会被收回。当然,就这好比租房子,你要续约也是可以的,只要你提前说就行,客户端主机可以在这个时间限之前,发送 DHCP Request 包通知想要延长租用时间

另外,当客户端主机不再需要这个 IP 地址的时候,随时可以通过发送 DHCP Release 报文释放自己的 IP 地址,DHCP 服务器收到 DHCP Release 报文后,会回收相应的 IP 地址并重新分配。

DHCP 的三种机制

我们上述所说的工作机制是一种动态分配 IP 地址的方式,事实上,DHCP 有三种机制分配 IP 地址:

1)自动分配方式(Automatic Allocation),DHCP 服务器为主机指定一个永久性的 IP 地址,一旦 DHCP 客户端第一次成功从 DHCP 服务器端租用到 IP 地址后,就可以永久性的使用该地址。

2)动态分配方式(Dynamic Allocation),DHCP 服务器给主机指定一个具有时间限制的 IP 地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

3)手工分配方式(Manual Allocation),客户端的 IP 地址是由网络管理员指定的,DHCP 服务器只是将指定的 IP 地址告诉客户端主机。

很明显,三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

DHCP 服务器如何保证分配的 IP 地址不冲突

可以看出,DHCP 服务的正常运转极度依赖于 DCHP 服务器,如果 DHCP 服务器发生故障了,将导致无法自动分配 IP 地址,也就是说该网段内所有主机之间都无法进行正常的 TCP/IP 通信。

为此,人们通常会在一个网段内设置两台或以上的 DHCP 服务器,这不可避免的产生一个问题:每个 DHCP 服务器内记录的都是这个网段的 IP 地址分配情况的信息,各自分配的 IP 地址相互冲突在所难免。

为了避免冲突,DHCP 服务器具备这样的功能:

  • 在分配 IP 地址之前发送 ICMP 回送请求包(关于 ICMP 协议详见 所谓 ICMP,不过将军与士卒而已),如果收到了返回应答报文,那不用说,这个 IP 地址已经被人用了。

同样的,客户端主机也得确认下 DCHP 服务器分配的 IP 地址是否正在被人使用:

  • 针对从 DHCP 那里获得的 IP 地址发送 ARP 请求报文(关于 ARP 协议详见 5 幅图拿下 ARP 协议),如果收到了返回应答,那显然,根据这个 IP 地址都能找到 MAC 地址了,你说这个 IP 我还能不能用?

本文分享自微信公众号 - 飞天小牛肉(CS-Wiki),作者:飞天小牛肉

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-06-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TIC人物|西电俱乐部初创者李英斌:TIC于我,爱满溢,甚感激!

    编者按 性格内向、行事低调,但他从一位平凡普通的学生,到俱乐部创建人(之一),再到出任腾讯产品总监,一路突破自我,全程高能。他便是本期TIC人物李英斌,西安电...

    腾讯高校合作
  • 筑梦基地成立!中国传媒大学腾讯创新俱乐部成立仪式回顾

    对于风华正茂的大学生而言,游戏承载着许许多多的青春记忆。不少爱好者亦怀揣着投身游戏行业的梦想,把创造一个更加伟大的虚拟世界视作奋斗目标。而通往梦想...

    腾讯高校合作
  • 中国传媒大学腾讯创新俱乐部成立仪式即将启动

    随着腾讯游戏学院“梦想校园行”的足迹踏过大江南北,我们也更多地倾听到了年轻同学们的声音。朝气蓬勃的少年们,怀揣着对梦想与游戏的激情,准备加入创造快乐的行列,让行...

    腾讯高校合作
  • 计算思维@Torrey Pines 高中

    Abby Brown是一位数学老师,在加利福尼亚州圣地亚哥的Torrey Pines高中任教。她热衷于教学,即使是对于自己的数学课堂之外的学生,她一样满怀热忱,...

    WolframChina
  • 祝贺西安电子科技大学腾讯创新俱乐部成立十周年

    前言 以“快乐创新,Q出未来”为口号,以“做优秀产品,办精品活动”为宗旨,西安电子科技大学腾讯创新俱乐部十岁了!在历任主席团成员及所有西电TICer们的共同努力...

    腾讯高校合作
  • 区块链用AI和大数据改变体育行业

    区块链不仅仅是技术革命,更是社会组织结构的变革、商业模式的变革以及生产关系的变革,是人类发展的必然趋势,区块链也将重塑世界体育价值体系。

    用户2357564
  • 用于小型图形挖掘研究的瑞士军刀:空手道俱乐部的图表学习Python库

    空手道俱乐部(Karate Club)是NetworkX Python软件包的无监督机器学习扩展库。详细可以参阅此处的文档:

    AI科技大本营
  • 图卷积网络到底怎么做,这是一份极简的Numpy实现

    GCN 是一类非常强大的用于图数据的神经网络架构。事实上,它非常强大,即使是随机初始化的两层 GCN 也可以生成图网络中节点的有用特征表征。下图展示了这种两层 ...

    机器之心
  • 巨头打头阵,互联网体育大爆发

    这几天广州正在集中上演国际足球大赛,恒大淘宝和拜仁慕尼黑对战之后,皇家马德里和国际米兰的比赛即将开打。皇家马德里俱乐部本次中国之行还有一个任务:其海外旗舰店正式...

    罗超频道
  • 精神分裂症和双相情感障碍患者的年轻后代的脑网络在富人俱乐部和结构-功能耦合方面受到遗传影响

    当前生物精神病学的一个紧迫问题是阐明导致主要精神疾病表现的大脑发育模式,其中一个很有价值的范例是对精神分裂症和双向情感障碍风险增加的年轻人研究。精神分裂症和双向...

    用户1279583
  • 全新出发,闪耀2020| 腾讯高校创新俱乐部年度评优结果出炉(文末有福利)

    导语 为加强创新人才生态环境建设并积极推动国家人才教育改革,⾃2006年起,腾讯与北京大学、西安交通大学、上海交通大学、中山大学、电子科技大学、哈尔滨工业大学...

    腾讯高校合作
  • 中国.NET:各地微软技术俱乐部汇总(持续更新中...)

    本文是转载文,源地址: https://www.cnblogs.com/panchun/p/JLBList.html by 史记微软.

    Enjoy233
  • 邹溪源: 我们为什么要搞长沙.NET技术社区(二-1)

    某种意义上讲,长沙和中国大部分内地城市一样,都是互联网时代的灯下黑。没有真正意义上的互联网公司,例如最近发布的中国互联网企业一百强中没有一家湖南...

    寒树Office与RPA
  • 晓说区块链 | 量子计算会终结区块链技术与生俱来的安全“基因”吗?

    量子计算是一种遵循量子力学规律调控量子信息单元进行计算的新型计算模式。从计算的效率来看,由于量子力学叠加性的存在,目前某些已知的量子算法在处理问题时速度要明显快...

    维基链WICC
  • 数据化营销:让付费转化率提升8倍的数据化运营方法

    写这篇文章的主要目的是,想说明数据挖掘在运营、营销中的巨大作用。 最近在和一家做在线转账产品的公司合作,看到该公司对数据的运营相对来说还是比较表面的,拿到数据拉...

    沉默的白面书生
  • 中国.NET:各地微软技术俱乐部汇总(回复:jlb查最新城市)

    成功的故事荡气回肠,失败的故事千回百转,但是你不去追求与偿试,你永完不会知道成功的原因失败的原因是什么,人生一辈子也就三万天,如果每天糊里糊涂的过去了,若干年后...

    寒树Office与RPA
  • 腾讯成立云+CTO俱乐部,共话技术管理人的使命和未来

    2005年8月19日,腾讯云联合腾讯大学、腾讯投资共同倡议发起成立腾讯首个CTO俱乐部——“云+CTO俱乐部”,昨日下午在深圳腾讯大厦启动仪式现场,腾讯大咖和首...

    Lindsay
  • 潘淳:苏州.NET俱乐部成立大会全流程-下午(全部22环节)

    ⊙【14】课程2:《使用 .NET Core + DevOps 开发微信跨平台应用》

    寒树Office与RPA
  • 苏宁iPhone俱乐部跟苹果抢生意:剑指双11、立体化电商

    双11大战已正式揭幕,电商行业早已是硝烟弥漫。与往年不同,今年并未出现群雄混战的局面,而是阿里-苏宁与京东-1号店的双雄对决。一直在家电和3C类很具优势的苏宁在...

    罗超频道

扫码关注云+社区

领取腾讯云代金券