一种网络环境下的计算机远程启动方法.pdf

上传人:n****g 文档编号:1020001 上传时间:2018-03-26 格式:PDF 页数:32 大小:1.58MB
返回 下载 相关 举报
摘要
申请专利号:

CN01142033.2

申请日:

2001.09.07

公开号:

CN1334510A

公开日:

2002.02.06

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||公开|||实质审查的生效

IPC分类号:

G06F9/445; G06F13/42

主分类号:

G06F9/445; G06F13/42

申请人:

清华大学

发明人:

张尧学; 周悦芝; 王勇; 彭玉坤; 王晓辉

地址:

100084北京市海淀区清华园

优先权:

专利代理机构:

北京清亦华专利事务所

代理人:

廖元秋

PDF下载: PDF下载
内容摘要

本发明属于计算机网络领域,其步骤包括:只读存储器中的初始启动代码在该计算机加电启动后使用动态主机配置扩展协议获得客户端计算机的标识;然后通过主动程序传输协议从服务器上下载一个脚本语言解释执行程序并加载执行;在该脚本语言解释执行的环境下,客户端通过对语言脚本的解释执行让用户选择需要加载的操作系统;客户端再利用主动程序传输协议从服务器上下载操作系统内核镜像并加载执行,从而实现了计算机的远程启动。本发明具有可靠、安全、高效,使用简单,并且能够支持多操作系统的启动的特点。本发明可用于网络计算机的远程启动,PC的多操作系统远程启动,还可以用于智能家电的远程启动,在信息家电领域有很好的应用前景。

权利要求书

1: 一种网络环境下计算机远程启动的方法,首先在客户端的计算机主板上或网卡 上设置一个只读存储器或可擦可编程只读存储器,远程启动时包括以下步骤: 1)只读存储器中的初始启动代码在该计算机加电启动后使用动态主机配置扩展协 议获得客户端计算机的标识; 2)然后通过主动程序传输协议从服务器上下载一个脚本语言解释执行程序并加载 执行; 3)在该脚本语言解释执行的环境下,客户端通过对语言脚本的解释执行让用户选 择需要加载的操作系统; 4)客户端再利用主动程序传输协议从服务器上下载该操作系统的内核镜像并加载 执行,从而实现了计算机的远程启动。
2: 如权利要求1所述的网络环境下计算机远程启动的方法,其特征在于, 所说的步骤1)具体包括如下的步骤: (1)对初始启动代码进行初始化:该过程包括检查代码自身的合法性和完整性; 初始化本机环境和网络环境等; (2)初始启动代码驱动网卡工作,并广播DHCPDISCOVER消息分组,请求本机的 IP地址,网关地址,启动服务器地址,脚本语言解释执行程序等标识; (3)服务器接收到DHCPDISCOVER消息分组后,检查第60号和43号选项,如果 是动态主机配置扩展协议的消息分组,则向客户端发送应答的DHCPOFFER消息分组; 如果不是动态主机配置扩展协议的消息分组,则将其丢弃; (4)客户端收到DHCPOFFER消息分组后,验证该消息分组是否是动态主机配置扩 展协议的消息分组,如果该消息分组是动态主机配置扩展协议的消息分组,则记录有 关动态主机配置协议参数,服务器地址,脚本语言解释执行程序等内容,否则丢弃该 消息分组,同时客户端向服务器发送DHCPREQUEST消息分组并等待服务器的同意应答; (5)服务器收到DHCPREQUEST消息分组后,向客户端发送DHCPACK消息分组作为 应答。
3: 如权利要求1所述的网络环境下计算机远程启动的方法,其特征在于, 所说的步骤2)具体包括如下的步骤: (1)客户端收到DHCPACK消息分组后,验证该消息分组是否是动态主机配置扩展 协议的消息分组,如果该消息分组是动态主机配置扩展协议的消息分组,则记录相关 的内容,否则丢弃该消息分组;同时客户端根据返回的内容向服务器发出请求下载脚 本语言解释执行程序的传输请求; (2)服务器接收到客户端的程序传输服务的请求后,利用主动程序传输协议的单 播或多播方式向客户端传送脚本语言解释执行程序。
4: 如权利要求1所述的网络环境下计算机远程启动的方法,其特征在于, 所说的步骤3)具体包括如下的步骤: (1)客户端接收完脚本语言解释执行程序,并将其存储在本地内存中;客户端加 载执行脚本语言解释执行程序,初始启动代码释放系统控制权,脚本语言解释执行程 序初始化脚本语言解释执行的环境; (2)客户端脚本语言解释执行的环境解释执行语言脚本,在此阶段,用户使用键 盘选择需要加载的操作系统。
5: 如权利要求1所述的网络环境下计算机远程启动的方法,其特征在于,所说的 步骤4)具体包括如下的步骤: (1)客户端根据用户选择的操作系统的内核镜像的程序名称、路径或摘要,向服 务器发出请求下载操作系统内核镜像的程序传输请求; (2)服务器接收到客户端发出的程序传输服务的请求后,利用主动程序传输协议 的单播或多播方式向客户端传送操作系统的内核镜像; (3)客户端接收操作系统内核镜像并将其存储在本地内存中,客户端再利用多操 作系统加载器加载执行操作系统内核镜像,至此,操作系统加载完毕。
6: 如权利要求1所述的网络环境下计算机远程启动的方法,其特征在于,所说的 动态主机配置扩展协议是对动态主机配置协议DHCP的选项进行自定义而得到的,包括 如下的内容: 1)标签号为60的选项,该选项的值定义为“MRBM-EDHCPSEClient”; 2)标签号为43的选项,该选项的值定义为“03:05:08:00:00:00:ff:ff”; 3)标签号为165的选项,该选项的用来传递给脚本语言解释执行程序的参数; 4)标签号为138的选项,该选项定义为主动程序传输协议进行传输程序时的多播 地址; 5)标签号为139的选项,该选项的含义为主动程序传输协议以多播方式传输程序 时客户端监听主动程序传输协议数据包的UDP端口; 6)标签号为140的选项,该选项的含义为主动程序传输协议以多播方式传输程序 时服务器监听主动程序传输协议请求的UDP端口; 7)标签号为141的选项,该选项的含义为客户端重发主动程序传输协议请求前等 待的时间; 8)标签号为142的选项,该选项的含义为服务器监听主动程序传输协议请求的延 迟时间; 9)标签号为143的选项,该选项的含义为主动程序传输协议要传输程序的摘要。
7: 如权利要求1所述的网络环境下计算机远程启动的方法,其特征在于,所说的 主动程序传输协议在客户端下载程序时的步骤如下: 1)客户端发出读请求包,该数据包中包含有程序的名称或摘要以及请求的数据块 的块号,初始为1; 2)服务器收到客户端的读请求包后,检查程序是否存在,如果存在,则发送数据 包,否则发出错误包; 3)客户端如果收到数据包,则检查数据包中的块号是否存在,如果存在则丢弃该 数据包,如果不存在,则保留在缓冲区;如果收到的数据块的大小不足512个字节, 则转6),否则将块号加1,转1); 4)客户端如果收到错误的包,则终止传输过程,并提示用户; 5)客户端如果在一定时间后,如果没有收到服务器的应答消息,则重发请求,如 果重发次数到达了10次,则终止传输过程,并向用户报告; 6)如果传输使用的是摘要的方法,则对程序进行基于摘要的检查,如果程序正常 通过检查,则转8),否则转7); 7)表明传输过程出现了错误,需要重新开始传输,如果重新开始的次数超过了3 次,则终止传输,并向用户报告;否则转1); 8)传输正确,正常结束传输过程。
8: 如权利要求1所述的网络环境下计算机远程启动的方法,其特征在于,所说的 操作系统的内核镜像的格式内容具体包括: 1)内核镜像标识,目前的值为05h,0ah,0ah,05h,作为内核镜像的标识; 2)内核镜像在内存中的装载地址; 3)内核镜像的首次执行地址,当内核镜像加载程序成功地装载到装载地址后,跳 转到执行地址处执行,从而释放系统的控制权; 4)内核镜像的大小,该长度是指内核镜像为解压前的大小; 5)内核镜像解压后所占用的内存大小; 6)程序的真正数据区。

说明书


