无盘启动的工作原理 
  
说起原理,许多人不齿的,但为了照顾刚进门的兄弟姐妹,或者说:满足想仿效***那样分析网络问题的计算机爱好者,还是讲一点,因为对于想成为***的人讲,这一步是必须走的。

一部机器通过网络启动,它必须得到这些信息:

一个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的控制权就交给操作系统的启动映像文件了。