【简介】
动态主机设置协议 Dynamic Host Configuration Protocol,是一个局域网的网络协议,使用UDP协议工作
IPTV项目中,海外客户IPTV一般是专网,盒子需要发送DHCP option 60信息获取专网IP
【用途】
用于内部网或网络服务供应商自动分配IP地址,子网掩码,网关。给用户用于内部网管理员作为对所有计算机作中央管理的手段。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机(客户端主动)驱动。
当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。
【功能】
DHCP具有以下功能:
- 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
- DHCP应当可以给用户分配永久固定的IP地址。
- DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
- DHCP服务器应当向现有的BOOTP客户端提供服务。
【分配方式】
- 自动分配方式(Automatic Allocation)
DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。 - 动态分配方式(Dynamic Allocation)
DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。 - 手工分配方式(Manual Allocation)
客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。
DHCP有3个端口,其中67和68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的端口;
【DHCP租约】
① 租约自动状态机
DHCP获得ip地址的4步骤:discover>offer>request>ack(nak)
DHCP刷新租期的步骤:request>ack(nak)
DHCP释放ip的步骤:release
② 租约过程
(1) DHCP客户端以广播的形式发送Discover请求IP租用。
(2) DHCP服务器接收到Discover请求后,向客户端发出DHCP Offer报文回应,该报文中包含DHCP服务器可向DHCP客户端提供的IP地址以及DHCP服务器自己的IP地址信息。
(3) DHCP客户端会选择最先接收到的DHCP Offer进行处理,并以广播的形式发送DHCP Request报文,该报文加入对应DHCP服务器的地址以及所需要的IP
(4) DHCP服务器接收到DHCP Request报文后,会判断报文中的服务器IP是否与自己相同。如果不同,不做任何处理,只清除相应的IP分配记录;
如果相同,服务器会向客户端发送ACK报文,确认可以使用,并且附上响应的租期。
③ 租约表
静态租约表:对应一个静态租约存储文件,server运行时从文件中读取静态租约表。
动态租约表:对应一个周期存储文件,server周期性将租约表存进该文件,在程序开始时将会读取上次存放的租约表。(租约表记录了当前所有分配的租约,包括静态链接的)。
当收到客户端的首次请求时,DHCP服务器先查找静态租约表;若存在请求的表项,返回这个客户的静态IP地址;否则,从IP地址池中选择可用的IP分配给客户,并添加信息到动态数据库中。
服务器将会周期性的刷新租约表写入文件存档,在这个过程中会顺便对动态租约表进行租期检查。
DHCP客户端在成功获取IP地址后,在地址使用租期达到50%时,会向DHCP服务器发送单播Request请求报文请求续延租约,如果没有收到ACK报文,在租期达到87.5%时,会再次发送单播的Request请求报文以请求续延租约。
【协议报文】
① 报文类型
DHCP DISCOVER :客户端开始DHCP过程发送的包,是DHCP协议的开始
DHCP OFFER :服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息
DHCP REQUEST :客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。
DHCP ACK :服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。
DHCP NAK :DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。
DHCP RELEASE :一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址
DHCP INFORM :客户端发出的向服务器请求一些信息的报文
DHCP DECLINE : 当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。
② 报文格式
括号内为字节数
OP(1) Htype(1) Hlen(1) Hops(1)
Transaction ID(4)
Seconds(2) Flags(2)
Ciaddr(4)
Yiaddr(4)
Siaddr(4)
Giaddr(4)
Chaddr(16)
Sname(64)
File(128)
Options(variable)
OP :若是client送给server的封包,设为1,否则为2;
Htype :硬件类别,ethernet为1;
Hlen :硬件长度,ethernet为6;
Hops :若数据包需经过router传送,每站加1,若在同一网内,为0;
Transaction ID :随机生成的一段字符串,两个数据包拥有相同的xid说明他们属于同一次会话
Seconds :由用户指定的时间,指开始地址获取或更新进行后的时间;
Flags:从0-15bits,最左一bit为1时表示server将以广播方式传送封包给client,其余尚未使用;
Ciaddr :客户端会在发送请求时将自己的ip地址放在此处
Yiaddr :服务器会将想要分配给客户端的ip地址放在此处
Siaddr :一般来说是服务器的ip地址,siaddr有可能是多次路由跳转中的某一个路由的ip
Giaddr :如果需要跨子网进行DHCP地址发放,则在此处填入经过的路由器的ip地址,即转发代理(网关)IP地址
Chaddr :客户端的mac地址
Sname :服务器主域名,以0x00结尾
File :DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。仅在DHCP Offer报文中显示,其他报文中显示为空
Options :厂商标识,可选的参数字段,长度可变,格式为"代码+长度+数据"。用于存放客户端向服务器请求信息和服务器的应答信息
③ DHCP服务器回复
DHCP OFFER:
静态租用:首先匹配MAC地址,看是否能在静态租约表中找到对应的项,若能找到就把IP分配给他。静态表中的IP不能被其他客户使用。
动态租用:
1.server试图分配给client上次分配过的IP,在这之前检查这个IP是否正在使用。
2.discover中含有request ip 时,检查该IP是否在地址池范围,是否正在使用,是否到期,是否是静态IP,网络上是否已经存在。
3.discover不含request ip,从地址池上寻找一个最小的可用IP分配。
DHCP ACK: 根据是否含有request ip和server ip识别客户端现在init_reboot,selecting,renewing/rebinding中的哪个状态,并根据以下规则执行DHCPACK回复:
1.若client处于selecting状态,验证request ip和server ip是否同服务器中的匹配。
2.若client处于init_reboot状态,验证request ip是否符合租约记录。
3.若client处于renewing/rebinding状态,验证client ip address是否符合租约记录。
DHCO NAK:
1.请求的IP是静态IP,但是MAC地址无法与其对应。
2.上面DHCP ACK中验证失败。
服务器还可能会收到其他包:
DHCPDECLINE:server会把租约表中相关client硬件地址置空,并保存这个地址一段时间。
DHCPRELEASE:清空租期回收IP。
DHCPINFORM:回复DHCPACK,数据包含有关于server的信息。
【Options】
RFC 1533, RFC 2132
http://www.networksorcery.com/enp/protocol/bootp/options.htm
43 Vendor Specific N Vendor Specific Information [RFC2132]
60 Class Id N Class Identifier [RFC2132]
① option 60
携带client自身厂商以及配置信息,用来划分不同的域,DHCP server根据 option 60 的内容可以分给client不同域的IP地址。
server不能解析的类标识符的应该被忽略(这样可以防止非法客户端获取合法ip)。
DHCP Server 也可以关闭 option60 检查选项,如果关闭该选项,则无论option60是否匹配,DHCP Server都会响应Client的请求。
DHCP Server回复DHCP Offer报文时附带option43属性来下发client的IP地址或域名。DHCP Server在回复Client请求时,不附带option60属性
DHCP relay:DHCP中继(也叫做DHCP中继代理)是一个小程序,其可以实现在不同子网和物理网段之间处理和转发dhcp信息的功能。
案例1:
当只有一根线入户时,该如何解决CATV(电视业务)和宽带业务的共存呢?这时就要考虑用到DHCP Option60了,那么DHCP Option60到底是如何来实现业务区分的呢?
针对与机顶盒来说具体的实现应该是这样的:
- 用户终端(机顶盒)填好的一个域(class identifier),主要用于机顶盒标识自身的设备类型或配置,根据不同的终端类型来选择接口下的网关
- DHCP relay设备根据DHCP报文内的option 60域的内容判断其属于哪个DHCP域,并将相关网关地址填入 Giaddr,然后进行3层转发。
- 不具备option 60的DHCP server将忽略该选项
目前在实际的建网过程中,大多数都采用三层交换机来充当DHCP Server,这中间会涉及到DHCP Relay功能,在三层交换机上配置vlan接口,创建两个地址池,一个给宽带用户,一个给CATV,
但是这两个业务是在同一个vlan中(只有一根线入户),如何来区分呢?需要给该vlan接口配置两个ip地址(网关),然后给这个接口指定两个Server(不同的DNS),
一个给宽带用户分配上网地址,一个给机顶盒分配点播互动地址,并且开启DHCP Relay(不开启不能获取地址),当用户用PC上网时,获取的将是宽带业务的地址,当进行CATV互动点播时,获取到的是CATV的地址,
这样就解决了一根线入户,区别业务的目的。
② option 43
DHCP的option 43选项是告诉AP,AC的IP地址,让AP寻找AC进行注册。
AP通过DHCP服务器获取地址后,无法通过广播方式发现AC,此时需要在DHCP服务器上配置option 43字段,在字段内填入AC的IP地址用于通告AP,使AP能够发现AC。
配置option 43字段后,AP只会对option 43通告的AC IP地址发送单播Discovery Request报文。只有option 43通告的IP地址都没有回应AP时,才会发送广播报文请求同网段AC的IP地址,
所以配置option 43字段需要通告AP其所属主AC和备AC的IP地址,不需要通告其它主AC的IP地址,否则无法保证AP接入到正确的AC。
【其他】
WLAN系统一般由AC(接入控制器)和AP(无线接入点)组成。AC和AP不在同一网段的时候需要配置option43
AP:为Access Point简称,一般翻译为“无线访问节点”,它是用于无线网络的无线交换机,也是无线网络的核心。无线AP是移动计算机用户进入有线网络的接入点,
主要用于宽带家庭、大楼内部以及园区内部,典型距离覆盖几十米至上百米,目前主要技术为802.11系列。
① 瘦AP(FIT AP):
也称无线网桥、无线网关,也就是所谓的“瘦”AP。
通俗理解瘦AP:本身并不能进行配置,需要一台专门的设备(无线控制器)进行集中控制管理配置。
“控制器+瘦AP+路由器架构”一般用于无线网覆盖,因为在AP数量众多的时候,只通过控制器来管理配置,会简化很大的工作量;
② 胖AP(FATAP)
也有人称之为无线路由器。无线路由器与纯AP不同,除无线接入功能外,一般具备WAN、LAN两个接口,支持地址转换(NAT)功能,多支持DHCP服务器、DNS和MAC地址克隆,以及VPN接入、防火墙等安全功能。
AC:它是指无线接入控制服务器(AC),接入控制器(AC)。
无线局域网接入控制设备,负责把来自不同AP的数据进行汇聚并接入Internet,同时完成AP设备的配置管理、无线用户的认证、管理及宽带访问、安全等控制功能。