DHCP协议(IPTV项目获取专网IP)

【简介】
动态主机设置协议 Dynamic Host Configuration Protocol,是一个局域网的网络协议,使用UDP协议工作
IPTV项目中,海外客户IPTV一般是专网,盒子需要发送DHCP option 60信息获取专网IP

【用途】
用于内部网或网络服务供应商自动分配IP地址,子网掩码,网关。给用户用于内部网管理员作为对所有计算机作中央管理的手段。

DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机(客户端主动)驱动。
当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。

【功能】
DHCP具有以下功能:

  1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
  2. DHCP应当可以给用户分配永久固定的IP地址。
  3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
  4. DHCP服务器应当向现有的BOOTP客户端提供服务。

【分配方式】

  1. 自动分配方式(Automatic Allocation)
    DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
  2. 动态分配方式(Dynamic Allocation)
    DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
  3. 手工分配方式(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到底是如何来实现业务区分的呢?

针对与机顶盒来说具体的实现应该是这样的:

  1. 用户终端(机顶盒)填好的一个域(class identifier),主要用于机顶盒标识自身的设备类型或配置,根据不同的终端类型来选择接口下的网关
  2. DHCP relay设备根据DHCP报文内的option 60域的内容判断其属于哪个DHCP域,并将相关网关地址填入 Giaddr,然后进行3层转发。
  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设备的配置管理、无线用户的认证、管理及宽带访问、安全等控制功能。

dhcp_工作过程.jpg
dhcp_工作流程.png
dhcp_交互抓包.png
dhcp_协议报文格式.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • DHCP协议采用UDP作为传输协议,有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHC...
    Yvanna_15阅读 2,321评论 0 2
  • DHCP协议原理 DHCP动态主机配置协议TCP/IP协议想要运行正常的话,网络中的主机和路由器不可避免地需要配置...
    InnocenceYWQ阅读 1,714评论 0 5
  • 0×1.DHCP工作过程DHCP工作流程如下: DHCP客户端(PC1)被配置成自动获取IP,R1上面配置了DHC...
    Zero___阅读 876评论 0 2
  • 前面介绍了IPv4地址和IPv6地址,但是一个主机是如何获取IP地址的呢?本文就介绍一个中动态获取IP地址的协议—...
    HRADPX阅读 1,678评论 0 6
  • 不知道看官大人是否有过这样的疑惑?一台计算机,插上网线是不是就可以直接上网了呢?其实没有这么简单,需要配置本机IP...
    采风JS阅读 4,638评论 2 56