一文了解DHCP的工作原理

在终端规模较大的网络中手工配置ip地址时,为避免ip地址重复,需要事先规划每个终端的ip地址,导致工作量大且容易出错!
当终端位置经常变更时(例如企业出差人员的便携电脑),每次变更都需要重新手工配置ip地址,烦神又烦力呀...
某些特殊的无盘工作站,无法手工配置ip地址,该如何与网络实现互通?
其实吧,有了动态主机配置协议dhcp(dynamic host configuration protocol),上面的问题都可以解决了。小伙伴们再也不用担心手工配错,费神费力了。
dhcp能够实现动态为主机分配ip地址,而且是目前应用很广泛的一种技术。例如,办公室,网吧里的固定pc;咖啡厅,机场等提供wifi接入的地方用手机上网,这些都会用到dhcp。
本期就由小编来给大家普及下dhcp的各种工作原理。
dhcp工作原理
一、什么是dhcp?
dhcp,动态主机配置协议,前身是bootp协议,是一个局域网的网络协议,使用udp协议工作,常用的2个端口:
67(dhcp server),68(dhcp client)。
dhcp通常被用于局域网环境,主要作用是集中的管理、分配ip地址,使client动态的获得ip地址、gateway地址、dns服务器地址等信息,并能够提升地址的使用率。简单来说,dhcp就是一个不需要账号密码登录的、自动给内网机器分配ip地址等信息的协议。
二、dhcp协议中的报文
dhcp报文共有以下几种:
dhcp discover :客户端开始dhcp过程发送的包,是dhcp协议的开始
dhcp offer :服务器接收到dhcp discover之后做出的响应,它包括了给予客户端的ip(yiaddr)、客户端的mac地址、租约过期时间、服务器的识别符以及其他信息
dhcp request :客户端对于服务器发出的dhcp offer所做出的响应。在续约租期的时候同样会使用。
dhcp ack :服务器在接收到客户端发来的dhcp request之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的ip和其他信息可以被允许使用。
dhcp nak :dhcp ack的相反的报文,表示服务器拒绝了客户端的请求。
dhcp release :一般出现在客户端关机、下线等状况。这个报文将会使dhcp服务器释放发出此报文的客户端的ip地址。
dhcp inform :客户端发出的向服务器请求一些信息的报文。
dhcp decline :当客户端发现服务器分配的ip地址无法使用(如ip地址冲突时),将发出此报文,通知服务器禁止使用该ip地址。
dhcp的工作流程:
三、dhcp协议包的组成
xid :随机生成的一段字符串,两个数据包拥有相同的xid说明他们属于同一次会话。
ciaddr :客户端会在发送请求时将自己的ip地址放在此处。
yiaddr :服务器会将想要分配给客户端的ip地址放在此处。
siaddr :一般来说是服务器的ip地址.但是注意!根据openwrt源码给出的注释,当报文的源地址、siaddr、option­>server_id字段不一致(有经过跨子网转发)时,通常认为option­>srever_id字段为真正的服务器ip,siaddr有可能是多次路由跳转中的某一个路由的ip (下图中wireshark抓包中也有标明siaddr为nextserver ip address)。
chaddr :客户端的mac地址。
giaddr :如果需要跨子网进行dhcp地址发放,则在此处填入经过的路由器的ip地址。
sname :服务器主域名。
options :可以自由添加的部分,用于存放客户端向服务器请求信息和服务器的应答信息。
dhcp 客户端
一、什么是dhcp客户端?
dhcp客户端一般来说是局域网中独立的pc主机。
dhcp客户端发出的dhcp discover包是dhcp协议的开始。
延续租期、发现、释放ip地址等大多数dhcp中的行为都是由dhcp客户端主动发起。
二、dhcp 自动状态机
dhcp获得ip地址的4步骤:discover­>offer­>request­>ack(nak)
dhcp刷新租期的步骤:request­>ack(nak)
dhcp释放ip的步骤:release
wnr2000v5 1.0.0.8的代码中没有发现rebooting、init­reboot状态。所以dhcp client的状态一般从init开始,完整的状态机如下图(红色代表客户端的状态跳转):
dhcp工作过程详解
一、dhcp客户机初始化:
1.寻找dhcp server
当dhcp客户机第一次登录网络的时候(也就是客户机上没有任何ip地址数据时),它会通过udp 67端口向网络上发出一个dhcpdiscover数据包(包中包含客户机的mac地址和计算机名等信息)。因为客户机还不知道自己属于哪一个网络,所以封包的源地址为0.0.0.0,目标地址为255.255.255.255,然后再附上dhcp discover的信息,向网络进行广播。
dhcp discover的等待时间预设为1秒,也就是当客户机将第一个dhcp discover封包送出去之后,在1秒之内没有得到回应的话,就会进行第二次dhcp discover广播。若一直没有得到回应,客户机会将这一广播包重新发送四次(以2,4,8,16秒为间隔,加上1-1000毫秒之间随机长度的时间)。如果都没有得到dhcp server的回应,客户机会从169.254.0.0/16这个自动保留的私有ip地址中选用一个ip地址。并且每隔5分钟重新广播一次,如果收到某个服务器的响应,则继续ip租用过程。
2. 提供ip地址租用
当dhcp server监听到客户机发出的dhcp discover广播后,它会从那些还没有租出去的地址中,选择最前面的空置ip,连同其它tcp/ip设定,通过udp 68端口响应给客户机一个dhcp offer数据包(包中包含ip地址、子网掩码、地址租期等信息)。此时还是使用广播进行通讯,源ip地址为dhcp server的ip地址,目标地址为255.255.255.255。同时,dhcp server为此客户保留它提供的ip地址,从而不会为其他dhcp客户分配此ip地址。
由于客户机在开始的时候还没有ip地址,所以在其dhcp discover封包内会带有其mac地址信息,并且有一个xid编号来辨别该封包,dhcp server响应的dhcp offer封包则会根据这些资料传递给要求租约的客户。
3. 接受ip租约
如果客户机收到网络上多台dhcp服务器的响应,只会挑选其中一个dhcp offer(一般是最先到达的那个),并且会向网络发送一个dhcp request广播数据包(包中包含客户端的mac地址、接受的租约中的ip地址、提供此租约的dhcp服务器地址等),告诉所有dhcp server它将接受哪一台服务器提供的ip地址,所有其他的dhcp服务器撤销它们的提供以便将ip地址提供给下一次ip租用请求。此时,由于还没有得到dhcp server的最后确认,客户端仍然使用0.0.0.0为源ip地址,255.255.255.255为目标地址进行广播。
事实上,并不是所有dhcp客户机都会无条件接受dhcp server的offer,特别是如果这些主机上安装有其它tcp/ip相关的客户机软件。客户机也可以用dhcp request向服务器提出dhcp选择,这些选择会以不同的号码填写在dhcp option field里面。客户机可以保留自己的一些tcp/ip设定。
4.租约确认
当dhcp server接收到客户机的dhcp request之后,会广播返回给客户机一个dhcp ack消息包,表明已经接受客户机的选择,并将这一ip地址的合法租用以及其他的配置信息都放入该广播包发给客户机。
客户机在接收到dhcp ack广播后,会向网络发送三个针对此ip地址的arp解析请求以执行冲突检测,查询网络上有没有其它机器使用该ip地址;如果发现该ip地址已经被使用,客户机会发出一个dhcp decline数据包给dhcp server,拒绝此ip地址租约,并重新发送dhcp discover信息。此时,在dhcp服务器管理控制台中,会显示此ip地址为bad_address。
如果网络上没有其它主机使用此ip地址,则客户机的tcp/ip使用租约中提供的ip地址完成初始化,从而可以和其他网络中的主机进行通讯。
二、dhcp客户机租期续约:
客户机会在租期过去50%的时候,直接向为其提供ip地址的dhcp server发送dhcp request消息包。如果客户机接收到该服务器回应的dhcp ack消息包,客户机就根据包中所提供的新的租期以及其它已经更新的tcp/ip参数,更新自己的配置,ip租用更新完成。如果没有收到该服务器的回复,则客户机继续使用现有的ip地址,因为当前租期还有50%。
如果在租期过去50%的时候没有更新,则客户机将在租期过去87.5%的时候再次向为其提供ip地址的dhcp联系。如果还不成功,到租约的100%时候,客户机必须放弃这个ip地址,重新申请。如果此时无dhcp可用,客户机会使用169.254.0.0/16中随机的一个地址,并且每隔5分钟再进行尝试。


