分类:
2008-06-11 11:10:13
PXE是RPL的升级品,它是Preboot Execution Environment的缩写。它们的不同之处为:一个是静态路由,一个动态路由。不难理解:RPL是根据网卡上的ID号加上其它的记录组成的Frame向server发出请求,而server那里早已经有了这个ID数据,匹配成功则进行远程启动;PXE是则是根据服务器端收到的工作站MAC地址(就是网卡号),使用DHCP服务给这个MAC地址指定一个IP地址,每次重启动可能同一台工作站有与上次启动有不同的IP,动态分配地址。下面以工作站引导过程说明PXE的原理:
1、 用户端电脑开机后, PXE Boot ROM 获得控制权之前先做自我测试,然后以广播形式发出一个请求FIND帧。
2、 如果服务器收到个人电脑所送出的要求, 就会送回 DHCP 回应, 内容包括用户端的 IP 地址, 预设通讯通道, 及开机映像文件。 否则, 服务器会忽略这个要求。
3、 工作站收到服务器发回的响应后则会回应一个FRAME,以请求传送启动所需文件。
4、之后,将有更多的讯息在用户端与服务器之间作应答, 用以决定启动参数。 BootPROM 由 TFTP 通讯协议从服务器下载开机映像档, 这个映像档就是软盘的映象文件。
5、 工作站使用TFTP 协议接收启动文件后,将控制权转交启动块,引导操作系统,完成远程启动。
-----------------------------
一部机器通过网络启动,它必须得到这些信息:
一个identity;(有许多client同时启动,每台都有唯一识别号,不然,这台机器在网络中就没有身份。)
某个操作系统的映像文件;(把操作系统引导(boot)下来。)
可以操作的文件系统。
下面,按工作站引导过程说明它的原理:
当客户机启动后,其网卡上的BootRom 会广播一个FIND帧,说白了,那是一个引导请求帧,该帧中包含有客户机的网卡号,就是MAC地址:00E09C410021这样的东西。
server端远程启动服务收到客户机广播的FIND帧后,根据帧中所带的网卡ID号,检查远程启动数据库中是否有该卡号的配置记录:如果不存在这个记录,引导过程不能继续;如果此工作站的记录已经存在,远程启动服务发送一个FOUND帧,同样,这个帧中包含了服务器的网卡ID,也就是server端的MAC地址,然后就调用BOOTP(bootprotocol)或者DHCP(Dynamic Host Configuration Protocol ),这个DHCP其实是BOOTP的进化,所以,假如不考虑其他的规定,我认为能适用于BOOTP的一定能适用于DHCP,它们都是处理以太网的地址。
工作站收到第一个响应后(这样说,是假如网络上有不止一台的sever在运行远程启动服务,工作站只对收到的第一个FOUND帧有响应,并且,这个响应包括:分配给工作站端的机器名字、IP地址、服务器端的IP地址、以及启动时的映像文件等。),则发送一个SEND.FILE.REQUESTFrame给第一个响应的远程启动服务器,以请求传送启动所需的文件。
当远程启动服务器收到SEND.FILE.REQUESTFrame的要求后,会根据其远程启动数据库中的工作站记录查找对应的启动块,就是bootblock,将工作站所需的启动文件传送给工作站(就是启动所要的那个映像文件),(说白了,给工作站一个FILE.DAT.RESPONSE帧,这个帧包含了工作站启动所需的启动块)。
工作站接收到完整的启动文件后,就开始执行文件中的启动程序,将执行点转向启动块的入口,启动工作站,这时,又要用到另外一个internet协议:TFTP( Trivial File Transfer Protocol )。接着是不同的OS有不同的引导方式了,接下来,该是我向你讨教的了。
有必要补充解释一下TFTP协议。你用过FTP协议的话,很好理解它:FTP不是有mget、mput吗?可以上传下传文件,OK,TFTP协议是可以理解为FTP的下传部分,是FTP的cut-down版本,它使用了UDP(User Datagram Protocol )代替TCP(TransmissionControl Protocol),这是因为client端的bootrom很小,32k或16k,由于UDP是块导向的,而TCP是流导向的,所以我们无盘启动用了TFTP,一块一块地传,直到文件传完。其间,它们要握手的,怕包的丢失。整个启动映像文件传输完毕后,在入口处,bootrom的控制权就交给操作系统的启动映像文件了。