一种网络环境下的计算机远程启动方法

    【技术领域】

    本发明属于计算机网络领域,特别涉及网络环境下计算机远程启动的方法。

    背景技术

     个人计算机的出现,使得计算机变得比过去的大型计算机更加好用,界面友好,从而使计算机走进了人类的日常生活。然而,随着计算机的发展,软件越来越庞大,从而又使计算机的维护工作量非常大。企业和学校这种公共机房的维护管理,尤其是令系统管理员感到头疼的问题。因此,人们一直在寻找一种方法,希望能够减轻维护计算机系统的工作量,使计算机的使用越来越简单,而且又能够降低成本。

    计算机网络地出现,使得PC机的计算模式发生了变化,由原来的分散的计算,各不相干的独立的计算机系统,发展到了进行相互通信,进行资源共享的网络系统。这为解决上述问题提供了一个技术的基础。

    计算机的远程启动就是建立在计算机网络技术基础上的一种计算机的启动方法。其基本的工作原理是首先使系统连上网络,然后通过协议从网络的服务器上下载操作系统软件并加以执行。计算机的远程启动能够大大减轻系统维护工作量,并能降低系统的整体造价。同时,由于操作系统及其他的应用都存储在服务器上,因此使得终端系统非常健壮。

    计算机远程启动技术,是指计算机的启动不需要从本地的存储设备上读取操作系统镜像,而是从远程的服务器上下载软件镜像并在本地执行。在远程启动技术的基础上产生了“无盘工作站”以及其他的计算模式(如瘦客户端技术)等,它们由于非常易于维护和管理而受到了人们的青睐。Novell公司是较早推出远程启动技术的公司之一。它提出了一种用于远程启动的RPL(Remote Program Load)协议,但是由于使用RPL必须用Novell组网,其命令繁多,安装配置非常复杂;支持WIN95远程引导的RPL技术通用性差,技术不成熟,已经几乎被淘汰了。

    由于远程启动的种种好处,市场需要新的远程启动技术。尤其是能支持WIN98的远程启动技术。在这种要求下,Intel公司在1998年提出了一种称为PXE(PrebootExecution Environment)的远程启动技术。最新的PXE规范的版本是2.0。PXE规范提出了一种新的基于TCP/IP协议簇的远程启动方法。因为PXE是建立在已成为工业标准的Internet技术规范的基础之上,所以它的稳定性比较好。但PXE技术还未发展成熟,市场尚在成长之中。而且PXE技术对多操作系统的启动支持也不够强,它没有提出多操作系统启动的办法。

    PXE协议是一种基于客户/服务器模型的协议,分为客户端和服务器两部分。其启动的基本原理是首先使用动态主机配置协议(DHCP)获得本机的IP地址、启动服务器的地址,然后利用简单文件传输协议(TFTP)下载启动程序并执行。

    PXE远程启动的步骤如下:

    步骤1:客户端广播DHCPDISCOVER消息分组到标准的DHCP端口67。该消息分组中具有选项域(option field),选项域的内容如下:

    1)客户端的唯一标识(Universally Unique ID,UUID)标签(tag)。

    2)客户端通用网络设备接口版本标签。

    3)客户端系统体系结构标签。

    4)DHCP第60号标签,其含义是类别标识(Class ID),其值设置为:“PXEClient:Arch:xxxx:UNDI:yyyzzz”。

    步骤2:DHCP或DHCP代理服务通过向客户端的标准响应端口68发送DHCPOFFER消息对客户端进行响应。如果是DHCP代理服务器进行响应的话,则客户IP地址的值为空(0.0.0.0)。如果是DHCP服务器进行响应的话,则客户IP地址的值是有效值。

    如果客户端没有收到响应,则到了一定时间后,客户端将重新发送广播消息。

    步骤3:客户端从它收到的DHCPOFFER消息中,记录以下的信息:

    1)DHCP或BOOTP服务提供的客户端IP地址以及其他的参数。

    2)从DHCPOFFER中PXE标签的启动服务器域中得到启动服务器列表。

    3)如果可能,记录发现控制(Discovery Control)标签的内容。

    4)如果可能,记录Multicast Discovery IP地址。

    步骤4:如果客户端选择了一个DHCP服务器所提供的IP地址,则它必须按照标准的DHCP协议向DHCP服务器发送一个请求并等待服务器的同意应答。如果客户端使用一个BOOTP服务器响应,则可以简单地使用这个地址。

    步骤5:客户端选择和发现启动服务器。选择和发现启动服务器的数据分组可能被广播(通过端口67),可能被多播(通过端口4011),也可能被单播(通过端口4011)。这取决于前面所说的DHCPOFFER消息的PXE扩展标签中发现控制标签的值。这个分组的格式和内容同步骤1中所说的DHPCDISCOVER消息分组是一样的,只是消息的类型为DHCPREQUEST。该分组包含如下的内容:

    1)DHCP服务器分配给客户端的IP地址。

    2)客户端的唯一标识(UUID)标签。

    3)客户端通用网络设备接口版本标签。

    4)客户端系统体系结构标签。

    5)DHCP第60号标签,其含义是产品类别标识(Class ID),其值设置为:“PXEClient:Arch:xxxx:UNDI:yyyzzz”。

    6)PXE选项域中的启动服务器类型。

    步骤6:启动服务器利用单播的方式向客户端的源端口发送一个DHCPACK应答分组。该分组包含如下的内容:

    1)启动文件的名字。

    2)MTFTP(Multicast Trivial File Transfer Protocol)配置参数。

    3)网络启动程序成功执行需要的其他选项。

    步骤7:客户端下载可执行的文件,该下载可通过标准的TFTP协议(端口69)或MTFTP协议(启动服务器应答分组中所分配的端口)。可执行代码在客户端内存中的存放位置取决于客户端CPU的体系结构。

    步骤8:PXE客户端决定是否需要对下载的文件进行授权测试。如果需要测试,则客户端向原来提供启动文件的启动服务器发送另一个DHCPREQUEST消息,请求认证文件,通过TFTP协议或MTFTP下载认证文件,然后执行授权测试。

    步骤9:最后,如果授权测试成功或不需要进行授权测试,则PXE客户端启动执行下载的代码。

    PXE协议方法由于采用了标准的TCP/IP协议簇,因此比较健壮,也比较容易实现。PXE的配置和使用要比RPL方便得多,但是它具有如下的不足:

    其一,安全性。TFTP协议是一个简单的协议,没有认证机制,因此提供TFTP服务的主机可能受到攻击。PXE提供了一种通过认证文件授权的方法来保证安全。但是如果在TFTP传输的过程中程序包被恶意篡改,PXE方法是没有办法识别出来的。

    其二,PXE主要是通过对DHCP的扩展来实现。PXE不但扩展了DHCP的选项定义,也扩展了DHCP服务的交互过程,这导致DHCP服务器的功能和启动服务器的功能界限不清,不便于实现,也不便于采用现有的DHCP服务来架构远程启动服务。

    其三,不能支持多操作系统的启动。PXE只能让客户端选择为之服务的启动服务器,不能让用户选择他们需要加载的操作系统。

    因此,目前流行的计算机远程启动技术,在健壮性,安全性和通用性上不能令人满意,并且也不能对多操作系统的启动提供有效的支持。因此不能满足市场对计算机远程启动技术的要求。

    【发明内容】

    本发明针对现有技术的不足之处,提出了一种网络环境下计算机远程启动的方法,具有可靠、安全、高效,使用简单,并且能够支持多操作系统的启动的特点。可用于网络计算机的远程启动、PC的多操作系统远程启动,还可以用于智能家电的远程启动,在信息家电领域有很好的应用前景。

    本发明的方法基于客户/服务器模型的,分为服务器和客户端两部分。这里所说的服务器和客户端是一个服务模型的概念。服务器指提供远程启动服务的计算机,通常称之为启动服务器,而客户端是指需要远程启动的计算机。

    本发明提出的一种网络环境下计算机远程启动的方法,首先在客户端的计算机主板上或网卡上设置一个只读存储器(ROM)或可擦可编程只读存储器(EPROM),远程启动时包括以下步骤:

    1)只读存储器中的初始启动代码在该计算机加电启动后使用动态主机配置扩展协议(动态主机配置扩展协议是通过对动态主机配置协议DHCP的选项进行自定义而得到的)获得客户端计算机的标识;

    2)然后通过主动程序传输协议从服务器上下载一个脚本语言解释执行程序并加载执行;

    3)在该脚本语言解释执行的环境下,客户端通过对语言脚本的解释执行让用户选择需要加载的操作系统;

    4)客户端再利用主动程序传输协议从服务器上下载操作系统的内核镜像并加载执行,从而实现了计算机的远程启动。

    其中2)和4)步骤中所使用的传输协议可为已有的任何一种传输协议,比如简单文件传输协议。步骤3)中的脚本语言,既可为本发明实施方式中提出的脚本语言,也可为已有的其他一种脚本语言。

    本发明的网络环境下计算机远程启动方法的详细步骤如图1所示,其中:

    上述中的步骤1)具体包括如下的步骤:

    (1)对初始启动代码进行初始化:该过程包括检查代码自身的合法性和完整性;初始化本机环境和网络环境等;

    (2)初始启动代码驱动网卡工作,并广播DHCPDISCOVER消息分组,请求本机的IP地址,网关地址,启动服务器地址,脚本语言解释执行程序等标识;

    (3)服务器接收到DHCPDISCOVER消息分组后,检查第60号和43号选项,如果是动态主机配置扩展协议的消息分组,则向客户端发送应答的DHCPOFFER消息分组;如果不是动态主机配置扩展协议的消息分组,则将其丢弃;

    (4)客户端收到DHCPOFFER消息分组后,验证该消息分组是否是动态主机配置扩展协议的消息分组,如果该消息分组是动态主机配置扩展协议的消息分组,则记录有关动态主机配置协议参数,服务器地址,脚本语言解释执行程序等内容,否则丢弃该消息分组,同时客户端向服务器发送DHCPREQUEST消息分组并等待服务器的同意应答;

    (5)服务器收到DHCPREQUEST消息分组后,向客户端发送DHCPACK消息分组作为应答。

    上述中的步骤2)具体包括如下的步骤:

    (1)客户端收到DHCPACK消息分组后,验证该消息分组是否是动态主机配置扩展协议的消息分组,如果该消息分组是动态主机配置扩展协议的消息分组,则记录相关的内容,否则丢弃该消息分组;同时客户端根据返回的内容向服务器发出请求下载脚本语言解释执行程序的传输请求;

    (2)服务器接收到客户端的程序传输服务的请求后,利用主动程序传输协议的单播或多播方式向客户端传送脚本语言解释执行程序。

    上述中的步骤3)具体包括如下的步骤:

    (3)客户端接收完脚本语言解释执行程序,并将其存储在本地内存中;客户端加载执行脚本语言解释执行程序,初始启动代码释放系统控制权,脚本语言解释执行程序初始化脚本语言解释执行的环境;

    (4)客户端脚本语言解释执行的环境解释执行语言脚本,在此阶段,用户使用键盘选择需要加载的操作系统。

    上述中的步骤4)具体包括如下的步骤:

    (1)客户端根据用户选择的操作系统的内核镜像的程序名称、路径或摘要,向服务器发出请求下载操作系统内核镜像的程序传输请求;

    (2)服务器接收到客户端发出的程序传输服务的请求后,利用主动程序传输协议的单播或多播方式向客户端传送操作系统内核镜像;

    (3)客户端接收操作系统内核镜像并将其存储在本地内存中,客户端再利用多操作系统加载器加载执行操作系统内核镜像,至此,操作系统加载完毕。

    上述所说的初始启动代码的组成如图2所示,包括如下的四个部分:

    1)网卡驱动以及相关协议;

    2)动态主机配置扩展协议的客户端代码;

    3)主动程序传输协议客户端代码;

    4)脚本语言解释执行程序加载器。

    初始启动代码启动的过程如图3所示,其步骤包括:

    1)计算机加电;

    2)初始启动代码ROM初始化;

    3)执行BIOS INT 19h;

    4)初始启动代码检查自身代码的完整性;

    5)本地初始化;

    6)初始化网络环境。

    上述所说的动态主机配置扩展协议是对动态主机配置协议DHCP的选项进行自定义而得到的,包括如下的内容:

    1)标签号为60的选项,该选项的值定义为“MRBM-EDHCPSEClient”;

    2)标签号为43的选项,该选项的值定义为“03:05:08:00:00:00:ff:ff”;

    3)标签号为165的选项,该选项的用来传递给脚本语言解释执行程序的参数;

    4)标签号为138的选项,该选项定义为主动程序传输协议进行传输程序时的多播地址;

    5)标签号为139的选项,该选项的含义为主动程序传输协议以多播方式传输程序时客户端监听主动程序传输协议数据包的UDP端口;

    6)标签号为140的选项,该选项的含义为主动程序传输协议以多播方式传输程序时服务器监听主动程序传输协议请求的UDP端口;

    7)标签号为141的选项,该选项的含义为客户端重发主动程序传输协议请求前等待的时间;

    8)标签号为142的选项,该选项的含义为服务器监听主动程序传输协议请求的延迟时间;

    9)标签号为143的选项,该选项的含义为主动程序传输协议要传输程序的摘要。

    上述所说的主动程序传输协议包括如下三种数据包:

    1)读请求包;

    2)数据应答包:

    3)错误包。

    主动程序传输协议在客户端下载程序时的步骤如下:

    1)客户端发出读请求包,该数据包中包含有程序的名称或摘要以及请求的数据块的块号,初始为1;

    2)服务器收到客户端的读请求包后,检查程序是否存在,如果存在,则发送数据包,否则发出错误包;

    3)客户端如果收到数据包,则检查数据包中的块号是否存在,如果存在则丢弃该数据包,如果不存在,则保留在缓冲区。如果收到的数据块的大小不足512个字节,则转6),否则将块号加1,转1);

    4)客户端如果收到错误的包,则终止传输过程,并提示用户;

    5)客户端如果在一定时间(由DHCPACK消息分组中的主动程序传输等待时间选项决定)后,如果没有收到服务器的应答消息,则重发请求,如果重发次数到达了10次,则终止传输过程,并向用户报告;

    6)如果传输使用的是摘要的方法,则对程序进行基于摘要的检查,如果程序正常通过检查,则转8),否则转7);

    7)表明传输过程出现了错误,需要重新开始传输,如果重新开始的次数超过了3次,则终止传输,并向用户报告。否则转1);

    8)传输正确,正常结束传输过程。

    上述所说的主动程序传输协议在多播时客户端下载程序的过程,其步骤如下:

    1)多播监听;

    2)多播打开;

    3)多播关闭。

    上述所说的操作系统的内核镜像的格式如图7所示,内容如下:

    1)内核镜像标识,目前的值为05h,0ah,0ah,05h,作为内核镜像的标识;

    2)内核镜像在内存中的装载地址;

    3)内核镜像的首次执行地址,当内核镜像加载程序成功地装载到装载地址后,跳转到执行地址处执行,从而释放系统的控制权;

    4)内核镜像的大小,该长度是指内核镜像为解压前的大小;

    5)内核镜像解压后所占用的内存大小;

    6)程序的真正数据区。

    本发明的方法的主要技术特点是:

    一、在客户端使用一段称为初始启动代码的代码,该代码驻留在主板或网卡设备的ROM或EPROM中。初始启动代码主要由四部分组成:网卡驱动以及相关的网络协议代码;动态主机配置扩展协议客户端代码;主动程序传输协议客户端代码;脚本语言解释执行程序加载器。服务器为客户端的启动提供服务,主要包括动态主机配置协议服务和主动程序传输协议的程序传输服务。通过客户端和服务器的一系列的交互过程,实现客户端从服务器上下载用户选择的操作系统的内核镜像。

    二、使用扩展的动态主机配置协议。为了避免网络上其他动态主机配置协议服务器对本方法提供的动态主机配置协议的影响,本方法利用动态主机配置协议的60和43标签来标识本方法所使用的动态主机配置协议服务。这使本方法具有可靠性。同时,我们还对动态主机配置协议的165,138-143标签进行了定义,这一定义的主要目的是为了使主动程序传输服务能够支持多播,从而减少多台计算机并发启动时对网络流量的冲击。这使本方法具有很强的扩展能力。

    三、本方法所使用的主动程序传输协议简单,安全。该传输协议是基于UDP协议的,因而实现简单。主动程序传输协议的数字签名技术,保护程序在传输过程中不被恶意篡改,也保证了传输的准确可靠。该协议是一个无状态协议,它使得在传输过程中计算机能够自动进行恢复,非常健壮。同时,主动程序传输协议能够支持多播传输,大大减少了本方法对网络带宽的依赖性。

    四、脚本语言解释执行程序的加载执行为脚本语言的解释执行提供了一个类似操作系统的环境。通过对脚本语言的解释执行,能够接受用户的输入,让用户选择操作系统。这使得本方法能够支持多操作系统的远程启动。

    五、通过对操作系统内核镜像的格式进行统一规定,本方法能够避开具体操作系统加载在内存分配等方面的不一致。从而达到了能够对多操作系统使用一致的方法来进行加载的效果。

    表1是本发明的方法与传统的RPL远程启动方法以及PXE启动方法的比较结果。

    表1本发明的方法,RPL和PXE的比较表

    综上所述,本发明方法可靠、安全、高效,使用简单,并且能够支持多操作系统的启动。可用于网络计算机的远程启动、PC的多操作系统远程启动,还可以用于智能家电的远程启动,在信息家电领域有很好的应用前景。

    【附图说明】

    图1为本发明提出的网络环境下计算机远程启动的流程图。

    图2为本实施例初始启动代码的结构图。

    图3为本实施例初始启动代码启动过程的示意图。

    图4为本实施例主动程序传输协议包格式的示意图。

    图5为本实施例主动程序传输协议多播监听过程的流程图。

    图6为本实施例主动程序传输协议多播打开过程的流程图。

    图7为本发明操作系统内核镜像格式组成的示意图。

    【具体实施方式】

    下面结合附图及实施例更加详细地说明本发明的内容。

    本发明提出了一种网络环境下计算机远程启动法的实施例。该实施例是基于客户/服务器模型的,分为服务器和客户端两部分。服务器为客户端计算机提供启动服务。

    本实施例的具体实现方法包括以下步骤:

    1初始启动代码进行初始化。该过程包括检查代码自身的合法性和完整性;初始化本机环境和网络环境等。

    2初始启动代码驱动网卡工作,并广播DHCPDISCOVER消息分组,请求本机的IP地址,网关地址,启动服务器地址,脚本语言解释执行程序等。在本实施例中,客户端广播的DHCPDISCOVER消息分组中包含如下的内容:

    1)第60号标签,其含义是产品类别标识(Class ID),设置为:“MRBM-EDHCPSEClient”。

    2)第43号标签,该选项的含义是与产品相关的特定信息,设置为“03:05:08:00:00:00:ff:ff”。

    根据以上两个选项域,就可以判断一个动态主机配置协议的消息分组是否是动态主机配置扩展协议的消息分组。

    3服务器接收到DHCPDISCOVER消息分组后,检查第60号和43号选项,如果是动态主机配置扩展协议的消息分组,则向客户端发送应答的DHCPOFFER消息分组。如果不是动态主机配置扩展协议的消息分组,则将其丢弃。

    4客户端收到DHCPOFFER消息分组后,验证该消息分组是否是动态主机配置扩展协议的消息分组,如果该消息分组是动态主机配置扩展协议的消息分组,则记录有关的信息,否则丢弃该消息分组。其记录的内容包括:

    1)动态主机配置服务提供的客户端IP地址以及其他参数。

    2)服务器的地址。

    3)脚本语言解释执行程序的程序名称(如果使用摘要标识的话,则是程序的摘要)。

    4)如果有,记录主动程序传输协议多播方式时客户端和服务器所使用的端口。

    5)其他必要的参数。

    同时客户端向服务器发送DHCPREQUEST消息分组并等待服务器的同意应答。

    5服务器收到DHCPREQUEST消息分组后,向客户端发送DHCPACK消息分组作为应答。该消息分组包含的内容有:

    1)动态主机配置协议服务提供的客户端IP地址以及其他参数。

    2)服务器的地址。

    3)脚本语言解释执行程序的程序名称或者摘要。

    4)主动程序传输协议多播方式时客户端和服务器所使用的端口。

    5)其他参数。

    6客户端收到DHCPACK消息分组后,验证该消息分组是否是动态主机配置扩展协议的消息分组,如果该消息分组是动态主机配置扩展协议的消息分组,则记录相关的内容,否则丢弃该消息分组。同时客户端根据返回的内容向服务器发出请求下载脚本语言解释执行程序的传输请求。

    7服务器接收到客户端的程序传输服务的请求后,利用主动程序传输协议的单播或多播方式向客户端传送脚本语言解释执行程序。

    8客户端接收完脚本语言解释执行程序,并将其存储在本地内存中。客户端加载执行脚本语言解释执行程序,初始启动代码释放系统控制权。脚本语言解释执行程序初始化脚本语言解释执行的环境。

    9客户端脚本语言解释执行的环境解释执行语言脚本,在此阶段,用户使用键盘选择需要加载的操作系统。

    10客户端根据用户选择的操作系统的信息,指操作系统镜像的程序名称、路径或摘要,向服务器发出请求下载操作系统内核镜像的程序传输请求。

    11服务器接收到客户端发出的程序传输服务的请求后,利用主动程序传输协议的单播或多播方式向客户端传送操作系统内核镜像。

    12客户端接收操作系统内核镜像并将其存储在本地内存中。客户端再利用多操作系统加载器加载执行操作系统内核镜像。至此,操作系统加载完毕。

    下面对每个步骤的实施进行更详细的说明,并给出相应的实施例。

    本实施例的步骤1的详细说明:

    初始启动代码的搁置方法。

    根据现在标准BIOS启动规范(BIOS Boot Specification),计算机加电自检通过后,主要搜索下面可用于启动OS的设备:

    1)BIOS意识设备(BIOS Aware IPL Devices,BAID),指软盘、硬盘和SCSI设备。

    2)PnP卡设备。一般指带有可选ROM的网络设备,该方法又可分为BCV(BootConnection Vector)方法和BEV(Bootstrap Entry Vector)方法。BCV方法利用INT13h钩子程序来实现。BEV方法通过PnP扩展头(PnP Expansion Header)结构中的启动程序入口向量(BEV)来指示ROM中的OS加载程序。

    3)传统卡设备。指带有可选ROM的非PnP卡设备(例如ISA卡设备)。这种方法的可选ROM的地址必须在内存统一编址中C0000h和EFFFFh间2k边界处。

    本实施例的初始启动代码的搁置利用BEV方法来实现,即在PnP网卡上增加一个可选ROM的办法。在该ROM中驻留初始启动代码,计算机加电自检后,将把计算机的控制权交给初始启动代码。但是从原理上说,初始启动代码的驻留和启动也可通过上述中的别的方法来实现。在用于嵌入式设备时,初始启动代码ROM也可以安置在主板上。

    本实施例初始启动代码的主要组成如图2所示,各个部分的功能分别描述如下:

    1)网卡驱动以及相关协议。该部分代码的功能主要是初始化网卡,使网卡工作。不同网卡设备该部分代码是不一样的。在本发明的实施例中,网络设备上可选ROM中只有本网卡的驱动代码。相关的协议主要是基于TCP/IP的协议栈。但是在实施例的初始启动代码中,不是一个完整的TCP/IP协议,该协议栈只实现了IP层的简单功能(发包和收包)以及UDP协议。在实现上也没有严格按照层的概念。所有的这些手段,都是为了能在把代码限制在32KB的范围内。

    2)动态主机配置扩展协议的客户端代码。该部分的功能主要是利用动态主机配置协议与服务器上的动态主机配置协议服务进行交互,从而获得本机的相关标识以及其他信息。关于动态主机配置扩展协议实施中的具体内容,我们在后面进行详细地说明。

    3)主动程序传输协议客户端代码。主动程序传输协议是一个程序传输协议,利用该协议客户端可以从服务器上下载程序到本机。关于主动程序传输协议的具体内容,我们将在后面进行详细地说明。

    4)脚本语言解释执行程序加载器。该加载器主要用来脚本语言解释执行程序。由于脚本语言解释执行程序的代码短小,只是一个脚本的解释执行环境,这部分代码的功能比较简单。

    初始启动代码ROM的头结构。该头结构是BIOS与可选ROM进行交互的说明信息。标准的可选ROM的结构如表2所示:

                      表2标准可选ROM的头结构    偏移    长    值    描述    备注    0h    2h    AA55    签名    标准    2h    1h    可变    可选ROM长度    标准    3h    4h    可变    初始化向量    标准    7h    13    可变    保留    标准    1Ah    2h    可变    扩展头结构偏移量    PnP

    为了与标准的可选ROM兼容,只对保留区进行了扩展。本实施例中初始启动代码ROM的头结构如表3所示:

                     表3初始启动代码ROM的头结构偏移量长度名称内容 0h 2h签名55h,0AAh 2h 1hROM长度可选ROM长度,以512字节为单位 3h 4h初始化入口初始化向量 7h Bh保留不定 12h 8h初始启动代码标识‘MRBMv1.0’ 1Ah 2h可变扩展头结构偏移量

    本实施例初始启动代码的启动过程如图3所示。其步骤如下:

    1计算机加电:

    计算机加电后将进行自检(Power-On Self Test),即所谓的POST过程。BIOS将对计算机的设备进行初始化,设置中断,初始化输入输出设备,并对设备进行资源的分配等。这一工作完成后,内存的使用情况如下:

             表4计算机加电video初始化后的内存使用情况基本内存地址长度描述0h400h中断向量表400h100h系统BIOS数据段500h可变空闲基本内存(部分区域可能被系统BIOS使用)9F800可变扩展BIOS数据区高端内存地址长度描述A0000h20000hVideo RAM(典型情况下)C0000h8000hVideo ROM(典型情况下)C8000h可变可选ROM和高端内存E0000h10000h系统BIOSF0000h10000h系统BIOS扩展内存长度描述100000h可变空闲扩展内存

    2初始启动代码ROM初始化:

    BIOS在初始化的过程中将检查到初始启动代码ROM的存在,并读取ROM中的初始化向量,见表3。然后BIOS将执行初始化过程。该初始化过程将对网卡进行必要的配置。该过程结束后,内存的使用情况如下:

             表5初始启动代码ROM初始化后的内存使用情况基本内存地址长度描述0h400h中断向量表400h100h系统BIOS数据段500h可变空闲基本内存(部分区域可能被系统BIOS使用)9F800可变扩展BIOS数据区高端内存地址长度描述A0000h20000hVideo RAM(典型情况下)C0000h8000hVideo ROM(典型情况下)C8000h8000h初始启动代码ROMD0000h可变其他可选ROM和高端内存E0000h10000h系统BIOSF0000h10000h系统BIOS扩展内存长度描述100000h可变空闲扩展内存

    3执行BIOS INT 19h:

    INT 19h是BIOS POST过程中的最后一步,INT 19h扫描系统中可以启动操作系统的设备。如果能找到系统的启动设备,INT 19h并将控制权移交给启动设备上的启动程序。INT 19h将根据初始启动代码ROM头结构中的扩展头结构偏移地址,找到扩展头结构。即插即用设备的扩展头结构如表6所示:

                              表6即插即用设备扩展头结构偏移量长度值描述备注0h4字节‘$PNP’签名标识与设备无关04h字节不定保留01h05h字节不定长度,以16字节为单位与设备无关06h字不定下一头结构的偏移地址(如果没有则为0000h)与设备无关08h字节00h保留与设备无关09h字节不定校验和与设备无关0Ah双字不定设备标识与PnP相关0Eh字不定厂家字符串指针(可选)与PnP相关10h字不定产品名字字符串指针(可选)与PnP相关12h3字节不定设备类型代码与PnP相关15h字节不定设备指示器与PnP相关16h字不定BCV向量,如果没有则为0000h与PnP相关18h字不定断开向量(Disconnect Vector),没有则为0000h与PnP相关1Ah字不定启动程序入口点向量(BEV),如果没有则为0000h与PnP相关1Ch字0000h保留与PnP相关1Eh字不定静态资源信息向量(Static ResourceInformation Vector),如果没有则为0000h与PnP相关

    根据扩展头结构中的启动程序入口点,BIOS跳转到此处执行,到此,初始启动代码掌握了计算机的控制权。

    4初始启动代码检查代码的完整性:

    初始启动代码的完整性检查主要是通过对代码结尾的标志码“AA:00:55:00:FF:FF”进行检查,确保代码的完整无误。如果不完整,则该过程需要再次读取初始启动代码或者自动放弃,并将控制权交给INT 19h。

    5本地初始化:

    初始启动代码的初始化。检测计算机的内存模式(实模式还是保护模式)。如果是保护模式,则需要切换到实模式。初始启动代码将设立自己的代码段,数据段,堆栈段。

    6初始化网络环境:

    初始启动代码启动网卡开始工作,建立TCP/IP协议栈。到此,初始启动代码已经开始工作。

    该过程结束后,内存的分配使用情况如下:

                     表7初始启动代码ROM启动后的内存使用情况基本内存地址长度描述0h400h中断向量表400h100h系统BIOS数据段500h可变空闲基本内存(部分区域可能被系统BIOS使用)95800h2000hCPU堆栈段97800h4000h初始启动代码的数据段

    9B800h4000h初始启动代码的代码段9F800h可变扩展BIOS数据区高端内存地址长度描述A0000h20000hVideo RAM(典型情况下)C0000h8000hVideo ROM(典型情况下)C8000h8000h初始启动代码ROMD0000h可变其他可选ROM和高端内存E0000h10000h系统BIOSF0000h10000h系统BIOS扩展内存长度描述100000h可变空闲扩展内存本实施例的步骤2的详细说明:

    步骤2中涉及的问题就是本方法是如何扩展定义动态主机配置协议的,即动态主机配置扩展协议的定义和用法。

    动态主机配置扩展协议是在IETF RFC2131的基础上通过定义动态主机配置协议的消息域以及可选项的含义而得到的。动态主机配置协议能够为Internet上的主机提供网络配置参数,诸如计算机的IP地址,路由信息,TTL和最大包长等。动态主机配置协议包括了两个方面的内容,一个是从服务器到主机的配置参数传递协议;另一个是给主机分配网络地址的机制。动态主机配置协议共有两种类型的消息,一种是要求消息(BOOTREQUEST),一种是应答消息(BOOTREPLY)。动态主机配置协议消息分组格式的各个域的长度(以OCTETS为单位,8位比特)和含义如表8所示。

                    表8动态主机配置协议消息各个域含义的说明域名长度描述op 1消息码,1为BOOTREQUEST,2为BOOTREPLYhtype 1硬件地址类型hlen 1硬件地址长度hops 1客户端将其置为0,如果使用中继代理,则可使用这一域xid 4事务ID,由客户端选择的随机数,用以表示客户端和主机一次通信过程的标识secs 2由客户端填写,其含义为客户端重新发起DHCP过程前等待的秒数flags 2标志,如果为广播,则第一位为’B’,其他为为0ciaddr 4客户端IP地址,只有在客户端处于BOUND,RENEW或REBOUNDINF状态时才填充yiaddr 4客户端IP地址siaddr 4用于启动过程的下一服务器的地址giaddr 4中继代理的IP地址chaddr 16客户端硬件地址sname 64服务器主机名字,以NULL结束,可选项file 128启动文件名,以NULL结束options不定可选的参数域。在IETF RFC2132中有已经定义的可选参数的详细说明。

    在本实施例中,利用动态主机配置协议来配置客户端的主机参数,并利用file域传递需要下载的脚本语言解释执行程序。

    当网络上存在多个动态主机配置协议服务器的时候,根据动态主机配置协议的规定,客户端将随机选择一个服务器为其服务。在本实施例中,这种情况将导致混乱。为了增强本方法的健壮性和安全性,本实施例对动态主机配置协议的可选参数域进行了扩展定义。同时,为了满足主动程序传输协议多播的要求,本实施例也扩展定义了其他一些标签。本实施例对动态主机配置协议的扩展定义见表9。根据IETF RFC2132的规定69以后的标签都为未定义的标签。

    表9动态主机配置扩展协议对选项域的扩展定义标签名    标签长度描述

    号商家标识60 18该选项用来表明该消息分组是动态主机配置扩展协议的消息分组,其值必须为“MRBM-EDHCPSEClient”商家相关信息43 8服务相关信息,动态主机配置扩展协议的定义为“03:05:08:00:00:00:ff:ff”。使用60和43两个标签,本方法能够避免客户端对来自非动态主机配置扩展协议的消息分组进行响应。消息类型53 1消息类型,1=DHCPDISCOVER,2=DHCPOFFER,3=DHCPREQUEST,4=DHCPDECLINE,5=DHCPACK,6=DHCPNAK,7=DHCPRELEASE,8=DHCPINFORM脚本语言解释执行程序参数165不定指传递给脚本语言解释执行程序的参数。主动程序传输协议多播地址138 4主动程序传输协议服务器传送程序时的多播地址。主动程序传输协议客户端端口139 2使用多播方式时主动程序传输协议客户端监听应答的UDP端口。主动程序传输协议服务器端口140 2使用多播方式时主动程序传输协议服务器监听请求的UDP端口。主动程序传输协议等待时间141 2主动程序传输协议客户端重发请求前等待的时间,以秒为单位。主动程序传输协议监听时延142 2主动程序传输协议服务器监听请求的延迟时间,以秒为单位。程序摘要143不定下一步主动程序传输协议需要传输的程序的摘要。该摘要使用MD5单向哈希函数生成的,能保证程序正确无误的传输,也能防止程序在传输的过程中被恶意篡改。

    DHCPDISCOVER消息分组的是由客户端向标准动态主机配置协议服务器UDP端口67广播发送的。DHCPDISCOVER分组的内容必须按照RFC 2131的规定,并加上本发明的扩展内容。其格式和内容如表10所示。

                         表10 DHCPDISCOVER消息分组的格式及内容动态主机配置协议头域(长度)值备注op(1)1 BOOTP REQUEST操作码Htype(1)*hlen(1)*hops(1)*xid(4)*secs(2)*flags(2)*ciaddr(4)0.0.0.0客户端必须置为0.0.0.0yiaddr(4)*客户端端的IP地址由服务器提供siaddr(4)*下一步提供服务的服务器IP地址giaddr(4)*chaddr(16)xx-xx-xx-xx-xx-xx-xx-xx客户端MAC地址sname(64)*可以被选项中的66标签覆盖bootfile(128)*可以被选项中的67标签覆盖99.130.83.99 (Magic Cookie,动态主机配置协议可选项域的起始标志)动态主机配置协议选项标签名标签号长度说明消息类型53 1 1=DHCPDISCOVER消息长度57 2最大的动态主机配置协议消息分组长度商家标识60 18该选项用来表明该消息分组是动态主机配置扩展协议的消息分组,其值必须为“MRBM-EDHCPSEClient”

    商家相关信息43 8值为“03:05:08:00:00:00:ff:ff”。

    当客户端发出DHCPDISCOVER消息后,客户端必须准备接收响应。

    本实施例的步骤3的详细说明:

    服务器收到DHCPDISCOVER消息分组后,将发出DHCPOFFER响应消息分组。DHCPOFFER消息分组的格式和内容也必须遵循RFC 2131和RFC 2132的有关规定。DHCPOFFER消息分组的内容如表11所示。

                              表11 DHCPOFFER消息分组的格式及内容动态主机配置协议头域(长度)值备注op(1)2BOOTP REPLY操作码htype(1)*hlen(1)*hops(1)*xid(4)*secs(2)*flags(2)*ciaddr(4)0.0.0.0服务器总是置为0.0.0.0yiaddr(4)a0,a1,a2,a3客户端的IP地址,由服务器提供siaddr(4)a0,a1,a2,a3下一步启动服务器的服务器IP地址Giaddr(4)*Chaddr(16)*客户端MAC地址Sname(64)*可以被选项中的66标签覆盖Bootfile(128)*可以被选项中的67标签覆盖99.130.83.99动态主机配置协议选项标签名标签号长度说明消息类型53 1 2=DHCPOFFER消息长度57 2最大的动态主机配置协议消息分组长度商家标识      60 18该选项用来表明该消息分组是动态主机配置扩展协议的消息分组,其值必须为“MRBM-EDHCPSEClient”。商家相关信息43 8值为“03:05:08:00:00:00:ff:ff”。脚本语言解释执行程序参数165不定指传递给脚本语言解释执行程序的参数。主动程序传输协议多播地址138 4主动程序传输协议服务器传送文件时的多播地址。当不使用主动程序传输协议的多播功能时,该标签不使用。主动程序传输协议客户端端口139 2使用多播方式时主动程序传输协议客户端监听应答的UDP端口。主动程序传输协议服务器端口140 2使用多播方式时主动程序传输协议服务器监听请求的UDP端口。主动程序传输协议等待时间141 2主动程序传输协议客户端重发请求前等待的时间,以秒为单位。主动程序传输协议监听时延142 2使用多播方式时主动程序传输协议服务器监听请求的延迟时间,以秒为单位。当不使用主动程序传输协议的多播功能时,该标签不使用。程序摘要143不定下一步主动程序传输协议需要传输的程序的摘要。如果使用了bootfile域,则该域为空。

    DHCPOFFER消息分组发出后,如果客户端没有收到,则客户端将根据超时情况重新发送DHCPDISCOVER消息分组。客户端将重新发送DHCPDISCOVER消息分组四次,等待的超时时间分别为4,8,16和32秒。如果四次发送后还未接收到DHCPOFFER响应消息分组,客户端将放弃尝试,并报告用户。

    本实施例的步骤4的详细说明:

    客户端在接收到DHCPOFFER消息分组以后,验证该消息分组是否是动态主机配置扩展协议的消息分组,如果不是则丢弃该分组。否则必须记录DHCPOFFER消息分组所提供的所有相关的信息,其内容包括:

    1)动态主机配置服务提供的客户端IP地址以及其他参数。

    2)服务器的地址。

    3)脚本语言解释执行程序的程序名称(如果使用摘要标识的话,则是程序的摘要)。

    4)如果有,记录主动程序传输协议多播方式时客户端和服务器所使用的端口。

    5)其他必要的参数。

    同时,客户端必须发送DHCPREQUEST消息分组请求确认。DHCPREQUEST消息分组的格式和内容如表12所示。

                   表12 DHCPREQUEST消息分组的格式及内容动态主机配置协议头域(长度)值备注op(1)1 BOOTP REQUEST操作码htype(1)*hlen(1)*hops(1)*xid(4)*secs(2)*flags(2)*ciaddr(4)a0,a1,a2,a3服务器总是置为0.0.0.0yiaddr(4)0.0.0.0客户端端的IP地址,由服务器提供siaddr(4)0.0.0.0下一步启动服务器的服务器IP地址giaddr(4)0.0.0.0chaddr(16)xx-xx-xx-xx-xx-xx-xx-xx客户端MAC地址sname(64)*可以被选项中的66标签覆盖bootfile(128)*可以被选项中的67标签覆盖99.130.83.99动态主机配置协议选项标签名标签号长度说明消息类型53 13=DHCPREQUEST消息长度57 2最大的动态主机配置协议消息分组长度商家标识60 18该选项用来表明该消息分组是动态主机配置扩展协议的消息分组,其值必须为“MRBM-EDHCPSEClient”。商家相关信息43 8值为“03:05:08:00:00:00:ff:ff”。

    本实施例的步骤5的详细说明:

    服务器在收到客户端的DHCPREQUEST消息分组后,更新本地的IP地址分配数据库,并用DHCPACK消息分组作为对DHCPREQUEST消息分组的应答。在DHCPREQUEST消息分组中,包含的内容有:

    1)动态主机配置协议服务提供的客户端IP地址以及其他参数。

    2)服务器的地址。

    3)脚本语言解释执行程序的程序名称或者摘要。

    4)主动程序传输协议多播方式时客户端和服务器所使用的端口。

    5)其他参数。

    DHCPACK消息分组的格式和内容如表13所示。

                           表13 DHCPRACK消息分组的格式及内容动态主机配置协议头域(长度)值备注op(1)2 BOOTP REPLY操作码htype(1)*hlen(1)*hops(1)*xid(4)*secs(2)*flags(2)*ciaddr(4)0.0.0.0服务器总是置为0.0.0.0yiaddr(4)A0,a1,a2,a3客户端端的IP地址,由服务器提供siaddr(4)A0,a1,a2,a3下一步启动服务器的服务器IP地址giaddr(4)*chaddr(16)*客户端MAC地址sname(64)*可以被选项中的66标签覆盖bootfile(128)启动文件名称可以被选项中的67标签覆盖99.130.83.99动态主机配置协议选项标签名标签号长度说明消息类型53 13=DHCPREQUEST消息长度57 2最大的动态主机配置协议消息分组长度商家标识60 18该选项用来表明DHCP消息是EDHCP消息,其值必须为“MRBM-EDHCPSEClient”。商家相关信息43 8值为“03:05:08:00:00:00:ff:ff”。脚本语言解释执行程序参数165不定指传递给脚本语言解释执行程序的参数。主动程序传输协议多播地址138 4主动程序传输协议服务器传送文件时的多播地址。当不使用主动程序传输协议的多播功能时,该标签不使用。主动程序传输协议客户端端口139 2使用多播方式时主动程序传输协议客户端监听应答的UDP端口。主动程序传输协议服务器端口140 2使用多播方式时主动程序传输协议服务器监听请求的UDP端口。主动程序传输协议等待时间141 2主动程序传输协议客户端重发请求前等待的时间,以秒为单位。主动程序传输协议监听时延142 2使用多播方式时主动程序传输协议服务器监听请求的延迟时间,以秒为单位。当不使用主动程序传输协议的多播功能时,该标签不使用。程序摘要143不定下一步主动程序传输协议需要传输的程序的摘要。如果使用了bootfile域,则该域为空。

    本实施例的步骤6的详细说明:

    客户端接收到DHCPACK消息分组以后,将确定本机可以使用的IP地址信息。并记录其他的信息,可参见表13。其内容包括:

    1)动态主机配置服务提供的客户端IP地址以及其他参数。

    2)服务器的地址。

    3)脚本语言解释执行程序的名称或者摘要。

    4)如果有,记录主动程序传输协议多播时客户端和服务器所使用的端口。

    5)其他必要的参数。

    到现在为止,动态主机配置扩展协议的交互过程完全结束。接下来的过程就是客户端利用主动程序传输协议向服务器请求传输脚本语言解释执行程序的过程。

    上述的说明已经把动态主机配置扩展协议的具体实施细节进行了详细地说明。在本发明的实施例中,动态主机配置扩展协议的实现是对通过对现有的动态主机配置协议的配置文件进行设置来实现的。下面是动态主机配置扩展协议服务器的配置文件的一个例子(其中#号后面的是注释说明):

    本实施例的步骤7的详细说明:

    步骤6以及步骤7其实是客户端利用主动程序传输协议下载脚本语言解释执行程序的一个交互过程。主动程序传输协议是一个简单、安全、高效的程序传输协议,它的特点如下:

    1)协议简单,便于实现。因此该协议可以用于嵌入式的环境作为程序的传输协议;功能简单,它没有文件传输协议FTP所提供的目录及程序浏览的服务。

    2)安全性好。在程序的命名上,主动程序传输协议可以采用基于MD5的单向哈希函数做摘要的方法,能够实现程序正确的到达客户端,并防止程序在传输的过程中被恶意篡改。同时该协议没有写操作,不会对服务器造成由于写而产生的安全问题。

    3)基于UDP。原因主要是TCP太复杂,不便于在本方法中使用。为了可靠地传 输数据,该协议采用了客户端超时重发请求的方法。

    4)无状态性。主动程序传输协议没有连接的建立过程。

    5)支持多播方式。为了支持很大数量的客户端,解决并发启动的性能问题,该协议能够以多播方式传送数据,从而大大减少了并发启动时对网络带宽的冲击。

    主动程序传输协议采用固定的数据块大小进行传输。当客户端需要传输数据时,客户端向服务器提出请求。在客户端的请求包中包括程序的信息以及需要传输的数据块的块号。在该协议中,传输的数据采用固定大小的数据块(512 Byte)进行传输,因此服务器可以根据客户端提出的请求包中的数据块的块号计算出应该传输的数据。在传输的过程中,主动程序传输协议没有连接的建立过程。在服务器上,并不保存每个连接的传输状态。数据的传输由客户端来控制,客户端必须对已经传输的数据的状态有记录。如果客户端在一定时间内没有收到数据,它就重新发出请求。

    主动程序传输协议客户端和服务器UDP端口的选用。当不使用多播传输时,客户端使用1050端口。服务器监听1051端口。当使用多播方式传送数据时,客户端和服务器使用的端口由DHCPOFFER和DHCPACK消息中的相应选项域的值决定。参见表9。

    主动程序传输协议传输程序数据的过程如下:

    1客户端发出读请求包,该数据包中包含有程序的名称或摘要以及请求的数据块的块号,初始为1。

    2服务器收到客户端的读请求包后,检查程序是否存在。如果存在,则发送数据包,否则发出错误包。

    3客户端如果收到数据包,则检查数据包中的块号是否存在,如果存在则丢弃该数据包,如果不存在,则保留在缓冲区。如果收到的数据块的大小不足512个字节,则转6,否则将块号加1,转1。

    4客户端如果收到错误的包,则终止传输过程,并提示用户。

    5客户端如果在一定时间(由DHCPACK消息中的主动程序传输协议等待时间选项决定)后,如果没有收到服务器的应答消息,则重发请求,如果重发次数到达了10次,则终止传输过程,并向用户报告。

    6如果传输使用的是摘要的方法,则对程序进行基于摘要的检查,如果程序正常通过检查,则转8,否则转7。

    7表明传输过程出现了错误,需要重新开始传输,如果重新开始的次数超过了3次,则终止传输并向用户报告,否则转1。

    8传输正确,正常结束传输过程。

    主动程序传输协议的包格式。该协议共有三中包,分别为读请求包,数据应答包,错误包。各种包的格式如图4所示。其用法分别说明如下:

    读请求包:

    操作码表示包的种类。括号中的数字为该域的长度(以下同)。类型为1时表示使用程序名来标识需要传送的程序,为1时表示使用MD5摘要来标识需要传输的程序。可选项1和值1分别表示第一个选项和它的取值。当选项为’MUL’表示请求多播传送数据包。

    数据应答包:

    其中的块号从1开始连续编号。

    错误包:

    当传输过程发生错误的时候,服务器将向客户端发送错误包,客户端收到错误包后,立即终止传输过程,并向用户报告。

    主动程序传输协议对多播的支持。在主动程序传输时,如果DHCPOFFER和DHCPACK消息的选项域中发送了多播的参数,并且客户端也愿意使用多播方式来接收数据包,则客户端可以接收多播的主动程序传输协议数据包。客户端接收多播数据包分为四个阶段:监听,打开,接收和关闭。

    主动程序传输协议多播监听阶段:

    监听过程的流程图如图5所示。客户端通过监听主动程序传输协议的多播端口来收集有效的数据包。如果能够收集到所有需要的数据包,则客户端不需要进入打开阶段了。

    主动程序传输协议多播打开阶段:

    当在监听阶段客户端没有收集到一个数据包时,则进入打开阶段,使用单播方式从服务器接收数据。如果客户端收到了一个多播数据包,则又进入监听阶段。其过程如图6所示。

    多播接收阶段:

    客户端在这个阶段,接收从服务器上发出的多播数据包。

    多播关闭阶段:

    当客户端接收到所有数据包后,则客户端完成了所有的传输工作。进入下一步的工作。

    本实施例中的主动程序传输协议服务一直监听端口1051。传输服务服务器的工作步骤大体如下:

    1监听UDP 1051端口。

    2接收到主动程序传输协议读请求,判断需要传输的程序是否存在,如果不存在,则转10。

    3判断是否使用多播,如果使用则转7。

    4计算所需要传送的数据块。

    5如果系统中的线程数小于50,则新建立一线程。如果大于50,则选取一个老线程。

    6随机取一大于1024的未使用端口,使用新的线程或选取的老线程使用该端口向客户端发送数据。转1。

    7如果是使用多播传送数据,则首先发送第一块数据。

    8增大数据块的编号,继续发送多播数据。

    9如果程序数据全部多播结束,则终止多播传输。转1。

    10发送错误包。转1。

    本实施例的步骤8的详细说明:

    脚本语言解释执行程序下载后将被解开放置到内存地址为0x1000:0000的地方。此过程结束后,内存的使用情况如下:

                表14脚本语言解释执行程序下载后内存的使用情况基本内存地址长度描述0h400h中断向量表400h100h系统BIOS数据段500hEB00h空闲基本内存(部分区域可能被系统BIOS使用)10000h4000h脚本语言解释执行程序14000h不定空闲基本内存97000h800hCPU堆栈段97800h4000h初始启动代码的数据段9B800h4000h初始启动代码的代码段9F800h可变扩展BIOS数据区高端内存地址长度描述A0000h20000hVideo RAM(典型情况下)C0000h8000hVideo ROM(典型情况下)C8000h8000h初始启动代码可选ROMD0000h可变其他可选ROM和高端内存E0000h10000h系统BIOSF0000h10000h系统BIOS扩展内存长度描述100000h可变空闲扩展内存

    本实施例的步骤9的详细说明:

    脚本语言解释执行程序执行,取得系统控制权。此时的内存使用情况如下:

    表15脚本语言解释执行的环境加载后内存的使用情况基本内存地址长度描述

    0h 400h中断向量表400h 100h系统BIOS数据段500h 92F00h空闲基本内存(部分区域可能被系统BIOS使用)93400h 400h脚本语言解释执行环境的堆栈段93800h 4000h脚本语言解释执行环境的代码段97800h 4000h脚本语言解释执行环境的数据段9B800h 4000h初始启动代码的代码段9F800h 可变扩展BIOS数据区高端内存地址 长度描述A0000h 20000hVideo RAM(典型情况下)C0000h 8000hVideo ROM(典型情况下)C8000h 8000h初始启动代码可选ROMD0000h 可变其他可选ROM和高端内存E0000h 10000h系统BIOSF0000h 10000h系统BIOS扩展内存 长度描述100000h 可变空闲扩展内存

    初始启动代码的代码段的存在是为了复用部分的代码,比如网卡驱动和TCP/IP协议栈。当然在实现中,我们也可以不考虑使用初始启动代码,而直接利用脚本语言解释执行程序来进行网络环境的初始化,但必须继承初始启动代码所获得的主机配置信息。

    脚本语言解释执行的环境通过对脚本的解释执行,接受用户的输入。根据用户的选择,客户端利用主动程序传输协议下载操作系统内核镜像。

    在本实施例中,给出了一个脚本语言的例子。其主要功能是接受用户的输入,并根据用户的选择加载相应的操作系统内核镜像。

    该脚本语言是基于命令行的,命令后面是命令的参数,其格式为:

    Command parameter 1,parameter 2……

    下面是脚本语言的语言格式。

    语法规则:

    1命令以行为单位进行解析,行与行之间用换行或回车隔离

    2行的最大长度为255个字符

    3关键字或变量大小写不敏感

    4“为字符串的分隔符

    5$开始的字符串表示变量

    6转义符的使用:

    \b  后退

    \n  换行

    \r  回车

    \t  Tab

    \nnn用值为八进制数nnn的ASCII码代替

    \X  表示不在上述的字符中的字符X

       字符串表达式

    字符串是指以”开始和以”结束的一串字符。如:

    “Hello World!”

    数值表达式

    本脚本语言只使用32bitd的10进制整数,从-2,147,483,646到2,147,483,647。数值表达式使用

    数值表达式中可以包括正数和负数。

    表达式的形式为:expr1 op expr2,其中op的取值可以为:+,-,*,/,%;为了简单起见,各个运算符之间没有优先级的区别,用括号表示运算的顺序。

    例如:((4*6)+8)

    延迟命令

    delay命令可用于延迟,参数以秒为单位。

    例如:

        delay 3      延迟3秒

        delay 0.5    延迟0.5秒

    文件的命名

    文件名为字符串。它们必须用双引号括起来,文件名是大小写敏感的,可用转义符来表示特殊的字符。

    如果文件名不是以/开始,则默认为从/tftpboot目录下寻找。

    如果文件名中出现冒号,则冒号前的部分将被解释为计算机名。

    例如:

    “ald.image” 表示在/tftpboot目录下的文件

    “/tftpboot/ald.image”指绝对路径在/tftpboot下的文件名为ald.image的文件。

    “192.168.0.72:/tftpboot/ald.image”表示在IP地址为192.168.0.72计算机/tftpboot/目录下的ald.image文件。

    监控命令

    Echo:

    该命令的格式为:Echo“text”,其用途是在屏幕上回现字符串”text”

    Beep:

    该命令将使计算机发出声。

    控制命令

    Goto label:

    指跳转到标号为label的地方解释执行。

    If...:

    在本脚本语言中If命令只是检查表达式的值是否为真,为真则执行后面的命令,否则就继续往下执行。

    例如:

    If $val=”ERROR”Turnon

     Beep

      ...

    上面的脚本表示当变量val的值为”ERROR”时,则重启计算机,否则使计算机发声,并继续往下执行。

    Set:

    设置变量的值。

    例如:

    Set Vall=”sopca computer”

    Poweroff:

    关闭计算机。

    Turnon:

    重启计算机。

    与键盘相关的命令

    GetKey(var):

    等待用户输入一个键值,并存储在变量var中。

    WaitForKey duration:

    在用户按任意键前延迟duration秒。

    Input(var):

    从键盘读入一以回车结束的字符串。目前只支持30个字符。

    文本输出命令

    Print“text”:

    在当前屏幕出打印字符串

    内核镜像加载命令

    LoadImage“kernel image name”:

    加载内核镜像。

    下面是一个用上下箭头选择的菜单脚本例子。两个菜单分别启动windows98和Linux系统。

    本实施例的步骤10的详细说明:

    客户端根据用户的选择,向服务器(主动程序传输服务)发出下载操作系统内核镜像的传输请求。

    本实施例的步骤11的详细说明:

    服务器(主动程序传输服务)响应客户端的下载操作系统内核镜像的请求,传输操作系统内核镜像。

    本实施例的步骤12的详细说明:

    如果操作系统的内核镜像不大,则客户端利用主动程序传输协议下载操作系统内核镜像后,内存的使用情况如表16所示:

              表16操作系统内核镜像下载后内存的使用情况(小镜像)基本内存地址长度描述0h400h中断向量表400h100h系统BIOS数据段500hFB00空闲基本内存(部分区域可能被系统BIOS使用)10000h不定空闲内存93400h400h脚本语言解释执行环境的堆栈段93800h4000h脚本语言解释执行环境的代码段97800h4000h脚本语言解释执行环境的数据段9B800h4000h初始启动代码的代码段9F800h可变扩展BIOS数据区高端内存地址长度描述A0000h20000hVideo RAM(典型情况下)C0000h8000hVideo ROM(典型情况下)C8000h8000h初始启动代码可选ROMD0000h可变其他可选ROM和高端内存E0000h10000h系统BIOSF0000h10000h系统BIOS扩展内存长度描述300000h可变空闲扩展内存

    如果操作系统的内核镜像比较大,则客户端利用主动程序传输协议下载操作系统的内核镜像后,内存的使用情况如17所示:

              表17操作系统内核镜像下载后内存的使用情况(大镜像)基本内存地址长度描述0h400h中断向量表400h100h系统BIOS数据段500h不定空闲基本内存(部分区域可能被系统BIOS使用)93400h400h脚本语言解释执行环境的堆栈段93800h4000h脚本语言解释执行环境的码段97800h4000h脚本语言解释执行环境的数据段9B800h4000h初始启动代码的代码段9F800h可变扩展BIOS数据区高端内存地址长度描述A0000h20000hVideo RAM(典型情况下)C0000h8000hVideo ROM(典型情况下)C8000h8000h初始启动代码可选ROMD0000h可变其他可选ROM和高端内存E0000h10000h系统BIOSF0000h10000h系统BIOS扩展内存长度描述100000h200000h操作系统内核镜像300000h可变空闲扩展内存

    当操作系统内核镜像下载结束后,系统的控制权将交给多操作系统加载器。多操作系统加载器将根据内核镜像的格式,加载操作系统内核镜像。

    为了加载多操作系统的内核镜像,必须对内核镜像的格式加以规定,使用统一的内核镜像格式,这样加载器就能透明地加载各种操作系统的内核镜像。在Linux中,加载器工作在实模式下,操作系统内核镜像的大小不能超过1M。这在嵌入式系统中是完全满足需要的。但是在加载象Windows系统时就行不通了。这时需要先加载DOS内核,再在DOS环境中利用DOS工具启动Windows系统。但是对Linux的加载器而言,它不需要知道这些细节,它只是按照内核镜像的格式要求,在实模式下将内核镜像放置在规定的内存物理区域。然后多操作系统加载器跳转到该处执行,从而释放系统的控制权。

    本方法中操作系统的内核镜像的格式如图7所示,有关的含义说明如下:

    内核镜像标识。目前的值为05h,0ah,0ah,05h,作为内核镜像的标识。

    内核镜像在内存中的装载地址。

    内核镜像的首次执行地址。当内核镜像被加载程序成功地装载到装载地址后,加载程序将跳转到执行地址处执行,从而释放系统的控制权。

    内核镜像的大小。该大小是指内核镜像解压前的大小。

    内核镜像解压后所占用的内存大小。该大小是内核镜像解压后内核所占用的内存的大小。

    程序的真正数据区。指内核镜像使用的数据区的大小。

    至此,本发明所有的关于网络环境下计算机远程启动方法的实施步骤都已经进行了详细的说明,本实施例仅给出本发明的一种具体实现方法,当不能限定本发明的保护范围,凡对本实施例中所述方法的任何等同变换,均应属于本发明权利要求书中所述的保护范围。

一种网络环境下的计算机远程启动方法.pdf_第1页
第1页 / 共32页
一种网络环境下的计算机远程启动方法.pdf_第2页
第2页 / 共32页
一种网络环境下的计算机远程启动方法.pdf_第3页
第3页 / 共32页
点击查看更多>>
资源描述

《一种网络环境下的计算机远程启动方法.pdf》由会员分享,可在线阅读,更多相关《一种网络环境下的计算机远程启动方法.pdf(32页珍藏版)》请在专利查询网上搜索。

本发明属于计算机网络领域,其步骤包括:只读存储器中的初始启动代码在该计算机加电启动后使用动态主机配置扩展协议获得客户端计算机的标识;然后通过主动程序传输协议从服务器上下载一个脚本语言解释执行程序并加载执行;在该脚本语言解释执行的环境下,客户端通过对语言脚本的解释执行让用户选择需要加载的操作系统;客户端再利用主动程序传输协议从服务器上下载操作系统内核镜像并加载执行,从而实现了计算机的远程启动。本发明。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1