NVIDIA 与 smart 合作打造下一代智能驾驶汽车
桁架机器人大幅度提高企业效率的几大要点
中国OLED企业发展迅速,产能增加促进国内OLED产业链成熟
YXC扬兴科技新品发布丨低功耗高精度压控温补晶振
2019上半年中国LED灯管出口金额及是TOP10企业
一文了解DHCP的工作原理
数智创新 拓而有维 | 拓维信息亮相2022中国国际智能产业博览会
生存分析-Cox回归模型的详细说明
走在剃刀细线:平衡嵌入式系统的功耗和性能
断路器选用的6项要求4项原则
光猫和路由器的区别是什么
你了解过Linux内核中的Device Mapper 机制?
无人机自动驾驶技术面世 无人机行业将带来重大变化
镜面显示屏时代来临,黑科技将开启智慧新模式
掌握电气设备拆修和调整原则
5G频谱将变成一种容易交易的商品
荣耀9什么时候上市?荣耀9最新消息:荣耀9终于来了,下周一发布品牌代言人确定,但价格拿捏不准
oled与led的区别是什么?谁最有市场?
荣耀9什么时候上市?荣耀9最新消息:荣耀9六色定妆照曝光,配华为P10同款双摄
英蓓特关于嵌入式医疗设备的应用和开发简析