DHCP (TR069)

  • DHCP协议
  • 1.概述
  • 2.原理
  • 3.DHCP主要实现阶段
    • 第一阶段:
    • 第二阶段:
    • 第三阶段:
    • 第四阶段
    • 第五阶段
    • 第六阶段
  • 4. DHCP报文分析

DHCP协议

1.概述

协议
定义 DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,是一个用于局域网的网络协议,位于OSI模型的应用层,使用UDP协议工作,主要有两个用途:
作用 动态分配IP地址,过程自动化,终端无需一一手工配置,配置信息统一管理(DNS,网关),IP地址有限、需要大量配置IP地址、经常移动终端。
适用性 DHCP用一台或一组DHCP服务器来管理网络参数的分配,这种方案具有容错性。甚至对于那些很少改变地址的服务器来说,DHCP仍然被建议用来设置它们的地址。如果服务器需要被重新分配地址(RFC 2071)的时候,就尽可能不去做更改。对于一些设备,如路由器和防火墙,则不应使用DHCP。把TFTP或SSH服务器放在同一台运行DHCP的机器上也是有用的,目的是为了集中管理。
分配IP方式 (1)手工配置方式:通过网络管理员手工配置某台客户端特定的IP地址,当客户端请求分配时,DHCP服务器就将手动配置的IP地址分配给客户端。(2)自动配置方式:当DHCP客户端第一次想服务端租用到第一个IP地址后,就将这个IP地址永久分配给客户端使用。(3)动态配置方式:服务器暂时分配一个IP地址给客户端,根据租约到期或者续约租期的方式来管理分配的IP地址。

2.原理

动态主机设置协议 DHCP是一种使网络管理员能够集中管理和自动分配IP网络地址的通信协议。在IP网络中,每个连接Internet的设备都需要分配唯一的IP地址。DHCP使网络管理员能从中心结点监控和分配IP地址。当某台计算机移到网络中的其它位置时,能自动收到新的IP地址。

DHCP使用了租约的概念,或称为计算机IP地址的有效期。租用时间是不定的,主要取决于用户在某地连接Internet需要多久,这对于教育行业和其它用户频繁改变的环境是很实用的。透过较短的租期,DHCP能够在一个计算机比可用IP地址多的环境中动态地重新配置网络。DHCP支持为计算机分配静态地址,如需要永久性IP地址的Web服务器。

DHCP和另一个网络IP管理协议BOOTP类似。当前两种配置管理协议都得到了普遍使用,其中DHCP更为先进。某些操作系统,如Windows NT/2000,都带有DHCP服务器。DHCP或BOOTP客户端是装在计算机中的一个程序,这样就可以对其进行配置操作。

3.DHCP主要实现阶段

第一阶段:

发现阶段由Client 发送给 Server 端的 discover请求报文。
注:因为DHCP客户端在请求IP地址时并不知到DHCP服务器的位置,因此DHCP客户端会在本地网络中发送请求报文,来发现服务器。所有收到该请求报文的DHCP服务器都会发送应答报文,让Client知道服务端的地址。

第二阶段:

提供阶段:由Server提供IP地址,并发送一个offer报文给客户端。
注:由DHCP服务器收到的discover报文,作出回应。从尚未出租的ip地址中选择一个分配给DHCP客户端,并向客户端发送一个包含出租ip地址及其他设置额的offer提供信息。

第三阶段:

选择阶段:由Client选择来自多台服务器的IP地址,并以广播的形式发送一个request请求给服务端。
注:如果有多台DHCP服务器向客户端发送offer报文,客户端只接受第一个收到的DHCP offer。

第四阶段

确认阶段:由Server确认所提供的ip地址的阶段。
注:当服务器收到客户端的回答请求后,它便向客户端发送一个包含它提供的ip地址信息和其他设置的DHCP ACK确认信息,告诉客户端它所提供的ip地址。然后客户端便将其TCP/IP协议与其网卡相绑定,除了客户端所选择的服务器ip外,DHCP服务器都将收回曾经提供的IP地址。

第五阶段

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

第六阶段

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

DHCP 释放(RELEASE)

客户端向DHCP服务器发送一个请求来释放DHCP资源,并注销其ip地址。
鉴于客户端更多的时候并不清楚何时用户会将其从网络中移除,此协议不会托管“DHCP释放的发送”。

DHCP NAK
服务器回复客户,客户端要求的网址不能被分配。

4. DHCP报文分析

根据wireshark抓包 ( offer ) 可得:

  • Op:消息操作代码,2byte,既可以是引导请求(BOOTREQUEST)也可以是引导答复(BOOTREPLY),1为请求报文;2为响应报文。具体的报文类型在option字段中标识。
  • Htype:硬件地址类型,1byte,表示client硬件地址的类型,1表示以太网类型。
  • Hlen:硬件地址长度,1byte,以太网的硬件地址长度为6bytes。
  • Tid:处理ID,1byte,由client端产生的随机数,用于匹配请求和应答报文,就是匹配应答报文是对哪个请求报文做出应答。
  • Secs:从获取到IP地址或者续约过程开始到现在所消耗的时间,2bytes,客户端进入IP地址申请进程的时间或者更新IP地址进程的时间;由客户端软件根据情况设定。目前没有使用,固定为0。
  • Flags:标记,2bytes,16bit中只使用了最高位比特(即最左边的比特),这个个比特是广播响应标识位,用来标识DHCP服务器发出的响应报文是广播还是单播,0是单播,1是广播。其余的比特位保留不用,都为0.
  • Ciaddr:客户机IP地址,4bytes,可以是client自己的IP地址,也可以是server分配给client的IP地址。
  • Yiaddr:“你的”(客户机)IP地址,4bytes,是server分配给client的IP地址。
  • Siaddr:在bootstrap中使用的下一台服务器的IP地址,4bytes,是client端获取IP地址等信息的server端的地址。
  • Giaddr:用于导入的接替代理IP地址,4bytes,是client发出请求报文后经过的第一个中继的IP地址。
  • Chaddr:客户机硬件,16bytes,是client端的硬件地址,在client发出报文时会把自己网卡的硬件地址写进这个字段。
  • Sname:任意服务器主机名称,空终止符,64bytes,是client端获取IP地址等信息的服务器名称。
  • File:DHCP发现协议中的引导文件名、空终止符、属名或者空,DHCP供应协议中的受限目录路径名,
  • Options:可选参数字段。这个字段包含了终端的初始配置信息和网络配置信息,包括报文类型,有效租期,DNS服务器的IP地址等配置信息。

