`
德安德鲁
  • 浏览: 44933 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

DHCP(三)-DHCP实现原理

    博客分类:
  • DHCP
阅读更多

 

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业务需要,配置不同的dhcpd.conf文件。

 

 

 

 

 

 

  • 大小: 64 KB
1
2
分享到:
评论

相关推荐

    dhcp-4.2.5-P1.tar.gz

    2. `src/`:源代码目录,包含了服务器端和可能的客户端实现。 3. `config.h.in`:预处理头文件,用于生成最终的`config.h`,其中包含了编译时的配置选项。 4. `configure`:一个自动化脚本,用于检测系统环境并生成...

    dhcp-4.4.1最新dhcp服务器源码

    源码分析对于理解DHCP服务器的工作原理、定制功能或开发新特性至关重要。 DHCP服务器的核心功能包括: 1. **IP地址管理**:DHCP服务器负责管理IP地址池,当客户端请求IP地址时,它会从可用的IP地址池中分配一个未...

    dhcp-forwarder.rar_dhcp_dhcp forwarder_dhcp-forwarder

    `dhcp-forwarder` 的工作原理可能是监听特定端口上的DHCP流量,捕获请求,然后根据预设规则将这些请求转发到适当的DHCP服务器。这允许在网络架构中实现集中管理和故障隔离,同时也可以帮助解决多子网环境中DHCP服务...

    dhcp-4.0.0.tar.gz_dhcp_dhcp ta_dhcp-3.0.7.tar._dhcp-4.0.2.tar._d

    在LINUX平台上,DHCP服务器、客户端和代理是实现网络动态配置的关键组件。 标题中的"dhcp-4.0.0.tar.gz"表明这是一个包含DHCP版本4.0.0源代码的归档文件,通常以tar.gz格式压缩,这是一种常见的Linux软件分发方式。...

    dhcp-4.2.5源码

    深入研究DHCP-4.2.5源码,你可以了解到DHCP协议的工作流程,如DHCP发现(DHCPDISCOVER)、提供(DHCPOFFER)、请求(DHCPREQUEST)和确认(DHCPACK)等阶段的实现。同时,还可以了解如何处理租约管理、地址冲突检测...

    Sams - DHCP Handbook - Second Edition

    - **DHCP故障转移协议**:为了提高系统的可用性和可靠性,第二版还介绍了如何通过DHCP故障转移协议来实现DHCP服务器的冗余操作。该协议使得两台或多台DHCP服务器可以在一台服务器发生故障时自动接管其职责,确保服务...

    DHCP源代码-4.2.8

    这个压缩包“DHCP源代码-4.2.8”包含了2015年8月时的最新DHCP服务器的源代码,为开发者和网络管理员提供了一个深入理解DHCP工作原理以及进行定制化开发的平台。 DHCP 4.2.8版本是ISC(Internet Systems Consortium...

    Linux系统下dhcp源码

    在Linux环境中,DHCP服务器通常使用isc-dhcp-server,其源码可以帮助我们深入了解协议的工作原理以及服务器如何管理网络设置。本文将探讨dhcp-3.1.1版本的源码,通过分析源码,我们可以学习到Linux网络编程、TCP/IP...

    eth_tcp_client_server-dhcp-5.2.tar.gz_dhcp server client

    本文将围绕标题“eth_tcp_client_server-dhcp-5.2.tar.gz_dhcp server client”展开,深入探讨DHCP服务器与客户端的工作原理及其在TCP/IP协议栈中的作用。 首先,我们来看TCP/IP协议栈。TCP/IP模型由四层组成:链路...

    DHCP协议 - RFC2131

    本文档概述了DHCP的工作原理、架构设计、消息格式以及安全考虑等重要内容。 #### 1.1 对RFC 1541的变更 相比于之前的版本RFC 1541,DHCP协议在RFC 2131中进行了多项改进和变更,包括但不限于: - **更精细的地址...

    dhcp-agent-0.41 源码

    本文将深入探讨dhcp-agent-0.41源码中的关键知识点,帮助你理解其工作原理和实现细节。 1. **源码结构** - 源码通常包含头文件、源文件、Makefile、配置文件等部分。在dhcp-agent-0.41中,头文件定义了接口和数据...

    dhcp-3.0.3.tar.gz_WLAN网络_dhcp source code 3_dhcp-3.0.3_dhcp源代码_w

    1. **dhclient**: 这是DHCP客户端的实现,负责发起请求并接收服务器的响应。 2. **dhcpd**: DHCP服务器的核心程序,处理来自客户端的请求并分配网络配置。 3. **dhcpd.conf**: 配置文件,定义了服务器如何分配IP地址...

    dhcp4java-1.00.src.zip_DHCP java_dhcp4ja_dhcp4java_dhcp4java-1.0

    这个名为“dhcp4java-1.00.src.zip”的压缩包包含了DHCP4Java项目的源代码,版本为1.00,允许开发者深入理解其工作原理并进行定制化开发。 DHCP4Java项目主要关注以下几点: 1. **DHCP协议实现**:DHCP4Java库实现...

    主机动态配置协议-DHCP原理及其实现

    主要讲述主机动态配置协议DHCP原理及其实现

    dhcp-2.0pl5.zip_dhcp linux c/c++_dhcp客户端_linux DHCP 获取_linux 获取I

    总结来说,"dhcp-2.0pl5.zip"是一个关于DHCP协议实现的宝贵资源,它可以帮助你深入理解DHCP的工作原理,学习C语言在网络编程中的应用,以及如何在Linux环境中动态获取和配置IP地址。无论是对网络管理员、软件开发者...

    三层交换机DHCP配置

    根据提供的文件信息,本文将详细解释Cisco三层交换机上的DHCP配置步骤与原理。通过具体的配置命令示例,深入理解如何在不同的VLAN之间分配IP地址,并为客户端提供自动化的IP地址分配服务。 ### 一、三层交换机基础...

    dhcp 原理及实验

    ### DHCP原理及实验 #### 一、DHCP的三种IP地址分配机制 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种简化网络配置管理的服务,主要用于自动化地为客户端分配IP地址及相关网络配置参数。...

    如何在三层交换机上实现跨VLAN 的DHCP配置

    通过上述步骤,我们可以在三层交换机上成功实现跨VLAN的DHCP配置。这不仅简化了网络管理,提高了网络的灵活性和可扩展性,还增强了网络的安全性和性能。对于复杂的企业级网络环境而言,这项技术是不可或缺的。希望...

    dhcp Java

    DHCP(Dynamic Host Configuration Protocol...通过这个过程,开发者不仅可以掌握DHCP协议的工作原理,还能提升在网络编程方面的技能。在实际项目中,结合使用现有的库和工具,可以更高效地完成DHCP服务的搭建和维护。

    dhcp源码 dhcp源码 ,很不错的源码

    综上所述,分析DHCP源码能帮助我们理解网络协议的实现原理,提高网络编程的能力,并为开发和调试网络应用提供宝贵的经验。对于想要深入学习网络协议和底层网络编程的开发者来说,DHCP源码无疑是一个很好的学习资源。

Global site tag (gtag.js) - Google Analytics