一 DHCP工作原理
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口。类似于DHCP这种初始化过程可以让用户在不了解有关地址、路由、掩码,即可自动设置其网络,连接到英特网上。
原理理解(通过dhcp的几个状态来分析)
1 第一阶段 搜索DHCP服务器 广播
如果客户端想要得到DHCP服务器的信息,而我们知道一般客户端不一定知道网络中DHCP服务器的地址,通过广播,源地址0.0.0.0目的地址255.255.255.255,可以和DHCP服务器建立第一次联系。
由上面介绍,我们知道DHCP使用udp来发送报文,报文很有可能会出现延迟或者破坏等,这时候为了实现一定程度的可靠性,DHCP使用超时和重传技术。一旦用户发送请求,则启动计时器,计时器到时,用户必须重传。
所以DHCP报文的格式可以参考一下
字段
OP:option,表示请求还是响应
HTYPE:hardware type,网络硬件类型
HLEN:硬件地址长度 如以太网类型为1 ,长度为6
HOPS:跳数,经过的路由器数量
TRANSACTION(交易,办理) ID:处理请求和响应过程的号码
SECONDS:表示客户端发送逝去的秒数
CLIENT IP ADDRESS:表示用户的ip地址,用户如果知道需要的DHCP服务器的信息可以填写,那么会按照用户的情况继续,否则不写
YOUR IP ADDRESS:你的ip地址,当用户ip地址为0时,服务器会在该字段返回一个客户的ip地址
SERVER IP ADDRESS:服务器IP地址
SERVER HOST NAME:服务器主机名
FLAGS:允许控制请求和响应,目前只有最高位有用,当B时,表示broadcast,其他位为0
2 第二阶段 服务器响应,提供客户端租约信息以供选择 单播 通过mac可定位
关于租用(lease)
首先DHCP服务器管理一个ip地址池,当有用户申请时,服务器首先,从日志文件中查找是否用户曾经用过某ip,有则分配,否则自动分配一个每人使用的;如果配置文件针对该MAC地址设置了固定的ip,则提供该ip;否则,从池内选择一个未使用的ip给客户端并记录。
至于租期,由于不同场合,比如大学,公司,普通用户,他们的租期一般不同,为了更有效地使用ip地址,DHCP允许用户申请租期,默认情况下,允许无限(infinity)租期,分配一个永久地址。
关于中继代理(relay agent)
中继代理是为了应对这样一种情况,网络中的多端口计算机,处于多个网络之中,而我们的DHCP服务器通常只有一个,为了实现只能一个ip对应一个主机的突破,由中继代理(通常是路由器)暂时代理DHCP,接收客户端广播申请,代理会把申请转发给服务器,,然后返回服务器对客户端的响应。DHCP通过客户标识符(client identifier),可识别特定接口的值,以区分同一个客户发送的不同请求。
3第三阶段 客户端决定使用的DHCP租约并向服务器发送确认 广播
由于有多DHCP服务器的可能,一般用户会选择第一个DHCP响应使用,同时告诉其他主机告知他们可收回租约。
4 第四阶段 服务器端记录客户的租约信息,并最后发送响应告知客户端可以使用
此时租约就开始计时
二 适合 DHCP的环境
移动设备多,或者其他计算机相当多,不方便单独配置的情况
DHCP局域网服务器(一)(部分参考私房菜,用TCP/IP进行网际互联)
原文地址:http://qixue.blog.51cto.com/7213178/1652964