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

DHCP是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

DHCP几个概念:

DHCP  Client:DHCP客户端,通过DHCP协议请求IP地址的客户端。DHCP客户端是接口级的概念,如果一个主机有多个以太接口,则该主机上的每个接口都可以配置成一个DHCP  客户端。交换机上每个Vlan接口也可以配置成一个DHCP客户端。

DHCP Server:DHCP 服务端,负责为DHCP客户端提供IP地址,并且负责管理分配的IP地址。

DHCP Relay:DHCP中继器,DHCP客户端跨网段申请IP地址的时候,实现DHCP报文的转发功能。

DHCP Security:DHCP安全特性,实现合法用户IP地址表的管理功能

DHCP Snooping:DHCP监听,记录通过二层设备申请到IP地址的用户信息

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报文来续约租期。

【转载】DHCP流程的更多相关文章

  1. android DHCP流程【转】

    本文转载自:http://blog.csdn.net/myvest/article/details/51483647 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   1 ...

  2. 001.DHCP简介

    一 DHCP概念 DHCP指动态主机配置协议,是一个局域网的网络协议,使用UDP协议工作. 二 应用 为大量客户机自动分配地址,提供集中管理 减轻管理和维护成本,提高网络配置效率 三 分配的主要信息 ...

  3. DHCP工作过程的六个主要步骤

    对于学习DHCP来说,很重要的一部分就是对于DHCP工作过程的理解. DHCP分为两个部分:一个是服务器端,另一个是客户端. 所有客户机的IP地址设定资料都由DHCP服务器集中管理,并负责处理客户端的 ...

  4. Kickstart无人值守安装系统

    1.导言 已经或未来将从事Linux系统运维工作的读者,经常会遇到一些机器式的重复的共走,例如:有时间同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装. q  光盘安装系统===> ...

  5. ARP-NAT(MAC Address Translation)的原理

    本文部分图片来自: http://wiki.deliberant.com/faq/wireless-bridge-routing-arpnat/ https://wiki.openwrt.org/do ...

  6. 华为云计算IE面试笔记-FusionSphere Openstack有哪些关键组件,各组件主要功能是什么?三种存储接入组件的差异有哪些?

    1. Nova:在OpenStack环境中提供计算服务,负责计算实例(VM,云主机)生命周期的管理,包括生成.调度和回收.Nova不负责计算实例的告警上报(FC管). 2. Cinder:为计算实例提 ...

  7. 转载 DNS查询流程简介

    转载请注明出处:http://blog.csdn.net/luotuo44/article/details/45545059 DNS(domain name system),读者们或多或少都听过,就是 ...

  8. TCP/IP协议三次握手与四次握手流程解析(转载及总结)

    原文地址:http://www.2cto.com/net/201310/251896.html,转载请注明出处: TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式  TCP/IP协议的详 ...

  9. Android中View绘制流程以及invalidate()等相关方法分析(转载的文章,出处在正文已表明)

    转载请注明出处:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 .同时 ...

随机推荐

  1. HTMLCollection 对象详解,以及为什么循环获取的dom合集操作可能会出现下标不正确的情况?

    有时候循环dom合集,然后操作其中的某些dom之后,发现下标不正确了 比如我们要删除一个dom合集的时候: var selectDom = document.getElementsByClassNam ...

  2. 基于NIO的Netty网络框架

    Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者 ...

  3. asp.net MVC 网站图片防盗链的几种方法

    目录 1. 通过 URL Rewrite Module 组件 2. 通过 nginx 图片防盗链 3.自定义 HttpHandler 处理 4. 通过 MVC 自定义路由规则防盗链 5. 通过 MVC ...

  4. 用hmmlearn学习隐马尔科夫模型HMM

    在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结.本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用.关于hmmlearn的更多资料在官方文 ...

  5. 【原创】源码角度分析Android的消息机制系列(三)——ThreadLocal的工作原理

    ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 先看Android源码(API24)中对ThreadLocal的定义: public class ThreadLocal<T> 即 ...

  6. 补:关于man关于SEE ALSO(参见)中代号与vim下常用命令

    1.查阅/etc/issue文件时,使用man issue发现manual中see also出现motd(5), agetty(8), mingetty(8)字样.以及文档行首的issue(5)究竟是 ...

  7. 自动清理SQLServerErrorLog错误日志避免太大

    问题描述:开启SQLServer自动备份后,备份文件越来越多,有没有及时清理,导致服务器空间不足,备份出错,以至于出现几个G的ErrorLog文件,影响系统的登录管理. 解决办法:定期清理SQLSer ...

  8. 集成python双版本详解

    最近要准备学习Python,由于版本上的差异,不知道要学哪个,现在好多东西都是基于python2基础的,但是python2在2020年左右就可能停止了,所以干脆决定两个都装上吧!   首先上官网上下载 ...

  9. war包中少了class文件

    用eclipse的maven工具打包(执行mvn clean install  和   mvn package)后,再启动wildfly, war包应该会自动复制到wildfly的deployment ...

  10. TortoiseGit使用SSH

    Windows TortoiseGit使用SSH连接 1 找到TortoiseGit自带的Puttygen工具 2.1 如果未生成过SSHKey,选择Generate(生成的过程中记得移动鼠标) 2. ...