动态主机配置协议(DHCP)目录•DHCP介绍•DHCP包格式和选项字段•DHCP消息类型•DHCP工作流程•实验DHCP介绍什么是DHCP?•DHCP:DynamicHostConfigurationProtocol动态主机配置协议的简称•在DHCP之前主要是使用RARP和BOOTP–RARP(反向地址解析协议)•硬件链路层协议•消息不能被路由器转发–BOOTP(引导协议)用于无盘工作站•静态分配IP•服务器必须预先知道客户端的硬件地址•TFTP文件用于客户端主机启动什么是DHCP?(续)•DHCP–客户端-服务器模式–特点•为主机提供配置参数•自动分配可重复利用的网络地址DHCP设计的目的•管理员掌控一切•无需用户手动配置•和BOOTP服务器和BOOTP中继代理可以交互工作•为新用户分配新地址同时对老用户维持之前用的地址•和手动配置静态IP共存,支持为特定客户端提供固定的或者恒定的参数。DHCP的缺点•可达性受限•管理问题•没有认证策略•同一子网内的DHCP服务器不会相互沟通DHCP结构•DHCP中的两个主要部件:–分配主机特定配置参数的协议–分配网络地址的机制•三种分配IP的机制:–自动分置–动态分配–手动配置客户端/服务器模式的协议•服务器有个包含所有可用IP地址的地址池并且维护包含已分配地址和其租约期限等信息的数据库•例如:win2k3DHCP服务器•ClientIPAddressNameLeaseExpirationTypeUniqueID•172.25.22.2zyxel-z8578ypz6.7/25/20042:22:53AMDHCP000d5673d6ae•172.25.22.37/25/20042:27:53AMDHCP000d61959b61•客户端和服务器都构建DHCP消息来通信(消息类型将在后面讲解)•客户端可以收到来自不同服务器的多个OFFER消息并选择一个对其回复DHCP如何工作?•DHCP服务器使用UDP端口67•DHCP客户端使用UDP端口68PacketFormat&OptionsDHCP包格式•Operation操作–1:代表是客户端发送的(boot请求)–2:代表是服务器发送的(boot回复)•Hardwaretype硬件类型–表示客户端硬件类型–如以太网是1•Hardwareaddresslength硬件地址长度–表示客户端硬件地址的长度•Hops跳数–此包被中继代理转发的数目•TransactionID事务标识–客户端用来匹配请求和响应DHCP包格式(续)•Seconds秒数–客户端已经开始DHCP过程的时间,单位是秒•Flags标记–左边最高位代表客户端是否希望得到广播方式的响应。其他位都置0•ClientIPaddress客户端IP–客户端用来指定之前用的IP(如果有的话)•AssignedIPaddress分配的地址–服务器用来指定分配给客户端的IP•NextserverIPaddress下一个服务器IP–中继代理用于指定一个配置服务器•RelayagentIPaddress中继代理IP–中继代理的UP地址•Clienthardwareaddress客户端硬件地址–客户端的MAC地址•Nextservername下一个服务器的名字–可选的服务器主机名,以空字符串结束.•Filename文件名–需要从服务器上得到的文件名DHCP包格式(续)Options选项•选项字段总是以4字节的魔术字开始的。•其后是一个或多个TLV选项–TLV=type-length-value类型-长度-取值•常用选项(RFC2132)–消息类型(53),子网掩码),类型标识(60),路由(3),服务器标识(54),DNSs服务器(6),请求的IP地址(50),租约时间(51)•Option125(RFC3925)•OPTION125功能是对标准DHCP协议一个补充标准,该功能的标准定义在RFC3925中。DHCP服务器在完成验证将客户端的IP地址等信息封装成DHCPOFFER包的时候,将OPTION125信息封装DHCPOFFER包中再发送给客户端。客户端收到OFFER包以后,首先查看该OFFER包所带的OPTION125的“Option-data1”字段中所填写的特征值,并与预先存储的信息进行比对。比对结果为相同则使用此OFFER,如果比对结果不同或OFFER包中不带OPTION125,则将此OFFER丢弃。消息类型DHCP消息类型•1:DHCPDISCOVER发现包–发送者:客户端–作用:发现DHCP服务器•2:DHCPOFFER提供包–发送者:服务器–作用:通知客户端当前有用的服务器,并有条件地提供IP地址•3:DHCPREQUEST请求包–发送者:客户端–作用:(1)接受来自服务器的提议(2)重启后确认分配,(3)更新租期•4:DHCPDECLINE谢绝包–发送者:客户端–作用:指明所请求的IP已经被分配给其他主机了MessageTypes(cont.)•5:DHCPACK确认包–发送者:服务器–作用:给客户端分配IP地址的确认•6:DHCPNAK否定包–发送者:服务器–作用:通知客户端(1)请求的IP地址有误,或者(2)租期已过期•7:DHCPRELEASE释放包–发送者:客户端–作用:客户端放弃它的IP并结束租期•8:DHCPINFORM通知包–发送者:客户端–作用:客户端请求除了IP地址之外的配置信息工作流程正常的初始会话ClientServerMAC=aMAC=b,IP=c,IPpool=(x,y,z)DHCP-DISCOVERY(srcMAC=a,dstMAC=0xffffffffffff,srcIP=0.0.0.0,dstIP=255.255.255.255Srcport=68,dstport=67,xid=n,ciaddr=0.0.0.0)DHCP-OFFER(srcMAC=b,dstMAC=0xffffffffffff,srcIP=c,dstIP=255.255.255.255Srcport=67,dstport=68,xid=n,ciaddr=0.0.0.0,yiaddr=x,serverID=c,leasetime=60s,netmask=255.255.255.0)DHCP-REQUEST(srcMAC=a,dstMAC=0xffffffffffff,srcIP=0.0.0.0,dstIP=255.255.255.255,Srcport=68,dstport=67,xid=n,ciaddr=0.0.0.0,yiaddr=x,serverID=c,leasetime=60s,netmask=255.255.255.0)DHCP-ACK(srcMAC=b,dstMAC=0xffffffffffff,srcIP=c,dstIP=255.255.255.255Srcport=67,dstport=68,xid=n,ciaddr=0.0.0.0,yiaddr=x,serverID=c,leasetime=60s,netmask=255.255.255.0)租期更新ClientServerMAC=aMAC=b,IP=c,IPpool=(x,y,z)DHCP-REQUEST(srcMAC=a,dstMAC=b,srcIP=x,dstIP=c,Srcport=68,dstport=67,xid=n,ciaddr=x,yiaddr=x,serverID=c,leasetime=60s,netmask=255.255.255.0)DHCP-ACK(srcMAC=b,dstMAC=a,srcIP=c,dstIP=xSrcport=67,dstport=68,xid=n,ciaddr=x,yiaddr=x,serverID=c,leasetime=60s,netmask=255.255.255.0)状态转移图初始化选择请求重绑定绑定更新主机启动OFFER选择一个Offer/REQUESTACKNAK或租期过期超过租期50%(T1)/REQUEST租期达到87.5%(T2)/REQUEST释放租期/RELEASEACKDECLINE(notaccept)NAK实验研究实验研究E8CDHCP服务器WinXP客户端Windows2003DHCP服务器WinXP客户端DHCPDiscover(发现包)DHCPOffer(提供包)DHCPRequest(请求包)DHCPAck(确认包)DHCPRelease(释放包)DHCPDecline(谢绝包)DHCPNAK(否定包)DHCPInform(DHCP通告包)TheEndThankYou