dhcp之网络服务学习路线

author author     2022-09-28     781

关键词:



The Dynamic Host Configuration Protocol (DHCP) is a standardized network protocol used on Internet Protocol (IP) networks. The DHCP is controlled by a DHCP server that dynamically distributes network configuration parameters, such as IP addresses, for interfaces and services. A router or a residential gateway can be enabled to act as a DHCP server. A DHCP server enables computers to request IP addresses and networking parameters automatically, reducing the need for a network administrator or a user to configure these settings manually. In the absence of a DHCP server, each computer or other device on the network needs to be manually assigned to an IP address.



DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。





DHCP


https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol






https://baike.baidu.com/item/DHCP/218195?fr=aladdin#4






https://tools.ietf.org/html/rfc951#section-6









http://network.51cto.com/art/201406/441752.htm









DHCP 工作原理


技术分享



发现阶段:

即DHCP客户端寻找DHCP服务端的过程,对应于客户端发送DHCP Discovery,因为DHCP   Server对应于DHCP客户端是未知的,所以DHCP 客户端发出的DHCP   Discovery报文是广播包,源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持TCP/IP的主机都会收到该DHCP  Discovery报文,但是只有DHCP Server会响应该报文。

如果网络中存在多个DHCP Server,则多个DHCP Server均会回复该DHCP Discovery报文。

如果同一个vlan内没有DHCP Server,而该VlanIf配置了DHCP   Relay功能,则该Vlanif即为DHCP中继,DHCP中继会将该DHCP报文的源IP地址修改为该Vlanif的IP地址,而目的地址则为DHCP  Relay配置的DHCP Server的IP地址。同时修改DHCP报文中,giaddress为VlanIf的IP地址。并以单播将DHCP   Discovery发送到DHCP Server端。

DHCP Server 提供阶段:

DHCP Server提供阶段,即为DHCP Server响应DHCP Discovery所发的DHCP Offer阶段

DHCP Server收到DHCP   Discovery报文后,解析该报文请求IP地址所属的Subnet。并从dhcpd.conf文件中与之匹配的subnet中取出一个可用的IP地址(从可用地址段选择一个IP地址后,首先发送ICMP报文来ping该IP地址,如果收到该IP地址的ICMP报文,则抛弃该IP地址,重新选择IP地址继续进行ICMP报文测试,直到找到一个网络中没有人使用的IP地址,用以达到防治动态分配的IP地址与网络中其他设备IP地址冲突,这个IP地址冲突检测机制,可配置),设置在DHCP   Discovery报文中yiaddress字段中,表示为该客户端分配的IP地址,并且为该Lease设置该Subnet配置的Option,例如默认leases租期,最大租期,router等信息。

DHCP从地址池中选择IP地址,以如下优先级进行选择:

1、当前已经存在的Ip Mac的对应关系

2、Client以前的IP地址

3、读取Discovery报文中的Requested Ip Address Option的值,如果存在并且IP地址可用

4、从配置的Subnet中选择IP地址:

DHCP Server解析DHCP Discovery请求的IP所属的Subnet,首先看该DHCP   Discovery报文中giaddress是否有DHCP   Relay,如果有,则从giaddress所述的subnet中可用IP地址段中获取,并分配IP。如果giaddress没有IP地址,则从该DHCP  Server绑定的接口的IP地址所属的网段分配IP地址。

DHCP Client 选择阶段:

DHCP Client收到若干个DHCP Server响应的DHCP Offer报文后,选择其中一个DHCP Server作为目标DHCP  Server。选择策略通常为选择第一个响应的DHCP Offer报文所属的DHCP Server。

然后以广播方式回答一个DHCP Request报文,该报文中包含向目标DHCP请求的IP地址等信息。之所以是以广播方式发出的,是为了通知其他DHCP  Server自己将选择该DHCP Server所提供的IP地址。

DHCP Server确认阶段:

当DHCP Server收到DHCP Client发送的DHCP Request后,确认要为该DHCP Client提供的IP地址后,便想该DHCP  Client响应一个包含该IP地址以及其他Option的报文,来告诉DHCP Client可以使用该IP地址了。然后DHCP  Client即可以将该IP地址与网卡绑定。另外其他DHCP Server都将收回自己之前为DHCP Client提供的IP地址。

DHCP Client重新登录网络:

当DHCP Client重新登录后,发送一个以包含之前DHCP Server分配的IP地址信息的DHCP Request报文,当DHCP  Server收到该请求后,会尝试让DHCP客户端继续使用该IP地址。并回答一个ACK报文。

