发明内容
有鉴于此,本发明的目的在于提供一种动态分配IP地址的方法和系统,不需要事先在DHCP客户端中设置信任的DHCP服务器,即可实现DHCP客户端与DHCP服务器之间的双识别,保证在多DHCP服务器环境中动态分配IP的正确性和有效性,且便于管理。
为达到上述目的,本发明的技术方案具体是这样实现的:
本发明提供一种动态分配IP地址的方法,包括:
DHCP客户端向网络中的DHCP服务器发送DHCP DISCOVER报文,所述DHCP DISCOVER报文携带DHCP客户端标识;
DHCP服务器根据所述DHCP DISCOVER报文解析出所述DHCP客户端标识,判断所述DHCP客户端标识是否属于所述DHCP服务器管理的范围,若是,则从尚未分配的IP地址中分配一个IP地址给所述DHCP客户端,发送包含IP地址和DHCP服务器标识的DHCP OFFER报文;
所述DHCP客户端根据所述DHCP OFFER报文中包含的DHCP服务器标识,选择一个DHCP服务器作为IP提供者,并广播发送DHCP REQUEST报文,所述DHCP REQUEST报文包括被选择的DHCP服务器提供的IP地址。
进一步,所述DHCP客户端标识封装在所述DHCP DISCOVER报文的OPTION字段中,所述DHCP服务器标识封装在所述DHCP OFFER报文的OPTION字段中。
进一步,所述DHCP服务器根据所述DHCP DISCOVER报文后解析出所述DHCP客户端标识,判断所述DHCP客户端标识是否属于所述DHCP服务器管理的范围后还包括:
若所述DHCP客户端标识不属于所述DHCP服务器管理的范围,则所述DHCP服务器丢弃所述DHCP DISCOVER报文。
进一步,所述DHCP客户端发送DHCP REQUEST报文后还包括:
DHCP服务器接收并解析出所述DHCP REQUEST报文中的IP地址,判断所述IP地址是否是自己提供的IP地址,若是,则发送DHCP ACK报文,否则收回提供给所述DHCP客户端的IP地址。
进一步,所述判断所述IP地址是否是自己提供的IP地址,若是,则发送DHCP ACK报文后还包括:
所述DHCP客户端将被选择的DHCP服务器提供的IP地址与网卡进行绑定。
本发明还提供一种动态分配IP地址的系统,包括:
DHCP客户端,包括:
IP请求模块,用于向网络中的DHCP服务器发送DHCP DISCOVER报文,所述DHCP DISCOVER报文携带DHCP客户端标识;
IP过滤模块,用于根据所述DHCP OFFER报文中包含的DHCP服务器标识,选择一个DHCP服务器作为IP提供者,并广播发送DHCP REQUEST报文,所述DHCP REQUEST报文包括被选择的DHCP服务器提供的IP地址;
DHCP服务器,包括:
消息处理模块,用来根据所述DHCP DISCOVER报文解析出所述DHCP客户端标识,当所述DHCP客户端标识属于所述DHCP服务器管理的范围时,发送包含IP地址和DHCP服务器标识的DHCP OFFER报文;
第一判断模块,用于判断所述DHCP客户端标识是否属于所述DHCP服务器管理的范围;
IP分配模块,用于当第一判断模块判断为是时,从尚未分配的IP地址中分配一个IP地址给所述DHCP客户端。
进一步,所述DHCP客户端标识封装在所述DHCP DISCOVER报文的OPTION字段中,所述DHCP服务器标识封装在所述DHCP OFFER报文的OPTION字段中。
进一步,所述DHCP服务器还包括:
丢弃模块,用于当第一判断模块判断为否时,丢弃所述DHCP DISCOVER报文。
进一步,所述DHCP服务器还包括第二判断模块和IP回收模块:
所述消息处理模块,还用于接收并解析出所述DHCP REQUEST报文中的IP地址,当第二判断模块判断为是时,发送DHCP ACK报文;
第二判断模块,用于判断所述DHCP REQUEST报文中的IP地址是否是自己提供的IP地址;
IP回收模块,用于当第二判断模块判断为否时,收回提供给所述DHCP客户端的IP地址。
进一步,所述DHCP客户端还包括IP绑定模块,
所述IP绑定模块,用于将被选择的DHCP服务器提供的IP地址与网卡进行绑定。
由上述的技术方案可见,通过在DHCP DISCOVER报文中携带DHCP客户端标识以及在DHCP OFFER报文中携带DHCP服务器标识,通过广播方式即可实现DHCP客户端与DHCP服务器的相互识别,DHCP客户端可以根据DHCP服务器标识选择为其提供IP的DHCP服务器,DHCP服务器也可以根据DHCP客户端标识选择属于其管理范围的DHCP客户端提供IP。DHCP客户端对于非信任的DHCP服务器提供的IP地址不会采用,保证在多DHCP服务器环境中动态分配IP的正确性和有效性。此外,当为某个DHCP客户端提供IP的DHCP服务器发生变化时,不需要对DHCP客户端重新设置,只需要对新的DHCP服务器进行配置即可实现通信,便于管理。
具体实施方式
为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
如图1所示为本发明提供的一种动态分配IP的方法的第一实施例流程图,包括:
步骤S101,DHCP客户端向网络中的DHCP服务器发送DHCP DISCOVER报文,所述DHCP DISCOVER报文携带DHCP客户端标识。
具体的,DHCP客户端可以是电脑、手机、机顶盒等家庭终端,也可以是大型服务器系统中的网元设备。由于DHCP服务器的IP地址相对于DHCP客户端来说是未知的,因此,DHCP客户端通过广播方式向网络中的DHCP服务器发送DHCP DISCOVER报文来寻找DHCP服务器,即向地址255.255.255.255发送广播消息。其中,DHCP DISCOVER报文携带有DHCP客户端标识,该DHCP客户端标识封装在DHCP DISCOVER报文的OPTION字段中。
如下表一所示为DHCP报文的格式:
表一
其中,OP:报文类型,1表示请求报文,2表示回应报文;
Htype:硬件地址类型, 1表示以太网的硬件地址;
Hlen:硬件地址长度,以太网中该值为6;
Hops:若数据包需经过路由器传送,每站加1,若在同一网内,为0;
Transaction ID:事务ID,由客户端选择的一个随机数,用于客户端和服务器之间匹配请求和应答消息;
Seconds:由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用的秒数;
Flags:标志字段。这个16比特的字段,目前只有最左边的一个比特有用,该位为0,表示单播,为1,表示广播;
Ciaddr:用户IP地址;
Yiaddr:客户IP地址;
Siaddr:用于bootstrap过程中的IP地址;
Giaddr:转发代理(网关)IP地址;
Chaddr:客户端的硬件地址;
Sname:可选服务器的名称,以0x00结尾;
File:启动文件名;
Options:可选的参数字段,包含报文的类型、有效租期等信息。
参考表一,本方案中DHCP DISCOVER报文的一种可选实施例为:OP = 1;Transaction ID = 35(假设事务ID为35); Ciaddr = 0;Yiaddr = 0;Siaddr = 0;定义Options的151字段为DHCP客户端标识。
步骤S102,DHCP服务器根据所述DHCP DISCOVER报文解析出所述DHCP客户端标识,判断所述DHCP客户端标识是否属于所述DHCP服务器管理的范围,若是,则从尚未分配的IP地址中分配一个IP地址给所述DHCP客户端,发送包含IP地址和DHCP服务器标识的DHCP OFFER报文。
具体的,网络中一般会存在多个DHCP服务器,有的DHCP服务器不对DHCP DISCOVER报文的OPTION字段作解析,当这些DHCP服务器接收到DHCP DISCOVER报文时,会直接从尚未分配的IP地址中分配一个IP地址,广播发送一个包含IP地址的DHCP OFFER报文。对于DHCP DISCOVER报文的OPTION字段进行解析的DHCP服务器,当解析出DHCP客户端标识后,判断该DHCP客户端标识是否属于自己管理的范围,若是,则从尚未分配的IP地址中分配一个IP地址给所述DHCP客户端,发送包含IP地址和DHCP服务器标识的DHCP OFFER报文;否则,丢弃所述DHCP DISCOVER报文。该DHCP服务器标识封装在DHCP OFFER报文的OPTION字段中。
本方案中DHCP OFFER报文的一种可选实施例为:OP = 2;Transaction ID = 35(与DHCP DISCOVER报文相同); Ciaddr = 0;Yiaddr = 0;Siaddr = 10.10.192.168(假设服务器向客户机提供的IP地址为10.10.192.168),定义Options的60字段作为DHCP 服务器标识。
步骤S103,DHCP客户端根据所述DHCP OFFER报文中包含的DHCP服务器标识,选择一个DHCP服务器作为IP提供者,并广播发送DHCP REQUEST报文,所述DHCP REQUEST报文包括被选择的DHCP服务器提供的IP地址。
具体的,DHCP客户端接收到网络中各种DHCP服务器发送的DHCP OFFER报文,对其进行解析,若DHCP OFFER报文的OPTION字段中不包括DHCP服务器标识或者DHCP服务器标识不符合DHCP客户端设置时,则丢弃该DHCP OFFER报文,否则,选择一个DHCP服务器作为IP提供者,并以广播方式回答一个DHCP REQUEST报文,所述DHCP REQUEST报文包括被选择的DHCP服务器提供的IP地址。此处采用广播方式回答,是为了通知所有的DHCP服务器,DHCP客户端将选择哪一个DHCP服务器提供的IP地址。
本方案中DHCP REQUEST报文的一种可选实施例为:OP = 1;Transaction ID = 35(与DHCP OFFER报文相同); Ciaddr = 0;Yiaddr = 10.10.192.168;Siaddr =0,定义Options的60字段为DHCP客户端选择的DHCP 服务器标识。
实施上述实施例,通过在DHCP DISCOVER报文中携带DHCP客户端标识以及在DHCP OFFER报文中携带DHCP服务器标识,通过广播方式即可实现DHCP客户端与DHCP服务器的相互识别,DHCP客户端可以根据DHCP服务器标识选择为其提供IP的DHCP服务器,DHCP服务器也可以根据DHCP客户端标识选择属于其管理范围的DHCP客户端提供IP。DHCP客户端对于非信任的DHCP服务器提供的IP地址不会采用,保证在多DHCP服务器环境中动态分配IP的正确性和有效性。此外,当为某个DHCP客户端提供IP的DHCP服务器发生变化时,不需要对DHCP客户端重新设置,只需要对新的DHCP服务器进行配置即可实现通信,便于管理。
如图2所示为本发明提供的一种动态分配IP的方法的第二实施例流程图,
步骤S101至步骤S103与图1中第一实施例相同,在此不再赘述,在步骤S103之后还包括:
步骤S201,DHCP服务器接收并解析出所述DHCP REQUEST报文中的IP地址,判断所述IP地址是否是自己提供的IP地址,若是,则发送DHCP ACK报文,否则收回提供给所述DHCP客户端的IP地址。
由于在步骤S103中,DHCP客户端采用广播方式发送DHCP REQUEST报文,因此,网络中所有的DHCP服务器均能接收到该DHCP REQUEST报文。具体的,DHCP服务器端在提供IP地址时会保存Transaction ID与提供的IP地址的对应关系,当DHCP服务器接收到DHCP客户端的DHCP REQUEST报文时,将报文中的Transaction ID、IP地址解析出来与自身保存的Transaction ID、IP地址比较,若不同,则该DHCP客户端选择的不是自己提供的IP地址,则收回,否则,发送DHCP ACK报文通知DHCP客户端可以使用其提供的IP地址。
步骤S202,DHCP客户端将被选择的DHCP服务器提供的IP地址与网卡进行绑定。
DHCP客户端收到被选择的DHCP服务器发送的DHCP ACK报文后,将其提供的IP地址与网卡进行绑定。
实施上述实施例,通过在DHCP DISCOVER报文中携带DHCP客户端标识以及在DHCP OFFER报文中携带DHCP服务器标识,通过广播方式即可实现DHCP客户端与DHCP服务器的相互识别,DHCP客户端可以根据DHCP服务器标识选择为其提供IP的DHCP服务器,DHCP服务器也可以根据DHCP客户端标识选择属于其管理范围的DHCP客户端提供IP。DHCP客户端对于非信任的DHCP服务器提供的IP地址不会采用,保证在多DHCP服务器环境中动态分配IP的正确性和有效性。此外,当为某个DHCP客户端提供IP的DHCP服务器发生变化时,不需要对DHCP客户端重新设置,只需要对新的DHCP服务器进行配置即可实现通信,便于管理。
如图3所示为本发明提供的一种动态分配IP的系统的第一实施例结构图,包括:
DHCP客户端,包括:
IP请求模块10,用于向网络中的DHCP服务器发送DHCP DISCOVER报文,所述DHCP DISCOVER报文携带DHCP客户端标识;
IP过滤模块11,用于根据所述DHCP OFFER报文中包含的DHCP服务器标识,选择一个DHCP服务器作为IP提供者,并广播发送DHCP REQUEST报文,所述DHCP REQUEST报文包括被选择的DHCP服务器提供的IP地址;
DHCP服务器,包括:
消息处理模块20,用来根据所述DHCP DISCOVER报文解析出所述DHCP客户端标识,当所述DHCP客户端标识属于所述DHCP服务器管理的范围时,发送包含IP地址和DHCP服务器标识的DHCP OFFER报文;
第一判断模块21,用于判断所述DHCP客户端标识是否属于所述DHCP服务器管理的范围;
IP分配模块22,用于当第一判断模块21判断为是时,从尚未分配的IP地址中分配一个IP地址给所述DHCP客户端。
具体的,所述DHCP客户端标识封装在所述DHCP DISCOVER报文的OPTION字段中,所述DHCP服务器标识封装在所述DHCP OFFER报文的OPTION字段中。
实施上述实施例,通过在DHCP DISCOVER报文中携带DHCP客户端标识以及在DHCP OFFER报文中携带DHCP服务器标识,通过广播方式即可实现DHCP客户端与DHCP服务器的相互识别,DHCP客户端可以根据DHCP服务器标识选择为其提供IP的DHCP服务器,DHCP服务器也可以根据DHCP客户端标识选择属于其管理范围的DHCP客户端提供IP。DHCP客户端对于非信任的DHCP服务器提供的IP地址不会采用,保证在多DHCP服务器环境中动态分配IP的正确性和有效性。此外,当为某个DHCP客户端提供IP的DHCP服务器发生变化时,不需要对DHCP客户端重新设置,只需要对新的DHCP服务器进行配置即可实现通信,便于管理。
如图4所示为本发明提供的一种动态分配IP的系统的第二实施例结构图,包括:
DHCP客户端,包括:
IP请求模块10,用于向网络中的DHCP服务器发送DHCP DISCOVER报文,所述DHCP DISCOVER报文携带DHCP客户端标识;
IP过滤模块11,用于根据所述DHCP OFFER报文中包含的DHCP服务器标识,选择一个DHCP服务器作为IP提供者,并广播发送DHCP REQUEST报文,所述DHCP REQUEST报文包括被选择的DHCP服务器提供的IP地址;
IP绑定模块12,用于将被选择的DHCP服务器提供的IP地址与网卡进行绑定。
DHCP服务器,包括:
消息处理模块20,用来根据所述DHCP DISCOVER报文解析出所述DHCP客户端标识,当所述DHCP客户端标识属于所述DHCP服务器管理的范围时,发送包含IP地址和DHCP服务器标识的DHCP OFFER报文,接收并解析出所述DHCP REQUEST报文中的IP地址,当第二判断模块判断为是时,发送DHCP ACK报文;
第一判断模块21,用于判断所述DHCP客户端标识是否属于所述DHCP服务器管理的范围;
IP分配模块22,用于当第一判断模块21判断为是时,从尚未分配的IP地址中分配一个IP地址给所述DHCP客户端;
丢弃模块24,用于当第一判断模块21判断为否时,丢弃所述DHCP DISCOVER报文;
第二判断模块23,用于判断所述DHCP REQUEST报文中的IP地址是否是自己提供的IP地址;
IP回收模块25,用于当第二判断模块23判断为否时,收回提供给所述DHCP客户端的IP地址。
具体的,所述DHCP客户端标识封装在所述DHCP DISCOVER报文的OPTION字段中,所述DHCP服务器标识封装在所述DHCP OFFER报文的OPTION字段中。
实施上述实施例,通过在DHCP DISCOVER报文中携带DHCP客户端标识以及在DHCP OFFER报文中携带DHCP服务器标识,通过广播方式即可实现DHCP客户端与DHCP服务器的相互识别,DHCP客户端可以根据DHCP服务器标识选择为其提供IP的DHCP服务器,DHCP服务器也可以根据DHCP客户端标识选择属于其管理范围的DHCP客户端提供IP。DHCP客户端对于非信任的DHCP服务器提供的IP地址不会采用,保证在多DHCP服务器环境中动态分配IP的正确性和有效性。此外,当为某个DHCP客户端提供IP的DHCP服务器发生变化时,不需要对DHCP客户端重新设置,只需要对新的DHCP服务器进行配置即可实现通信,便于管理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。