对于学习DHCP来说,很重要的一部分就是对于DHCP工作过程的理解。

DHCP分为两个部分:一个是服务器端,另一个是客户端。

所有客户机的IP地址设定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP请求;而客户端则会使用从服务器分配下来的IP地址。

1. DHCP服务器IP分配方式

DHCP服务器提供三种IP分配方式:

  • 自动分配(Automatic Allocation)
    自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。

  • 动态分配(Dynamic Allocation)
    动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用。

  • 手动分配
    手动分配是由DHCP服务器管理员专门为客户端指定IP地址。

2. DHCP服务工作流程

DHCP客户机在启动时,会搜寻网络中是否存在DHCP服务器。如果找到,则给DHCP服务器发送一个请求。DHCP服务器接到请求后,为DHCP客户机选择TCP/IP配置的参数,并把这些参数发送给客户端。 如果已配置冲突检测设置,则DHCP服务器在将租约中的地址提供给客户机之前会使用Ping测试作用域中每个可用地址的连通性。这可确保提供给客户的每个IP地址都没有被使用手动TCP/IP配置的另一台非DHCP计算机使用。

根据客户端是否第一次登录网络,DHCP的工作形式会有所不同。客户端从DHCP服务器上获得IP地址的所有过程可以分为以下六个步骤:

其中新客户端的租约过程的4个步骤。

2.1 工作过程1:寻找DHCP服务器

当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。

2.2 工作过程2:分配IP地址

在网络中接收到DHCP discover发现信息的DHCP服务器就会做出响应,它从尚未分配的IP地址池中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含分配的IP地址和其他设置的DHCP offer提供信息。

2.3 工作过程3:接受IP地址

DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。

2.4 工作过程4:IP地址分配确认

当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的DHCP服务器外,其他的DHCP服务器将收回曾经提供的IP地址。

2.5 工作过程5:重新登录

以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。

客户端重新登录

如果客户端DHCP request 内的IP地址在服务器端没有被使用,DHCP服务器回复DHCP ACK继续使用IP。

如果客户端DHCP request 内的IP地址在服务器端已被使用,DHCP服务器回复DHCP NACK告诉客户端IP已被使用。

客户端重新开始DHCP流程。

2.6 工作过程6:更新租约

DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限到达租约的50%时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

DHCP工作过程的六个主要步骤的更多相关文章

  1. DHCP工作过程详解

    DHCP动态主机配置协议的作用我想作为网管的兄弟们都应该知道了,这里我就不多废话了,今天我要谈的是DHCP的工作过程,了解了工作过程,要排除故障就容易了.   一.DHCP客户机初始化: 1. 寻找D ...

  2. 【转】DHCP工作过程详解

    DHCP动态主机配置协议的作用我想作为网管的兄弟们都应该知道了,这里我就不多废话了,今天我要谈的是DHCP的工作过程,了解了工作过程,要排除故障就容易了.   一.DHCP客户机初始化: 1. 寻找D ...

  3. DHCP工作过程

    第一步是客户机发出的DHCPDSCOVER广播消息在网络上查找DHCP服务器. 任何收到这个消息的DHCP服务器产生一个DHCPOFFER的广播信息,其中包含配置信息,诸如IP地址.租期和域名.如果在 ...

  4. DHCP 工作原理

    DHCP 详解 DHCP 工作原理 一.什么是DHCP? DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server), ...

  5. 框架源码系列四:手写Spring-配置(为什么要提供配置的方法、选择什么样的配置方式、配置方式的工作过程是怎样的、分步骤一个一个的去分析和设计)

    一.为什么要提供配置的方法 经过前面的手写Spring IOC.手写Spring DI.手写Spring AOP,我们知道要创建一个bean对象,需要用户先定义好bean,然后注册到bean工厂才能创 ...

  6. 【流媒体】UPnP的工作过程

    UPnP简介 通用即插即用(英语:Universal Plug and Play,简称UPnP)是由“通用即插即用论坛”(UPnP™ Forum)推广的一套网络协议. 该协议的目标是使家庭网络(数据共 ...

  7. DHCP工作原理简析

    引言 DHCP是网络体系结构中应用层的一个重要协议,它可以帮助我们对要连接到互联网的计算机进行IP地址等信息的配置.本文从DHCP的原理出发,就DHCP的工作过程 进行详细的探讨. 主要报文 发现报文 ...

  8. 《CPU的工作过程》

    本文转载自inter官方网址:https://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_proces ...

  9. Android4.4 以太网和DHCP启动过程介绍

    转自:http://blog.csdn.net/wlwl0071986/article/details/51451843 Android4.4已经加入了以太网的支持.现在对以太网的初始化流程.网络策略 ...

随机推荐

  1. 设置让php能够以root权限来执行exec() 或者 shell_exec()

    一.查看启动你php的进程的用户是谁. 可以通过在命令行执行:ps -ef | grep php来看.或者在php中执行 echo exec('whoami') 来查看.centos下默认会是nobo ...

  2. Java中夏令时带来的Date不一致问题 (转)

    http://www.cnblogs.com/snake-hand/archive/2013/06/10/3131157.html 最近同事W发现使用Java Date创建日期,在不同的机器上执行,得 ...

  3. Cognos11中通过URL传参访问动态Report

    一.需求: 在浏览器输入一个URL,在URL后面加上参数就可以访问一个有提示值的报表?比如下面的报表 二.解决办法 Cognos  Model 查询主题设计层概要 Select * from [UCO ...

  4. HTTPS证书撤销

    如果浏览器信息被拦截,可以选择清洗掉之前的证书 关闭浏览器,在CMD中输入命令 certutil -urlcache * certutil -urlcache * delete certutil -u ...

  5. [JUnit] Introduce to Junit and it annotations

    Check the get started guid https://junit.org/junit5/docs/current/user-guide/#overview-getting-help p ...

  6. C#和网页js互调代码

    C#和网页js互调代码 1.先写个网页放在主程序目录下:test.html <!DOCTYPE html> <html lang="en" xmlns=" ...

  7. unity3d与web网页通信

    总结一下: Unity3D 中的 C# 和 JavaScript 脚本之间是可以互相访问并交互的,但是要求这些被访问和操作的 C# 和 JavaScript 组件必须放在名为 Standard Ass ...

  8. 查看postgre都有哪些语句占用CPU,以及对应的sql语句

    查看占用CPU最多的几个postgresql ps aux | grep postgres | sort -n -r -k | head - | awk '{print $2, $3}' 查看所有po ...

  9. Linux安装和设置Samba服务器

    1. 安装 安装前先关闭iptables和SELinux. Centos输入以下命令: yum install samba samba-client Ubuntu输入以下命令: apt-get ins ...

  10. CTP交易函数大全

    管理接口 交易接口