扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
1 采用DHCP的必要性
在TCP/IP网络上,每台工作站要能存取网络上的资源之前,都必须进行基本的网络配置,一些主要参数诸如IP地址,子网掩码,缺省网关,DNS等必不可少,还可能需要一些附加的信息如IP管理策略之类。对于一个稍微大点的网络而言,网络的管理和维护的任务是相当繁重的。一台计算机从一个子网转移到另一个子网,就要重新对系统进行配置。对于普通水平的工作站用户是不能赋予他们配置自己的工作站网络的权限,而且也没有这个必要。如果一个没有相应技术水平的用户出于好奇或想学习一下的目的错误地更改了工作站的网络配置,造成网络故障,后果不言而喻。因此,需要有一种机制来让TCP/IP的配置和管理从用户端转移到网络管理端,实现IP的集中式管理。解决方案就是用DHCP。
2 DHCP的主要功能
DHCP的全称是动态主机配置协议(Dynamic Host Configuration Protocol),由IETF(Internet 网络工程师任务小组)设计,详尽的协议内容在RFC文档rfc2131和rfc1541里。目的就是为了减轻TCP/IP网络的规划、管理和维护的负担,解决IP地址空间缺乏问题。运行DHCP的服务器把TCP/IP网络设置集中起来,动态处理工作站IP地址的配置,用DHCP租约和预置的IP地址相联系,DHCP租约提供了自动在TCP/IP网络上安全地分配和租用IP地址的机制,实现IP地址的集中式管理,基本上不需要网络管理人员的人为干预。而且,DHCP本身被设计成BOOTP(自举协议)的扩展,支持需要网络配置信息的无盘工作站,对需要固定IP的系统也提供了相应支持。
DHCP的工作原理
几个DHCP名词
在介绍DHCP工作原理以前,先解释这几个名词的含义:
DHCP客户:DHCP客户是一通过DHCP来获得网络配置参数的Internet主机,通常就是普通用户的工作站。
DHCP服务器:DHCP服务器是提供网络设置参数给DHCP客户的Internet主机。
DHCP/BOOTP 中继代理:在DHCP客户和服务器之间转发 DHCP 消息的主机或路由器。
DHCP是基于客户机/服务器模型设计的,DHCP客户和DHCP服务器之间通过收发DHCP消息进行通讯。
DHCP 消息的格式:
DHCP 消息的格式与BOOTP消息大部分相同, 这样设计可以增强BOOTP服务器工具,同时为BOOTP和DHCP两种客户服务。另外,BOOTP的中继代理可用来转发跨子网的DHCP请求。
各段描述如下
括号里的数字代表这个段以8位组为单位的大小,除options外,其余的段的长度都是固定的,options段的长度至少是312个8位组。
如op(1)代表这个段的长度为一个8位组
op 是消息操作代码,值为1 代表BOOTREQUEST(自举请求)值为2 代表BOOTREPLY(自举响应)
在DHCP客户和DHCP服务器对话期间,op段被DHCP客户设置为BOOTREQUEST(1), 被DHCP服务器设置为 BOOTREPLY(2)。
htype 是硬件地址类型
hlen 是硬件地址长度
hops DHCP客户置这项为零,中继代理要用
xid DHCP客户在寻求时产生的一个随机数, 它提供了对所有后续的DHCP消息中的客户请求和服务器响应的一种联合。
ciaddr 客户机用来请求一个特定的IP地址, 这个地址以前曾经分配给该客户机,希望保留。
yiaddr 由DHCP服务器填写,包含它提供给某一DHCP客户的IP地址。
siaddr 服务器的主机地址
giaddr 中继代理的IP地址
chaddr DHCP客户硬件地址
sname 服务器主机名
file 启动文件名
options 选项
在获得IP地址前,DHCP客户用 htype, hlen 和 chaddr 段表明它的硬件地址, 这个值由向客户硬件地址作出响应的服务器和中继代理利用。 以前BOOTP协议中的两个没有用到的8位组的flags段在DHCP消息里有了定义。这个段的高位比特用于表明客户机能不能在IP地址没有被配置前接收Unicast 回应, 剩下的低位比特保留且必须置为零。 hops 和 secs 段在初始化过程中被中继代理有选择地利用。 sname 和 file 域可以被BOOTP或无盘站利用。
关于 options 选项
选项附加在DHCP消息的固定长度段之后, 为了与BOOTP工具兼容, 选项段的前四个8位组包含了
RFC1497中定义的magic cookies,余下的段就都是DHCP 选项。在RFC1533里定义了DHCP的所有的选项
的格式。大多数选项用于标志网络传输设置值, 例如子网掩码 (mask)、 DNS 服 务 器 地 址 等其
他选项被DHCP协议利用, 且在大多数消息中是必需的。
DHCP 选项的编码格式如下:#route add -host 255.255.255.255 dev eth0 在一些老Linux核心的系统里可能会报告错误消息: 255.255.255.255: Unkown host 可以试着加下面的条目到/etc/hosts文件里 255.255.255.255 dhcphost 再用下面的命令 #route add -host dhcphost dev eth0 |
#examples # 缺省租约时间 default-lease-time 28800; # 最大租约时间 max-lease-time 43200; # 子网掩码选项 option subnet-mask 255.255.255.0; # 广播地址 option broadcast-address 192.168.1.255; # 路由器地址 option routers 192.168.1.1; # DNS地址 option domain-name-servers 192.168.1.1; # 域名 option domain-name netreslab.org; # 以上都是全局参数 # 子网声明和掩码 subnet 192.168.1.0 netmask 255.255.255.0 { # 范围 r |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
去集群 更超群——大容量网络演进之路
2019 IBM 中国论坛
H3C 2019 Navigate 领航者峰会
助推数据中心网络现代化转型 打造灵活可靠基础架构平台