DHCP协议是动态主机配置协议。它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的自举协议。DHCP最重要的功能就是动态分配。DHCP采用客户端--服务器模式,请求配置信息的为客户端,提供信息的是服务器。
DHCP为客户分配地址的方法有3种:手工分配,自动分配和动态分配。
手工分配是通过网络管理员进行配置的。自动分配和动态分配的相同点都是通过DHCP SERVER分配IP地址。;两者的区别是:
自动分配没有租期,一旦分配,永久使用;动态分配有租期要求,同一地址可以在租期到了分配给其他设备。
流程:
1 发现阶段。 客户端初始化时,发出DHCPDISCOVER 的广播报文,请求获取IP地址及其它配置信息。包含字段:request paramater list 中包含想要获得的参数。其中四个IP地址字段都是0。
2 提供阶段 因为是广播报文,DHCP服务器都会收到,所有的DHCP服务器都会响应一个DHCPOFFER报文。将your IP address 字段填写为自己分配给客户端的IP地址。同时在选项字段中填写DHCP SERVER的IP地址。,以便client 区分不同的server 。(server id code=54 ,length=IP地址长度。value= server 的ip地址)
3 选择阶段 客户端会接收很多报文。原则上收到的第一个DHCPOFFER报文后,将进行处理。客户端发送DHCPREQUEST广播报文,在选项字段填写自己希望获得的IP地址,以及选中的DHCP SERVER的IP地址。
4 响应阶段 收到DHCPREQUEST报文的服务器,将把选项中的IP地址是否和自己相同比,不相同不做任何处理,如果发送过DHCPOFFER报文,清除响应的IP地址记录。如果选项字段中的IP地址和自己相同,就发送DHCPACK报文,信息和DHCPREQUEST基本一致,同时添加租期。
5 client 收到DHCPACK报文后,会检查DHCPSERVER分配的IP地址是否可以使用。在以太网中,可以发送免费的ARP请求,确定DHCPSERVER分配的IP地址是否被使用。如果可以使用,则DHCP 客户端成功获得IP地址,并根据IP地址使用租期自动启动延续程序。
6 如果client 发现IP地址已经被使用,则会发送DHCPDECLINE报文,通知DHCPSERVER禁止使用这个IP地址,以免引起冲突。同时重新寻找DHCPSERVER的过程,从第一步开始。
7 在租期的50%时间点,DHCPCLIENT发送单播的DHCPREQUEST报文,请求服务器续租。如果收到DHCPACK报文,client 续租成功,租期从新计时。如果失败,client继续使用这个地址。
在租期的87.5%的时间点,DHCPCLIENT发送广播的DHCPREQUEST报文,请求续租服务。如果收到DHCPACK报文,client 续租成功,租期从新计时。如果失败,client继续使用这个地址。
在租期到期后,客户端ip地址被服务器收回,客户端重新从第一步开始发现DHCP服务器。
8 在client 端成功获取IP地址后,可以随时发送DHCPRELEASE 报文释放IP地址,服务器端将会收回IP地址,以便重新分配。
DHCP重要字段的说明:
op操作字段 ---1--请求 2- 应答
Td---- 随机数,匹配请求和应答
flags---广播响应标识位 标志位,只用了第一位,第一位是1 表示只能接受广播,不能接受单播。
ciaddr --客户端IP地址
yiaddr server --给客户端分配的IP地址
chaddr ---client 端的实际硬件地址内容。
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) |
(图1 DHCP的报文格式)
每个字段的含义:
l OP:标识是请求还是响应,1为请求,2为响应;
Htype :硬件地址类型。表示链路地址
Hlen :硬件地址长度。
Hops :跳数。经过的DHCP relay 的数目。最大不能超过16 。
Transaction ID : 事务ID 。是个随机数,用于客户端和服务器之间匹配请求和相应消息。
seconds :用于计算经过的秒数。
Flags :广播报文标志。最左端一位是1表示只能接收广播报文。
Ciaddr :用户IP地址。
l Yiaddr:客户IP地址;
l Siaddr:用于bootstrap过程中的IP地址;
l Giaddr:转发代理(网关)IP地址;
l Chaddr:client的硬件地址;
l Sname:可选server的名称,以0x00结尾;
l File:启动文件名;
l Options:,厂商标识,可选的参数字段
dhcp报文类型(选项53)取值的含义:
类型为1:dhcpdiscover 此为client开始DHCP过程中的第一个请求报文
类型为2:dhcpoffer 此为server对dhcpdiscover报文的响应
类型为3:dhcprequest 此为client对dihcpoffer报文的响应
类型为4:dhcpdecline 此为当client发现server分配给它的IP地址无法使用,如IP地址发生冲突时, 将发出此报文让 server 禁止使用这次分配的 IP 地址。
类型为5:dhcpack 此为server对 dhcprequst报文的响应,client收到此报文后才真正获得了IP地 址和相关配置信息。
类型为6:dhcpnak 此为server对client的dhcprequst报文的拒绝响应,client收到此报文后,一般 会重新开始DHCP过程。
类型为 7 : dhcprelease 此报文是 client 主动释放 IP 地址,当 server 收到此报文后就可以收回 IP 地址 分配给其他的client.
类型为 8 : dhcpinform. 此为如果客户通过别的手段获得了网络地址,它可以使用 DHCPINFORM. 请求获 得其它配置参数,服务器接收到 DHCPINFORM. 包,并建立一个 DHCPACK 消息,在其中包括一些合适客 户的配置参数,只是不包括分配网络地址,检查现有的绑定,在信息中不填充'yiaddr'字段或租用时间参数。 服务器取得 DHCPINFORM. 包内的 'ciaddr' 地址,而返回 DHCPACK 包。
WEB认证方式
WEB认证需要与DHCPServer和Portal server配合使用,WEB认证的主要过程描述如下:
(1)用户登陆认证页面,在该页面中,用户输入帐号和口令,并单击"log in"按钮,也可不输入由帐号和口令,直接单击"Log in"按钮;
(2)由认证页面将用户信息(IP地址,帐号和口令)送给网络中心设备BAS;
(3)BAS利用IP地址得到用户的二层地址、物理端口号(如Vlan ID, ADSL PVC ID,PPP session ID),利用这些信息,对用户的合法性进行检查, 如果用户输入了帐号,则认为是卡号用户,使用用户输入的帐号和口令到Radius server对用户进行认证,
如果用户未输入帐号,则认为用户是固定用户,网络设备利用Vlan ID(或PVC ID)查用户表得到用户的帐号和口令,将帐号送到Radius server进行认证;
(4)Radius Server返回认证结果给BAS;
(5)认证通过后,BAS修改该用户的ACL,用户可以访问外部因特网或特定的网络服务;
(6)用户离开网络前,连接到portal server上,单击"断开网络"按钮,系统停止计费,删除用户的ACL和转发信息,限制用户不能访问外部网络;
(7)在以上过程中,要注意检测用户非正常离开网络的情况,如用户主机死机,网络断掉,直接关机等。