text: Linux作DHCP服务器之一一、DHCP概述1.采用DHCP的必要性在TCP
  Linux作DHCP服务器之一一、DHCP概述1.采用DHCP的必要性在TCP/IP网络上，每台工作站要能存取网络上的资源之前，都必须进行基本的网络配置，一些主要参数诸如IP地址，子网掩码，缺省网关，DNS等必不可少，还可能需要一些附加的信息如IP管理策略之类。
  v2.DHCP的主要功能DHCP的全称是动态主机配置协议(DynamicHostConfigurationProtocol)，由IETF(Internet网络工程师任务小组)设计，详尽的协议内容在RFC文档rfc2131和rfc1541目的就是为了减轻TCP/IP网络的规划、管理和维护的负担，解决IP地址空间缺乏问题。
  二、DHCP的工作原理1.几个DHCP名词在介绍DHCP工作原理以前，先解释这几个名词的含义:DHCP客户:DHCP客户是一通过DHCP来获得网络配置参数的Internet主机，通常就是普通用户的工作站。
  DHCP服务器:DHCP服务器是提供网络设置参数给DHCP客户的Internet主机。
  DHCP是基于客户机/服务器模型设计的，DHCP客户和DHCP服务器之间通过收发DHCP消息进行通讯。
  DHCP消息的格式与BOOTP消息大部分相同，这样设计可以增强BOOTP服务器工具，同时为BOOTP和DHCP两种客户服务。
  另外，BOOTP的中继代理可用来转发跨子网的DHCP请求。
  各段描述如下括号里的数字代表这个段以8位组为单位的大小，除options外，其余的段的长度都是固定的，options段的长度至少是312位组。
  如op(1代表这个段的长度为一个8op是消息操作代码，值为1代表BOOTREQUEST(自举请求)值为2代表BOOTREPLY(自举响应)在DHCP客户和DHCP服务器对话期间，op段被DHCP客户设置为BOOTREQUEST(1)，被DHCP服务器设置为BOOTREPLY(2)。
  htype是硬件地址类型hlen是硬件地址长度hopsDHCP客户置这项为零，中继代理要用xidDHCP客户在寻求时产生的一个随机数，它提供了对所有后续的DHCP消息中的客户请求和服务器响应的一种联合。
  ciaddr客户机用来请求一个特定的IP地址，这个地址以前曾经分配给该客户机，希望保留。
  yiaddr由DHCP服务器填写，包含它提供给某一DHCP客户的IP地址。
  siaddr服务器的主机地址giaddr中继代理的IP地址chaddrDHCP客户硬件地址sname服务器主机名file启动文件名2.1options选项在获得IP地址前，DHCP客户用htype，hlenchaddr段表明它的硬件地址，这个值由向客户硬件地址作出响应的服务器和中继代理利用。
  以前BOOTP协议中的两个没有用到的8位组的flags段在DHCP消息里有了定义。
  这个段的高位比特用于表明客户机能不能在IP地址没有被配置前接收Unicast回应，剩下的低位比特保留且必须置为零。
  snamefile域可以被BOOTP或无盘站利用。
  2.2关于options选项选项附加在DHCP消息的固定长度段之后，为了与BOOTP工具兼容，选项段的前四位组包含了RFC1497中定义的magiccookies，余下的段就都是DHCP选项。
  在RFC1533里定义了DHCP的所有的选项的格式。
  大多数选项用于标志网络传输设置值，例如子网掩码(mask)、DNS他选项被DHCP协议利用，且在大多数消息中是必需的。
  不带数据的固定长度选项就只由一个标识码构成。
  例如，DHCP选项里的子网掩码选项如下定义CodeLengthSubnetMaskm1m2m3m4标识码是1，长度是4位组就是子网掩码DHCP消息类型选项的标识码是53，长度是1到7，分别代表不同的DHCP消息类型。
  CodeLengthType53DHCPRELEASE最后一项选项是零长度的End(选项255)，表明这是选项的结束以便DHCP客户处理。
  采用选项编码的好处是不论选项有多长，DHCP客户都可以正确接收，即使是它不认识的选项(不见得所有的DHCP客户程序都完全遵循RFC标准)。
  不论是DHCP客户还是DHCP服务器，都是通过按DHCP消息格式要求来填写各个段形成具体的DHCP消息，DHCP用的传输协议的非面向连接的UDP(用户数据报协议)，从DHCP客户发出的DHCP消息送往DHCP服务器的端口67，DHCP服务器发给客户的DHCP消息送往DHCP客户的端口68，由于在取得服务器赋予的IP之前，DHCP客户并没有自己的IP，所以包含DHCP消息的UDP数据报的IP头的源地址段是0.0.0.0，目的地址则是255.255.255.255。