CN1334510A - 一种网络环境下的计算机远程启动方法 - Google Patents
一种网络环境下的计算机远程启动方法 Download PDFInfo
- Publication number
- CN1334510A CN1334510A CN 01142033 CN01142033A CN1334510A CN 1334510 A CN1334510 A CN 1334510A CN 01142033 CN01142033 CN 01142033 CN 01142033 A CN01142033 A CN 01142033A CN 1334510 A CN1334510 A CN 1334510A
- Authority
- CN
- China
- Prior art keywords
- client
- host
- protocol
- server
- option
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 208
- 238000013515 script Methods 0.000 claims abstract description 88
- 230000005540 biological transmission Effects 0.000 claims abstract description 85
- 230000008569 process Effects 0.000 claims description 126
- 230000015654 memory Effects 0.000 claims description 76
- 230000004913 activation Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 11
- 238000012384 transportation and delivery Methods 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 6
- 238000004064 recycling Methods 0.000 claims description 5
- 230000003139 buffering effect Effects 0.000 claims description 3
- 238000007689 inspection Methods 0.000 claims description 3
- 230000000717 retained effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 14
- 238000013404 process transfer Methods 0.000 description 12
- KKIMDKMETPPURN-UHFFFAOYSA-N 1-(3-(trifluoromethyl)phenyl)piperazine Chemical compound FC(F)(F)C1=CC=CC(N2CCNCC2)=C1 KKIMDKMETPPURN-UHFFFAOYSA-N 0.000 description 8
- 238000012360 testing method Methods 0.000 description 7
- 235000008694 Humulus lupulus Nutrition 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 210000001072 colon Anatomy 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 206010019233 Headaches Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006854 communication Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 231100000869 headache Toxicity 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4416—Network booting; Remote initial program loading [RIPL]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明属于计算机网络领域,其步骤包括:只读存储器中的初始启动代码在该计算机加电启动后使用动态主机配置扩展协议获得客户端计算机的标识;然后通过主动程序传输协议从服务器上下载一个脚本语言解释执行程序并加载执行;在该脚本语言解释执行的环境下,客户端通过对语言脚本的解释执行让用户选择需要加载的操作系统;客户端再利用主动程序传输协议从服务器上下载操作系统内核镜像并加载执行,从而实现了计算机的远程启动。本发明具有可靠、安全、高效,使用简单,并且能够支持多操作系统的启动的特点。本发明可用于网络计算机的远程启动,PC的多操作系统远程启动,还可以用于智能家电的远程启动,在信息家电领域有很好的应用前景。
Description
技术领域
本发明属于计算机网络领域,特别涉及网络环境下计算机远程启动的方法。
背景技术
个人计算机的出现,使得计算机变得比过去的大型计算机更加好用,界面友好,从而使计算机走进了人类的日常生活。然而,随着计算机的发展,软件越来越庞大,从而又使计算机的维护工作量非常大。企业和学校这种公共机房的维护管理,尤其是令系统管理员感到头疼的问题。因此,人们一直在寻找一种方法,希望能够减轻维护计算机系统的工作量,使计算机的使用越来越简单,而且又能够降低成本。
计算机网络的出现,使得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启动方法的比较结果。
综上所述,本发明方法可靠、安全、高效,使用简单,并且能够支持多操作系统的启动。可用于网络计算机的远程启动、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 | 1h | ROM长度 | 可选ROM长度,以512字节为单位 |
3h | 4h | 初始化入口 | 初始化向量 |
7h | Bh | 保留 | 不定 |
12h | 8h | 初始启动代码标识 | ‘MRBMv1.0’ |
1Ah | 2h | 可变 | 扩展头结构偏移量 |
本实施例初始启动代码的启动过程如图3所示。其步骤如下:
1计算机加电:
计算机加电后将进行自检(Power-On Self Test),即所谓的POST过程。BIOS将对计算机的设备进行初始化,设置中断,初始化输入输出设备,并对设备进行资源的分配等。这一工作完成后,内存的使用情况如下:
表4计算机加电video初始化后的内存使用情况
基本内存地址 | 长度 | 描述 |
0h | 400h | 中断向量表 |
400h | 100h | 系统BIOS数据段 |
500h | 可变 | 空闲基本内存(部分区域可能被系统BIOS使用) |
9F800 | 可变 | 扩展BIOS数据区 |
高端内存地址 | 长度 | 描述 |
A0000h | 20000h | Video RAM(典型情况下) |
C0000h | 8000h | Video ROM(典型情况下) |
C8000h | 可变 | 可选ROM和高端内存 |
E0000h | 10000h | 系统BIOS |
F0000h | 10000h | 系统BIOS |
扩展内存 | 长度 | 描述 |
100000h | 可变 | 空闲扩展内存 |
2初始启动代码ROM初始化:
BIOS在初始化的过程中将检查到初始启动代码ROM的存在,并读取ROM中的初始化向量,见表3。然后BIOS将执行初始化过程。该初始化过程将对网卡进行必要的配置。该过程结束后,内存的使用情况如下:
表5初始启动代码ROM初始化后的内存使用情况
基本内存地址 | 长度 | 描述 |
0h | 400h | 中断向量表 |
400h | 100h | 系统BIOS数据段 |
500h | 可变 | 空闲基本内存(部分区域可能被系统BIOS使用) |
9F800 | 可变 | 扩展BIOS数据区 |
高端内存地址 | 长度 | 描述 |
A0000h | 20000h | Video RAM(典型情况下) |
C0000h | 8000h | Video ROM(典型情况下) |
C8000h | 8000h | 初始启动代码ROM |
D0000h | 可变 | 其他可选ROM和高端内存 |
E0000h | 10000h | 系统BIOS |
F0000h | 10000h | 系统BIOS |
扩展内存 | 长度 | 描述 |
100000h | 可变 | 空闲扩展内存 |
3执行BIOS INT 19h:
INT 19h是BIOS POST过程中的最后一步,INT 19h扫描系统中可以启动操作系统的设备。如果能找到系统的启动设备,INT 19h并将控制权移交给启动设备上的启动程序。INT 19h将根据初始启动代码ROM头结构中的扩展头结构偏移地址,找到扩展头结构。即插即用设备的扩展头结构如表6所示:
表6即插即用设备扩展头结构
偏移量 | 长度 | 值 | 描述 | 备注 |
0h | 4字节 | ‘$PNP’ | 签名标识 | 与设备无关 |
04h | 字节 | 不定 | 保留 | 01h |
05h | 字节 | 不定 | 长度,以16字节为单位 | 与设备无关 |
06h | 字 | 不定 | 下一头结构的偏移地址(如果没有则为0000h) | 与设备无关 |
08h | 字节 | 00h | 保留 | 与设备无关 |
09h | 字节 | 不定 | 校验和 | 与设备无关 |
0Ah | 双字 | 不定 | 设备标识 | 与PnP相关 |
0Eh | 字 | 不定 | 厂家字符串指针(可选) | 与PnP相关 |
10h | 字 | 不定 | 产品名字字符串指针(可选) | 与PnP相关 |
12h | 3字节 | 不定 | 设备类型代码 | 与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启动后的内存使用情况
基本内存地址 | 长度 | 描述 |
0h | 400h | 中断向量表 |
400h | 100h | 系统BIOS数据段 |
500h | 可变 | 空闲基本内存(部分区域可能被系统BIOS使用) |
95800h | 2000h | CPU堆栈段 |
97800h | 4000h | 初始启动代码的数据段 |
9B800h | 4000h | 初始启动代码的代码段 |
9F800h | 可变 | 扩展BIOS数据区 |
高端内存地址 | 长度 | 描述 |
A0000h | 20000h | Video RAM(典型情况下) |
C0000h | 8000h | Video ROM(典型情况下) |
C8000h | 8000h | 初始启动代码ROM |
D0000h | 可变 | 其他可选ROM和高端内存 |
E0000h | 10000h | 系统BIOS |
F0000h | 10000h | 系统BIOS |
扩展内存 | 长度 | 描述 |
100000h | 可变 | 空闲扩展内存 |
步骤2中涉及的问题就是本方法是如何扩展定义动态主机配置协议的,即动态主机配置扩展协议的定义和用法。
动态主机配置扩展协议是在IETF RFC2131的基础上通过定义动态主机配置协议的消息域以及可选项的含义而得到的。动态主机配置协议能够为Internet上的主机提供网络配置参数,诸如计算机的IP地址,路由信息,TTL和最大包长等。动态主机配置协议包括了两个方面的内容,一个是从服务器到主机的配置参数传递协议;另一个是给主机分配网络地址的机制。动态主机配置协议共有两种类型的消息,一种是要求消息(BOOTREQUEST),一种是应答消息(BOOTREPLY)。动态主机配置协议消息分组格式的各个域的长度(以OCTETS为单位,8位比特)和含义如表8所示。
表8动态主机配置协议消息各个域含义的说明
域名 | 长度 | 描述 |
op | 1 | 消息码,1为BOOTREQUEST,2为BOOTREPLY |
htype | 1 | 硬件地址类型 |
hlen | 1 | 硬件地址长度 |
hops | 1 | 客户端将其置为0,如果使用中继代理,则可使用这一域 |
xid | 4 | 事务ID,由客户端选择的随机数,用以表示客户端和主机一次通信过程的标识 |
secs | 2 | 由客户端填写,其含义为客户端重新发起DHCP过程前等待的秒数 |
flags | 2 | 标志,如果为广播,则第一位为’B’,其他为为0 |
ciaddr | 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.0 | ||
yiaddr(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) | 2 | BOOTP REPLY操作码 | |||
htype(1) | * | ||||
hlen(1) | * | ||||
hops(1) | * | ||||
xid(4) | * | ||||
secs(2) | * | ||||
flags(2) | * | ||||
ciaddr(4) | 0.0.0.0 | 服务器总是置为0.0.0.0 | |||
yiaddr(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.0 | ||
yiaddr(4) | 0.0.0.0 | 客户端端的IP地址,由服务器提供 | ||
siaddr(4) | 0.0.0.0 | 下一步启动服务器的服务器IP地址 | ||
giaddr(4) | 0.0.0.0 | |||
chaddr(16) | xx-xx-xx-xx-xx-xx-xx-xx | 客户端MAC地址 | ||
sname(64) | * | 可以被选项中的66标签覆盖 | ||
bootfile(128) | * | 可以被选项中的67标签覆盖 | ||
99.130.83.99 | ||||
动态主机配置协议选项 | ||||
标签名 | 标签号 | 长度 | 说明 | |
消息类型 | 53 | 1 | 3=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.0 | |||
yiaddr(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 | 3=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)其他必要的参数。
到现在为止,动态主机配置扩展协议的交互过程完全结束。接下来的过程就是客户端利用主动程序传输协议向服务器请求传输脚本语言解释执行程序的过程。
上述的说明已经把动态主机配置扩展协议的具体实施细节进行了详细地说明。在本发明的实施例中,动态主机配置扩展协议的实现是对通过对现有的动态主机配置协议的配置文件进行设置来实现的。下面是动态主机配置扩展协议服务器的配置文件的一个例子(其中#号后面的是注释说明):
{ #本方法相关选项 option dhcp-class-identifier“MRBM-EDHCPSEClient”; option vendor-encapsulated-options 03:05:08:00:00:00:ff:ff; #全局选项 option subnet-mask 255.255.255.0; default-lease-time-1; #本方法中与主动程序传输协议相关的选项 option 138 255.255.255.0; option 139 1005; option 140 1006; option 141 8; #与子网有关的选项 subnet 192.168.0.0 netmask 255.255.255.0{ option routers 192.168.0.2; option dynamic-bootp 192.168.0.100 192.168.0.180; filename“tftpboot/ald.image”; } }
本实施例的步骤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脚本语言解释执行程序下载后内存的使用情况
基本内存地址 | 长度 | 描述 |
0h | 400h | 中断向量表 |
400h | 100h | 系统BIOS数据段 |
500h | EB00h | 空闲基本内存(部分区域可能被系统BIOS使用) |
10000h | 4000h | 脚本语言解释执行程序 |
14000h | 不定 | 空闲基本内存 |
97000h | 800h | CPU堆栈段 |
97800h | 4000h | 初始启动代码的数据段 |
9B800h | 4000h | 初始启动代码的代码段 |
9F800h | 可变 | 扩展BIOS数据区 |
高端内存地址 | 长度 | 描述 |
A0000h | 20000h | Video RAM(典型情况下) |
C0000h | 8000h | Video ROM(典型情况下) |
C8000h | 8000h | 初始启动代码可选ROM |
D0000h | 可变 | 其他可选ROM和高端内存 |
E0000h | 10000h | 系统BIOS |
F0000h | 10000h | 系统BIOS |
扩展内存 | 长度 | 描述 |
100000h | 可变 | 空闲扩展内存 |
本实施例的步骤9的详细说明:
脚本语言解释执行程序执行,取得系统控制权。此时的内存使用情况如下:
表15脚本语言解释执行的环境加载后内存的使用情况
基本内存地址 | 长度 | 描述 |
0h | 400h | 中断向量表 |
400h | 100h | 系统BIOS数据段 |
500h | 92F00h | 空闲基本内存(部分区域可能被系统BIOS使用) |
93400h | 400h | 脚本语言解释执行环境的堆栈段 |
93800h | 4000h | 脚本语言解释执行环境的代码段 |
97800h | 4000h | 脚本语言解释执行环境的数据段 |
9B800h | 4000h | 初始启动代码的代码段 |
9F800h | 可变 | 扩展BIOS数据区 |
高端内存地址 | 长度 | 描述 |
A0000h | 20000h | Video RAM(典型情况下) |
C0000h | 8000h | Video ROM(典型情况下) |
C8000h | 8000h | 初始启动代码可选ROM |
D0000h | 可变 | 其他可选ROM和高端内存 |
E0000h | 10000h | 系统BIOS |
F0000h | 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系统。
Set MenuNum=2 Set MenuItem={”Starting Windows98”,”Starting Linux”} Set CurrentItem=1 :menu Set exitemenu=”” Print“Boot selection” Seti=1 :loop Setj=($i-1) Print“$MenuItem”{$j} Print“\r\n” SetI=($I+1) If $I<=$MenuNum goto loop GetKey Key #向上键 If“$key”=””if $CurrentItem>1 Set Current=($CurrentItem-1) #向下键 If“$key”=””if $CurrentItem<$MenuNum Set Current=($CurrentItem+1) #回车 if“$key”=”\r”Set ExitMenu=”OK” if“$ExitMenu”!=“OK”goto menu if $CurrentItem=1 goto a1 if $CurrentItem=2 goto a2 :a1 LoadImage“192.168.0.72:/tftpboot/WIN$SOP.SYS” :a2 LoadImage“192.168.0.72:/tftpboot/LInux.image”
本实施例的步骤10的详细说明:
客户端根据用户的选择,向服务器(主动程序传输服务)发出下载操作系统内核镜像的传输请求。
本实施例的步骤11的详细说明:
服务器(主动程序传输服务)响应客户端的下载操作系统内核镜像的请求,传输操作系统内核镜像。
本实施例的步骤12的详细说明:
如果操作系统的内核镜像不大,则客户端利用主动程序传输协议下载操作系统内核镜像后,内存的使用情况如表16所示:
表16操作系统内核镜像下载后内存的使用情况(小镜像)
基本内存地址 | 长度 | 描述 |
0h | 400h | 中断向量表 |
400h | 100h | 系统BIOS数据段 |
500h | FB00 | 空闲基本内存(部分区域可能被系统BIOS使用) |
10000h | 不定 | 空闲内存 |
93400h | 400h | 脚本语言解释执行环境的堆栈段 |
93800h | 4000h | 脚本语言解释执行环境的代码段 |
97800h | 4000h | 脚本语言解释执行环境的数据段 |
9B800h | 4000h | 初始启动代码的代码段 |
9F800h | 可变 | 扩展BIOS数据区 |
高端内存地址 | 长度 | 描述 |
A0000h | 20000h | Video RAM(典型情况下) |
C0000h | 8000h | Video ROM(典型情况下) |
C8000h | 8000h | 初始启动代码可选ROM |
D0000h | 可变 | 其他可选ROM和高端内存 |
E0000h | 10000h | 系统BIOS |
F0000h | 10000h | 系统BIOS |
扩展内存 | 长度 | 描述 |
300000h | 可变 | 空闲扩展内存 |
如果操作系统的内核镜像比较大,则客户端利用主动程序传输协议下载操作系统的内核镜像后,内存的使用情况如17所示:
表17操作系统内核镜像下载后内存的使用情况(大镜像)
基本内存地址 | 长度 | 描述 |
0h | 400h | 中断向量表 |
400h | 100h | 系统BIOS数据段 |
500h | 不定 | 空闲基本内存(部分区域可能被系统BIOS使用) |
93400h | 400h | 脚本语言解释执行环境的堆栈段 |
93800h | 4000h | 脚本语言解释执行环境的码段 |
97800h | 4000h | 脚本语言解释执行环境的数据段 |
9B800h | 4000h | 初始启动代码的代码段 |
9F800h | 可变 | 扩展BIOS数据区 |
高端内存地址 | 长度 | 描述 |
A0000h | 20000h | Video RAM(典型情况下) |
C0000h | 8000h | Video ROM(典型情况下) |
C8000h | 8000h | 初始启动代码可选ROM |
D0000h | 可变 | 其他可选ROM和高端内存 |
E0000h | 10000h | 系统BIOS |
F0000h | 10000h | 系统BIOS |
扩展内存 | 长度 | 描述 |
100000h | 200000h | 操作系统内核镜像 |
300000h | 可变 | 空闲扩展内存 |
当操作系统内核镜像下载结束后,系统的控制权将交给多操作系统加载器。多操作系统加载器将根据内核镜像的格式,加载操作系统内核镜像。
为了加载多操作系统的内核镜像,必须对内核镜像的格式加以规定,使用统一的内核镜像格式,这样加载器就能透明地加载各种操作系统的内核镜像。在Linux中,加载器工作在实模式下,操作系统内核镜像的大小不能超过1M。这在嵌入式系统中是完全满足需要的。但是在加载象Windows系统时就行不通了。这时需要先加载DOS内核,再在DOS环境中利用DOS工具启动Windows系统。但是对Linux的加载器而言,它不需要知道这些细节,它只是按照内核镜像的格式要求,在实模式下将内核镜像放置在规定的内存物理区域。然后多操作系统加载器跳转到该处执行,从而释放系统的控制权。
本方法中操作系统的内核镜像的格式如图7所示,有关的含义说明如下:
内核镜像标识。目前的值为05h,0ah,0ah,05h,作为内核镜像的标识。
内核镜像在内存中的装载地址。
内核镜像的首次执行地址。当内核镜像被加载程序成功地装载到装载地址后,加载程序将跳转到执行地址处执行,从而释放系统的控制权。
内核镜像的大小。该大小是指内核镜像解压前的大小。
内核镜像解压后所占用的内存大小。该大小是内核镜像解压后内核所占用的内存的大小。
程序的真正数据区。指内核镜像使用的数据区的大小。
至此,本发明所有的关于网络环境下计算机远程启动方法的实施步骤都已经进行了详细的说明,本实施例仅给出本发明的一种具体实现方法,当不能限定本发明的保护范围,凡对本实施例中所述方法的任何等同变换,均应属于本发明权利要求书中所述的保护范围。
Claims (8)
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)程序的真正数据区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 01142033 CN1121008C (zh) | 2001-09-07 | 2001-09-07 | 一种网络环境下的计算机远程启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 01142033 CN1121008C (zh) | 2001-09-07 | 2001-09-07 | 一种网络环境下的计算机远程启动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1334510A true CN1334510A (zh) | 2002-02-06 |
CN1121008C CN1121008C (zh) | 2003-09-10 |
Family
ID=4676577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 01142033 Expired - Fee Related CN1121008C (zh) | 2001-09-07 | 2001-09-07 | 一种网络环境下的计算机远程启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1121008C (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2405711A (en) * | 2003-09-05 | 2005-03-09 | Sun Microsystems Inc | Method and apparatus for communicating configuration information over a network using DHCP |
CN1314229C (zh) * | 2004-11-29 | 2007-05-02 | 清华大学 | 一种用于网络计算机配置参数的自动分配与获取方法 |
CN1317660C (zh) * | 2003-03-31 | 2007-05-23 | 联想(北京)有限公司 | 一种虚拟光盘网络共享的实现方法及其系统 |
CN1333339C (zh) * | 2005-04-06 | 2007-08-22 | 清华大学 | 基于透明计算的计算设备和方法 |
CN100365576C (zh) * | 2006-03-16 | 2008-01-30 | 浙江大学 | 嵌入式操作系统内存镜像启动优化的实现方法 |
CN100378673C (zh) * | 2004-03-25 | 2008-04-02 | 广达电脑股份有限公司 | 操控远端计算机的方法与系统 |
CN100383739C (zh) * | 2006-03-15 | 2008-04-23 | 浙江大学 | 嵌入式操作系统镜像启动的启动优化方法 |
CN100390736C (zh) * | 2004-04-23 | 2008-05-28 | 广达电脑股份有限公司 | 远端部署多部计算机的方法与系统 |
CN100397338C (zh) * | 2005-01-10 | 2008-06-25 | 英业达股份有限公司 | 软件安装系统及方法 |
CN100437488C (zh) * | 2004-09-28 | 2008-11-26 | 阿鲁策株式会社 | 网络终端设备、配送服务器和客户/服务器系统 |
CN100489785C (zh) * | 2005-12-22 | 2009-05-20 | 国际商业机器公司 | 用于动态激活处理器的方法和系统 |
CN102207876A (zh) * | 2010-03-30 | 2011-10-05 | 联想(新加坡)私人有限公司 | 流式传输客户端系统基本镜像 |
WO2012048459A1 (zh) * | 2010-10-12 | 2012-04-19 | 北京中科院软件中心有限公司 | 远程终端运行环境的加载方法及系统 |
CN103729596A (zh) * | 2013-12-20 | 2014-04-16 | 合肥联宝信息技术有限公司 | 一种实现安全计算机的方法 |
CN104158859A (zh) * | 2014-07-30 | 2014-11-19 | 华为技术有限公司 | 基于pxe的信息获取方法、pxe客户端、pxe服务器及系统 |
CN104679542A (zh) * | 2013-11-29 | 2015-06-03 | 英业达科技有限公司 | 服务器启动方法与计算机系统 |
CN104935468A (zh) * | 2015-06-24 | 2015-09-23 | 宋敏 | 一种基于pxe技术的交互系统及其实现操作系统运行的方法 |
CN106126200A (zh) * | 2016-06-13 | 2016-11-16 | 房玮 | 一种能够远程引导客户端计算机的云计算系统 |
WO2017097176A1 (zh) * | 2015-12-08 | 2017-06-15 | 华为技术有限公司 | 一种操作系统启动的方法、装置及系统 |
CN101821716B (zh) * | 2007-10-11 | 2017-07-07 | 高通股份有限公司 | 调度下载:实现后台过程以接收广播数据 |
CN106940769A (zh) * | 2017-03-01 | 2017-07-11 | 广州大学 | 操作系统安全远程加载方法 |
CN112073558A (zh) * | 2020-11-11 | 2020-12-11 | 南京乐韵瑞信息技术有限公司 | 接入物联网的方法、装置、物联网设备、及存储介质 |
CN115002077A (zh) * | 2021-03-01 | 2022-09-02 | 炬芯科技股份有限公司 | 一种dhcp客户端获取ip地址的方法及相关设备 |
-
2001
- 2001-09-07 CN CN 01142033 patent/CN1121008C/zh not_active Expired - Fee Related
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1317660C (zh) * | 2003-03-31 | 2007-05-23 | 联想(北京)有限公司 | 一种虚拟光盘网络共享的实现方法及其系统 |
GB2405711B (en) * | 2003-09-05 | 2006-08-09 | Sun Microsystems Inc | Method and apparatus for performing configuration over a network |
GB2405711A (en) * | 2003-09-05 | 2005-03-09 | Sun Microsystems Inc | Method and apparatus for communicating configuration information over a network using DHCP |
US7366898B2 (en) | 2003-09-05 | 2008-04-29 | Sun Microsystems, Inc. | Method and apparatus for performing configuration over a network |
CN100378673C (zh) * | 2004-03-25 | 2008-04-02 | 广达电脑股份有限公司 | 操控远端计算机的方法与系统 |
CN100390736C (zh) * | 2004-04-23 | 2008-05-28 | 广达电脑股份有限公司 | 远端部署多部计算机的方法与系统 |
CN100437488C (zh) * | 2004-09-28 | 2008-11-26 | 阿鲁策株式会社 | 网络终端设备、配送服务器和客户/服务器系统 |
CN1314229C (zh) * | 2004-11-29 | 2007-05-02 | 清华大学 | 一种用于网络计算机配置参数的自动分配与获取方法 |
CN100397338C (zh) * | 2005-01-10 | 2008-06-25 | 英业达股份有限公司 | 软件安装系统及方法 |
CN1333339C (zh) * | 2005-04-06 | 2007-08-22 | 清华大学 | 基于透明计算的计算设备和方法 |
CN100489785C (zh) * | 2005-12-22 | 2009-05-20 | 国际商业机器公司 | 用于动态激活处理器的方法和系统 |
CN100383739C (zh) * | 2006-03-15 | 2008-04-23 | 浙江大学 | 嵌入式操作系统镜像启动的启动优化方法 |
CN100365576C (zh) * | 2006-03-16 | 2008-01-30 | 浙江大学 | 嵌入式操作系统内存镜像启动优化的实现方法 |
CN101821716B (zh) * | 2007-10-11 | 2017-07-07 | 高通股份有限公司 | 调度下载:实现后台过程以接收广播数据 |
CN102207876A (zh) * | 2010-03-30 | 2011-10-05 | 联想(新加坡)私人有限公司 | 流式传输客户端系统基本镜像 |
CN102207876B (zh) * | 2010-03-30 | 2014-04-02 | 联想(新加坡)私人有限公司 | 流式传输客户端系统基本镜像 |
WO2012048459A1 (zh) * | 2010-10-12 | 2012-04-19 | 北京中科院软件中心有限公司 | 远程终端运行环境的加载方法及系统 |
CN104679542A (zh) * | 2013-11-29 | 2015-06-03 | 英业达科技有限公司 | 服务器启动方法与计算机系统 |
CN103729596A (zh) * | 2013-12-20 | 2014-04-16 | 合肥联宝信息技术有限公司 | 一种实现安全计算机的方法 |
CN104158859A (zh) * | 2014-07-30 | 2014-11-19 | 华为技术有限公司 | 基于pxe的信息获取方法、pxe客户端、pxe服务器及系统 |
CN104935468A (zh) * | 2015-06-24 | 2015-09-23 | 宋敏 | 一种基于pxe技术的交互系统及其实现操作系统运行的方法 |
WO2017097176A1 (zh) * | 2015-12-08 | 2017-06-15 | 华为技术有限公司 | 一种操作系统启动的方法、装置及系统 |
CN106126200A (zh) * | 2016-06-13 | 2016-11-16 | 房玮 | 一种能够远程引导客户端计算机的云计算系统 |
CN106126200B (zh) * | 2016-06-13 | 2019-07-19 | 房玮 | 一种能够远程引导客户端计算机的云计算系统 |
CN106940769A (zh) * | 2017-03-01 | 2017-07-11 | 广州大学 | 操作系统安全远程加载方法 |
CN112073558A (zh) * | 2020-11-11 | 2020-12-11 | 南京乐韵瑞信息技术有限公司 | 接入物联网的方法、装置、物联网设备、及存储介质 |
CN115002077A (zh) * | 2021-03-01 | 2022-09-02 | 炬芯科技股份有限公司 | 一种dhcp客户端获取ip地址的方法及相关设备 |
CN115002077B (zh) * | 2021-03-01 | 2024-03-22 | 炬芯科技股份有限公司 | 一种dhcp客户端获取ip地址的方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1121008C (zh) | 2003-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1121008C (zh) | 一种网络环境下的计算机远程启动方法 | |
CN1286039C (zh) | 维护Internet域名数据的方法和装置 | |
CN1255977C (zh) | 用于会话管理的方法和设备 | |
CN1703016A (zh) | 虚拟网络拓扑结构生成 | |
CN1302650C (zh) | 网络访问服务器及方法 | |
CN1860768A (zh) | 客户请求的外部地址映射 | |
CN1206837C (zh) | 按规定的策略在多服务器实施ip数据报发送的方法和系统 | |
CN1256824C (zh) | 利用秘密-公开因特网协议地址/通用资源定位地址映射的环球网上家用网络的结构 | |
CN1273888C (zh) | 成像装置、信息处理装置、程序执行方法及程序生成方法 | |
CN1592259A (zh) | 网络用交换装置、路径管理服务器、网络接口装置及其控制方法 | |
CN1296585A (zh) | 用于通用数据交换网关的方法和装置 | |
CN1781087A (zh) | 安全访问带有客户端接收的专用网的方法和系统 | |
CN1773545A (zh) | 域名购买的基于消息的网络配置 | |
CN1845505A (zh) | 一种家庭网络设备的控制方法及设备管理装置 | |
CN1761256A (zh) | 用于网络设备配置的xml模式 | |
CN1599344A (zh) | 一种家庭网络系统体系结构和实现方法 | |
CN1729442A (zh) | 在网络中使用共享资源的方法和装置 | |
CN1499794A (zh) | 通信设备中在第三层处理数据包的方法 | |
CN1754351A (zh) | 一种用于在网络中证实可达性的通信模型、信号、方法和设备 ,在该网络中,通过将静态标识符与动态分配的网络地址彼此相关联来获得主机可达性 | |
CN1669018A (zh) | 手持终端框架系统 | |
CN1692358A (zh) | 使用商业规则或用户角色而在环球网门户中选择小门户的方法和装置 | |
CN1788258A (zh) | 用于执行协议转换处理的装置、方法和程序 | |
CN1756197A (zh) | 用于管理设备的系统、设备、方法和计算机程序产品 | |
CN1624657A (zh) | 安全相关的编程接口 | |
CN1285041A (zh) | 电源线交换协议的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20030910 Termination date: 20180907 |