但是如果该IP地址无法再次分配给该DHCP Client后,DHCP回复一个NAK报文,当DHCP Client收到该NAK报文后,会重新发送DHCP  Discovery报文来重新获取IP地址。

DHCP Client更新租约:

DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将回收该IP地址,所以如果DHCP   Client如果想继续使用该IP地址,则必须更新器租约。更新的方式就是,当当前租约期限过了一半后,DHCP Client都会发送DHCP   Renew报文来续约租期。







本文出自 “运维自动化” 博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1979362

企业级网络实战之学习路线

VRRPHSRP关于网络层的负载均衡和热备        http://dog250.blog.51cto.com/2466061/556775路由器和交换机的区别        http://chen908113385.blog.51ct 查看详情

soa架构之学习路线

SOA (面向服务的架构) 编辑面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现... 查看详情

应用架构设计之学习路线

3.3.1 负载均衡阿里云负载均衡(ServerLoadBalancer,SLB)是将访问流量根据转发策略分发到后端多台ECS的流量分发控制服务。用户可以通过负载均衡的流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用... 查看详情

drbd之学习路线

二、DRBD是什么    简单的说,DRBD(DistributedReplicatedBlockDevice,分布式复制块设备)是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。你可以把它看作是一种网络RA... 查看详情

信息安全之防护学习路线

挂马所谓的挂马,就是黑客通过各种手段,包括SQL注入,网站敏感文件扫描,服务器漏洞,网站程序0day,等各种方法获得网站管理员账号,然后登陆网站后台,通过数据库“备份/恢复”或者上传漏洞获得一个webshell。利用获得的w... 查看详情

学习路线2021学习路线计划之了解前后端技术栈

...;关于HTTP的介绍可移步《【计算机网络】测试人关于HTTP的学习和梳理》。关于TCP的介绍可移步《【计算机网络】测试人关于TCP的学习和梳理》。关于HTTPS的介绍可移步《【计算机网络】测试人关于HTTPS的学习和梳理》。计算机基... 查看详情

codepipeline之学习路线

CodePipeline联动容器的DevOps实践 我觉得就是要开发者和服务运营人员之间能够有一种互相延伸的能力,开发者可以参与到运营的工作里边,运营也可以参与到开发设计工作当中,以及他们之间的互相反馈信息能力,对用户的价... 查看详情

yum企业私有源之学习路线

YUMYUM 架构分析rpm包制作yumyum私有源     yum源及yum仓库服务搭建讲解        http://oldboy.blog.51cto.com/2561410/1126453本文出自“运维自动化”博客,请务必保留此出处http://shower 查看详情

arp之协议学习路线

①ARP(AddressResolutionProtocol)即地址解析协议,用于实现从IP地址到MAC地址的映射,即询问目标IP对应的MAC地址。②在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出... 查看详情

vim之学习路线

Vim-theubiquitoustexteditorVimisahighlyconfigurabletexteditorbuilttomakecreatingandchanginganykindoftextveryefficient.Itisincludedas"vi"withmostUNIXsystemsandwithAppleOSX. Vimisrockstableandiscon 查看详情

分布式存储之学习路线

本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1973262 查看详情

分布式存储之学习路线

本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1973266 查看详情

压力测试之学习路线

怎样正确做Web应用的压力测试?https://www.zhihu.com/question/19867883本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1981132 查看详情

markdown之学习路线

Markdown:Basics(快速入门)http://www.appinn.com/markdown/basic.html本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1982681 查看详情

数据采集之采集引擎学习路线

什么是插件式监控平台为什么使用插件式监控平台插件式监控平台的构成与工作原理插件式监控平台的环境配置采集器下载和部署配置步骤采集器和插件的代码说明如何开发新的插件常见问题及解决方法如何添加插件如何创建采... 查看详情

devops之学习路线

和Atlassian一起探索DevOpshttp://www.confluence.cn/pages/viewpage.action?pageId=9275113DevOps文化建设工具http://www.confluence.cn/pages/viewpage.action?pageId=9275113本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto 查看详情

zpanel主机控制面板之学习路线

Welcometotheofficial ZPanel website. ZPanel isafreeandcompletewebhostingcontrolpanelforMicrosoftWindowsandPOSIX(Linux,UNIXandMacOSX)basedservers ZPanel iswrittenin P 查看详情

pylint之tutorial学习路线

http://www.jb51.net/article/31185.htmpylint&tutorialhttp://liujinguang.blog.51cto.com/9906588/1612532/pylint&installhttp://blog.csdn.net/972301/article/details/58104788pylint&pycharmhttp:/ 查看详情