一、 DHCP服务是什么
DHCP称为动态主机配置协议。DHCP服务允许工作站连接到网络并且自动获取一个IP地址。配置DHCP服务的服务器可以为每一个网络客户提供一个IP地址、子网掩码、缺省网关、一个WINS服务器的IP地址,以及一个DNS服务器的IP地址。
二、DHCP服务在实际应用中的常见问题
1、在一个子网内是否可以存在多台DHCP服务器,如果存在的话,那么该子网中的客户机能否正确获取地址,将会获取哪个DHCP服务器所分配的地址,是否能控制客户机器能从管理人员所设置的DHCP服务器中获取地址而不会从一些非法用户自建的DHCP服务器中取得非法得IP?
2、如果网络中存在多个子网,而子网的客户机需要DHCP服务器提供地址配置,那么是采取在各个子网都安装一台DHCP服务器,还是只在某一个子网中安装DHCP服务器,让它为多个子网的客户机分配IP地址,应该如何实现?
3、如果采取在一个子网中安装DHCP服务器,让它为多个子网的客户机分配IP地址,那么应该需要在一台DHCP服务器中创建多个不同范围的作用域,而我们如何可以准确地保证相应范围的地址分配给相应子网地主机呢?
4、如果客户机器无法从DHCP服务器中获取IP地址,那么Windows2000客户机器将会如何处理自己的TCP/IP设置?
三、DHCP的工作原理
要解析第二点中所提的问题,首先要搞清楚DHCP的实际的工作过程及原理,下面就对此做简单介绍:DHCP是一个基于广播的协议,它的操作可以归结为四个阶段,这些阶段是IP租用请求、IP租用提供、IP租用选择、IP租用确认。
1、IP租用请求:在任何时候,客户计算机如果设置为自动获取IP地址,那么在它开机时,就会检查自己当前是否租用了一个IP地址,如果没有,它就向DCHP请求一个租用,由于该客户计算机并不知道DHCP服务器的地址,所以会用255.255.255.255作为目标地址,源地址使用0.0.0.0,在网络上广播一个DHCPDISCOVER消息,消息包含客户计算机的媒体访问控制(MAC)地址(网卡上内建的硬件地址)以及它的NetBIOS名字。
2、IP租用提供:当DHCP服务器接收到一个来自客户的IP租用请求时,它会根据自己的作用域地址池为该客户保留一个IP地址并且在网络上广播一个来实现,该消息包含客户的MAC地址、服务器所能提供的IP地址、子网掩码、租用期限,以及提供该租用的DHCP服务器本身的IP地址。
3、IP租用选择:如果子网还存在其它DHCP服务器,那么客户机在接受了某个DHCP服务器的DHCPOFFER消息后,它会广播一条包含提供租用的服务器的IP地址的DHCPREQUEST消息,在该子网中通告所有其它DHCP服务器它已经接受了一个地址的提供,其他DHCP服务器在接收到这条消息后,就会撤销为该客户提供的租用。然后把为该客户分配的租用地址返回到地址池中,该地址将可以重新作为一个有效地址提供给别的计算机使用。
4、IP租用确认: DHCP服务器接收到来自客户的DHCPREQUEST消息,它就开始配置过程的最后一个阶段,这个确认阶段由DHCP服务器发送一个DHCPACK包给客户,该包包括一个租用期限和客户所请求的所有其它配置信息,至此,完成TCP/IP配置。
四、DHCP服务常见问题的解决方案
本文第二点中我们所提出的问题有四点,以下就此4个问题做相应的分析并给出我个人的一些解决方案,相信可以对学习DHCP服务的自学者会有一定的帮助,这些问题也是在实际教学中学生提出疑问最多的知识难点。
1、根据客户计算机的IP租用原理可以知道,在一个子网内,如果存在多台DHCP服务器来提供地址配置信息,这是不违反请求、分配原则的,因为只要中有一台客户计算机在该子网中提出IP地址租约请求,由于请求是广播形式的,所以在子网中可以有任意数量的特定DHCP服务器响应一个IP租用请求,而客户请求后选中的是这些任意特定DHCP服务器中的某一台,这个选择具有随机性,但有一点要注意的是客户只能为每一张网络接口卡接受一个租用提供,上面所谓特定的DHCP服务器是指那些经过系统授权的DHCP服务器,而非授权的DHCP服务器将无法在网络中提供正常的地址分配服务,这一点非常重要,因为这样一来客户机器将只会在管理员设定的地址范围中取得地址,Windows 2000操作系统的这一新增功能,通过对DHCP服务器进行认证避免了非法DHCP服务器分配非法IP地址造成的IP地址冲突,在实际应用中,客户机器获取非法的地址经常是造成网络瘫痪和无法正常通讯的一大原因。综合上面的分析可以做出第一个问题的结论:在一个子网中可以存在多台DHCP服务器来提供地址分配,但能够作为地址提供的不是任意的DHCP服务器,而应该是经过系统认证的那些,客户机请求地址时最终从那一台经过认证机器中获取时随机的。此外,从另一个角度看,在相同子网上使用多个 DHCP 服务器,将为它所服务的 DHCP 客户机提供更强的容错能力,如下图所示,在一个子网内(网络号为192.168.1.0 掩码为255.255.255.0)共用两个 DHCP 服务器,其中的DHCP服务器1不可用的话,DHCP服务器2可以取代它并继续租用新的地址或续订现有客户机。可以建议采用的解决方案是使用 80/20 规则来划分两个 DHCP 服务器之间的作用域地址,具体做法可以是将服务器 1 配置成可使用大多数地址(约 80%),服务器 2 可以配置成让客户机使用其他地址(约 20%)。
2、如果在一个网络中存在多个子网,而多个子网的主机都需要DHCP服务器来提供地址配置信息,那么我们可以采用的方法是在每一个子网中安装一台DHCP服务器,让它们来为各个子网分配IP地址,但从节约资源利用出发,我们一般情况下不这样做,可以采取在一个子网中安装DHCP服务器,让它来为多个子网分配IP地址,实现多子网地址分配可以借助DHCP的中继代理功能实现,而作为中继代理的设备可以是一台提供中继代理程序的Windows2000服务器或是一个符合RFC1542规定的路由器,具备 DHCP/ BOOTP Relay Agent 的功能(DHCP relay agent能够把 DHCP/BOOTP 广播信息从一个网段转播到另一个网段上)。以管理的局域网分为三个子网,用Win2000服务器连接。
下面是实现跨子网使用DHCP服务器的具体解决方案:
(1)安装DHCP中继代理程序:在Windows2000服务器的“路由和远程访问”窗口中,依次展开“本地服务器→IP路由选择→常规”选项,右键点击“常规”选项,在弹出的菜单中选择“新增路由协议”,然后在“新路由协议”窗口中选择“DHCP中继代理程序”,接着点击“确定”按钮。
(2)指定DHCP服务器:右键点击刚刚添加的“DHCP中继代理程序”选项,在弹出菜单中选择“属性”,进入“DHCP中继代理程序属性”对话框,在“常规”标签页的“服务器地址”栏中输入子网1中DHCP服务器的IP地址:192.168.1.2,然后点击“添加”按钮,最后点击“确定”按钮关闭该对话框。
(3)配置访问接口:右键点击“DHCP中继代理程序”选项,在弹出菜单中选择“新增接口”,然后在“DHCP中继代理程序的新接口”对话框中的“接口”列表框中选中可以访问子网1中的DHCP服务器的接口,这里新增的接口应该是接口二和接口三,接着点击“确定”按钮。然后在弹出的“DHCP中继站属性”对话框中,选中“中继DHCP数据包”选项,这样就启用了它的中继功能,最后点击“确定”按钮。
(4)DHCP服务器中配置一个超级作用域,其中包含三个普通作用域,作用域地址范围可以分别设置为192.168.1.10~192.168.1.254(分配给子网1的PC使用);192.168.2.10~192.168.2.254(分配给子网2的PC使用);192.168.3.10~192.168.3.254(分配给子网3的PC使用),必须记住DHCP只能为每一个子网分配一个范围。
完成以上配置后,子网2和子网3中的DHCP客户机PC2及PC3就可以通过主机A的DHCP中继代理程序访问子网1中的DHCP服务器。
3、解决了单台DHCP服务器为多个子网分配IP地址后,我们还要搞清楚的一个问题是,如果某一个子网的PC如子网2中的PC2或子网3中的PC3发出地址请求信息后,主机A可以作为中继代理对他们的请求传达子网1中的DHCP服务器,但该DHCP服务器如何可以确定并准确地将作用域192.168.2.0网段的地址分给PC2而把作用域192.168.3.0网段的地址分给PC3呢?这个是多数学生可能存在的疑问,要搞清楚这个问题,可以参考以下的原理分析来找答案:以子网2中的主机PC2为例,DHCP 客户机PC2在子网2 上广播 DHCP/BOOTP discover 消息 (DHCPDISCOVER),广播是将消息以 UDP (User Datagram Protocol)数据包的形式通过 67 端口发出,当中继代理(relay agent)主机A接收到这个消息后,它检查包含在这个消息报头中的网关IP 地址,如果网关IP 地址为 0.0.0.0 ,则用 relay agent主机A的接口二的IP地址192.168.2.1替换它,然后将其转发到 DHCP 服务器所在的子网1上(主机A还担任路由器功能)。当在子网1中的 DHCP服务器收到这个消息后,它开始检查消息中的网关IP地址,然后判断该网关地址是否包含在DHCP的某一个作用域范围内,从而决定它是否可以使用相应的作用域的地址来提供IP地址租约,当然,本例中DHCP服务器将会从作用域192.168.2.10~192.168.2.254选取一个地址来配置PC2;也就是说DHCP客户机的请求地址消息中的网关IP地址 (GIADDR) 将是DHCP服务器用来确定从那个DHCP 范围中挑选IP地址来配置客户机的依据。
二、
环球信息网(WWW)是Internet上信息的一种具体应用与表现形式,它在整个Internet中占据着十分重要的地位。超媒体是WWW的技术基础。
WWW服务采用客户/服务器工作模式:信息资源以网页的形式存储在Web服务器中,用户查询信息时执行一个客户端的浏览器程序,向Web服务器发出请求,Web服务器根据客户端的请求内容,将保存在Web服务器中的某个网页返回给客户端。浏览器接收到页面后对其进行解释,最终将图、文、声并茂的画面呈现给用户。
在WWW中,使用统一资源定位符(URL)来表示网页地址。
1. 环球信息网WWW(World Wide Web) 是Internet上能满足信息查寻或获取要求的一种信息组织方式。
2. 超文本(Hypertext)是一种用计算机来实现连接网页中相关文本内容的结构。
3. 超媒体=超文本+多媒体。
4. WWW服务器
WWW服务器也称Web服务器,建立WWW服务器是Internet网点建成后要考虑的第一件事。
WWW服务器与域名服务器的概念与应用技术在网络系列课程中已作介绍,这里不再重复。
5. WWW客户浏览器
• Web浏览器是最终用户与WWW之间的前端界面
• Web浏览器的功能
• 常用的Web浏览器
Netscape Navigator(网景浏览器)
Internet Explorer(IE)浏览器
HotJava浏览器(JavaSoft公司推出,用Java编写)
代理服务原理
代理服务器有很多种,大体来说有http,ftp,socks代理三种,其中又分透明代理和不透明代理。其中透明代理一般是网关,是硬件。所以这里讨论不透明代理。
当机器通过代理服务器上网时。通讯是分两次的,先是机器和代理服务器通讯,再是代理服务器和目的地址通讯。
机器和代理服务器通讯时,目的IP是代理服务器的IP。代理服务器和目的地址通讯时,源IP是代理服务器的IP,当外部的数据也是一样的,在内网中,出现的IP数据,全是内网和代理服务器的IP。因此,从IP包头是看不出任何与外面通讯的信息的。只有从数据中才能看到。
例如,用http代理上网。
过程是
机器和代理服务器建立TCP连接。
机器发出GET命令。这时GET命令中包含URL或IP地址,明文。
代理服务器将其中的URL转换为IP地址,可能会有DNS。将源数据包中的数据拷贝下来。去掉URL,重新组包,再发出去。
我们需要解析第一个GET包。
现在来看几种代理方式。
http (get)
http (connect)
ftp (user user@host:port)
ftp (user user@host port)
ftp (open host)
ftp (site host)
ftp (site user@host)
socks5
socks4
这些代理方式都有一个特点。就是在连接时,都会先和代理服务器连接,发出请求,一般为 command url,command就是get,connect,user 等。http和ftp都一样,可以通过关键字来识别。而且url是明文。Socks有些特别。它不是明文的,而是十六进制数据。要获得IP地址,还要经过转换。
DNS服务是互联网上非常重要和基础的服务之一,用以确定主机名和IP地址之间的对应关系,本文介绍DNS服务
DNS记录
一起实现DNS分布式数据库的那些名称服务器存储了从主机名到IP地址映射的资源记录(resource record,RR)。每个DNS应答消息携带着一个或者多个资源记录。在本部分与下一部分中,我们提供了对DNS资源记录和消息的简短介绍;DNSRFC文档[RFC 1034,RFC 1035]中描述了更多的细节。
一个四元组的资源记录包含了以下的字段:
(Name,value,type,TTL)
TTL是留住资源记录的时间:它确定了一个资源从缓存中删除的时间。在下面给出的例子记录中,我们将忽略TTL字段。name和value的意义依赖于TyPe:
●如果Type=A,那么Name是一个主机名并且value是该主机名所对应的IP地址。这样,一个TYPE A的记录提供了标难的主机名称到IP地址的映射。作为例子,{relay1.bar.foo com,145.37.93.126,A}就是一个Type A的记录。
●如果Type=NS,那么Name就是一个域(如foo.com),并且value是一个知道如何获得该域中主机的IP地址的权威名称服务器的主机名称。这个记录用于将DNS查询沿着查询的链式结构进行路由。作为例子,{foo.com,dns.foo.com,NS}就是一个Type NS纪录。
●如果Type=CNAME,那么value就是一个与主机别名NAME相对应的正规主机名。这个记录可以给发出查询的主机提供一个和主机名相对应的正规主机名。作为例子,{foo.com,relay1.bar.foo.com,CNAME}就是一个CNAME记录。
●如果TYPE=MX,那么value就是一个主机别名为NAME的邮件服务器的主机名。作为例子,{foo.com,mail.bar.foo.com,MX}就是一个MX记录。MX记录使得邮件服务器的主机名具有简单的别名。
如果一个名称服务器对于一个特殊的主机名是权威的,那么这个名称服务器将为这个主机名包含一个Type A记录(即使名称服务器不是权威的,它也可以在它的缓存中包含一个Type A记录)。如果一个服务器对于一个主机名不是权威的,那么该服务器将为包含该主机名的域包含一个Type NS记录:它还包含一个在该NS记录的value字段中提供了名称服务器IP地址的Type A记录。作为例子,假设一个根服务器对于主机gain.cs.umass.edu不是权威的。那么根服务器将包含一个包括了主机cs.umass.edu的域的记录,例如,{umass.edu,dns.umass.edu,NS)。根服务器也包含一个Type A记录,该记录将名称服务器(dns.umass.edu)映射到一个IP地址上,例如,{dns.umass.edu,128.119.40.111,A}。
DNS消息
在前面,我们间接提到了DNS查询和应答消息。它们仅仅是两种DNS消息。而且,请求和应答消息有相同的格式,如图4所示。
图4 DNS消息格式
一个DNS消息的各个字段的语义如下:
●前12个子节是头部区,它有很多字段。第一个字段是一个用来进行标识查询的16比特的数字。这个标识符被拷贝到一个查询的应答消息中,使得客户能够将接收到的应答和所发送的查询相匹配。在标志字段中包括很多标志。一个1比特的查询/应答标志指明了该消息是查询(0)还是应答(1)。当一个名称服务器对于所查询的名称来说是一个权威服务器的时候,应答消息中就对一个1比特的权威标志进行了设置。当一个客户(主机或者名称服务器)希望当它没有该记录时名称服务器执行递归的时候,就设置一个1比特的要求递归标志。如果名称服务器支持递归的话,就在应答中设置一个1比特的递归可用宇段。在头部中,还有四个“数目”字段。这些字段指明了头部之后出现的四种类型的“数据”部分的出现数目。
●问题部分包含了关于所执行的查询的信息。这个区包括了(1)包含了被查询的名称的名称字段,(2)指明了所询问的关于该名称的问题类型的类型字段(例如,与一个名称相关的主机地址——type A,或者一个名称的邮件服务路—type MX)。
●在一个从名称服务器发出的应答中,答案部分包含了最初被查询的名称的资源记录。前面讲过,在每个资源记录中都有Type(例如,A,NS,CNAME和MX),value和TTL。应答可以在答案中返回多个RR,因为一个主机名称可以有多个IP地址(例如,对于前面所讨论的重复的web服务器的情况)。
●权威部分包含了其他权威服务器的记录。
●补充部分包含了其他“有帮助的”记录。例如,一个对应于MX查询的应答中的答案字段将包含与别名NAME相关联的邮件服务器的主机名。补充区将包含一个Type A记录,该记录提供了该邮件服务器的正规主机名所对应的IP地址。以上的讨论集中在如何从DNS数据库中检索数据。你可能会奇怪,最先数据是如何进入到数据库中的呢?直到最近,每个DNS服务器的内容都被静态配置了,例如,由一个系统管理员创建的配置文件。更近的,为了允许从数据库中通过DNS消息动态加入或者删除数据,在DNS协议中加入了UPDATE选项。RFC 2136详细说明了DNS的动态更新。
DNSNet提供了一个很好的、关于DNS的文档集合[DNSNetl999I。因特网软件联盟(Internet Software Consortium)为BIND提供了很多资源,BIND是一个流行的、Unix下的公共域名服务器软件,不过因其暴露出的一些安全问题,目前它正被其它竞争产品逐步替代。