参考资料:https://blog.csdn.net/scanf_linux/article/details/89415965

关于CWMP基础(三)----(TR111)DHCP相关推荐

  1. [GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了Go的编译运行 ...

  2. C++学习基础三——迭代器基础

    C++学习基础三--迭代器基础 迭代器分为两种:一种是iterator,另一种是const_iterator. 两者都可进行访问容器中的元素,不同之处是: (1)const_iterator类型只能用 ...

  3. 【蓝鸥Unity开发基础三】课时14 刚体

    [蓝鸥Unity开发基础三]课时14 刚体 一.刚体 物理引擎: 物理引擎能够真实的模拟物理效果 Unity中使用的是NVIDIA的PhysX物理引擎 在Unity中使用Rigidbody让游戏对象受 ...

  4. 【蓝鸥Unity开发基础三】课时3 Terrain地形系统【未完】

    [蓝鸥Unity开发基础三]课时3  Terrain地形系统[未完] 推荐视频讲师博客:http://11165165.blog.51cto.com/ 一.Terrain地形系统 Terrain地形系 ...

  5. Django基础三之视图函数

    Django基础三之视图函数 一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML ...

  6. TCP/IP基础(三)

    文章目录 TCP/IP基础(三) -- IP协议相关技术 DNS 域名的构成 DNS查询 ARP ARP的工作机制 ICMP ICMP消息类型 NAT NAT定义 NAT的工作机制 NAT的潜在问题 ...

  7. GIS制图的基础三点

    GIS制图的基础三点 我先说说由于GIS制图几乎都是基于现有的数据进行制图,而不是重绘数据.所以地图的很多地方受制于数据.也就是常见的有数据烦没数据更烦的情况.正式因为这种独特的原因,往往会给人一种错 ...

  8. 微服务架构 基础(三)

    微服务架构 基础(三) 持续更新- 继续前面的基础二工程进行扩展 服务降级.服务熔断和服务限流 基本概念理解 服务雪崩 多个服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又 ...

  9. day 53-1 Django基础三之视图函数

    Django基础三之视图函数 本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Djang ...

  10. 【RabbitMQ】基础三:发布与订阅模式(Publish/Subscribe)

    [RabbitMQ]基础三:发布与订阅模式(Publish/Subscribe) 1. 订阅模式 2. 发布与订阅模式说明 3. 代码示例 3.1 生产者 3.2 消费者 3.3 测试 4. 总结 1 ...

最新文章

  1. FPGA之道(68)原语的使用
  2. FastReport.Net使用:[36]续表
  3. 剑指 offer set 26 不用加减乘除做加法
  4. C# 线程手册 第五章 扩展多线程应用程序 系列
  5. 大话西游之Office应用实例系列! 13
  6. [react] shouldComponentUpdate方法是做什么的
  7. 5G精华问答 | 5G的关键无线技术是啥?
  8. 运行shell脚本时怎么知道jdk路径_Shell写脚本关于ssh执行jar包,需要刷新JDK路径的问题...
  9. CSE 110: Principles of Programming Languages
  10. hibernate id生成策略 mysql_Hibernate中ID生成策略
  11. solr(六): 集群
  12. 如何参加GoToMeeting在线会议
  13. [2018.10.15 T3] 数列
  14. 二次与三次B样条曲线c++实现
  15. C++-从cpp文件到exe文件的过程
  16. 51单片机c语言数组怎么用,51单片机之C语言-4.2数组
  17. 4 esp_transport 用 racoon协商 用setkey设置 spd
  18. 电池BMS软件架构设计和电池安全标准及测试
  19. 金蝶设置盘盈盘亏单据权限
  20. Android原生OS风格ROM包,小米5S 的LineageOS14.1刷机包 安卓7.1.1原生风格 20180203更新...

热门文章

  1. ams1117 lm317 对比_三种典型的基于AMS1117稳压IC的5v转3.3v电路-电路图讲解-电子技术方案...
  2. win10缩放导致html,win10屏幕字体缩放模糊怎么办_win10缩放后字体模糊如何解决
  3. 植入式医疗电子设备供电电源原理与设计
  4. DOS各版本下载地址
  5. 阿里云CentOS服务器搭建静态网站(零基础)
  6. java vcf文件增量写入,用snpEFF对vcf格式的突变数据进行注释
  7. 一种抑制稳态振荡的改进型变步长MPPT 算法研究.pdf
  8. 1047: 对数表 C语言
  9. php cms 新闻采集,自动新闻采集软件快速入门图文详细教程
  10. Mars3D讲解视频