亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種網(wǎng)絡環(huán)境下的計算機遠程啟動方法

文檔序號:6572185閱讀:304來源:國知局
專利名稱:一種網(wǎng)絡環(huán)境下的計算機遠程啟動方法
技術領域
本發(fā)明屬于計算機網(wǎng)絡領域,特別涉及網(wǎng)絡環(huán)境下計算機遠程啟動的方法。
背景技術
個人計算機的出現(xiàn),使得計算機變得比過去的大型計算機更加好用,界面友好,從而使計算機走進了人類的日常生活。然而,隨著計算機的發(fā)展,軟件越來越龐大,從而又使計算機的維護工作量非常大。企業(yè)和學校這種公共機房的維護管理,尤其是令系統(tǒng)管理員感到頭疼的問題。因此,人們一直在尋找一種方法,希望能夠減輕維護計算機系統(tǒng)的工作量,使計算機的使用越來越簡單,而且又能夠降低成本。
計算機網(wǎng)絡的出現(xiàn),使得PC機的計算模式發(fā)生了變化,由原來的分散的計算,各不相干的獨立的計算機系統(tǒng),發(fā)展到了進行相互通信,進行資源共享的網(wǎng)絡系統(tǒng)。這為解決上述問題提供了一個技術的基礎。
計算機的遠程啟動就是建立在計算機網(wǎng)絡技術基礎上的一種計算機的啟動方法。其基本的工作原理是首先使系統(tǒng)連上網(wǎng)絡,然后通過協(xié)議從網(wǎng)絡的服務器上下載操作系統(tǒng)軟件并加以執(zhí)行。計算機的遠程啟動能夠大大減輕系統(tǒng)維護工作量,并能降低系統(tǒng)的整體造價。同時,由于操作系統(tǒng)及其他的應用都存儲在服務器上,因此使得終端系統(tǒng)非常健壯。
計算機遠程啟動技術,是指計算機的啟動不需要從本地的存儲設備上讀取操作系統(tǒng)鏡像,而是從遠程的服務器上下載軟件鏡像并在本地執(zhí)行。在遠程啟動技術的基礎上產(chǎn)生了“無盤工作站”以及其他的計算模式(如瘦客戶端技術)等,它們由于非常易于維護和管理而受到了人們的青睞。Novell公司是較早推出遠程啟動技術的公司之一。它提出了一種用于遠程啟動的RPL(Remote Program Load)協(xié)議,但是由于使用RPL必須用Novell組網(wǎng),其命令繁多,安裝配置非常復雜;支持WIN95遠程引導的RPL技術通用性差,技術不成熟,已經(jīng)幾乎被淘汰了。
由于遠程啟動的種種好處,市場需要新的遠程啟動技術。尤其是能支持WIN98的遠程啟動技術。在這種要求下,Intel公司在1998年提出了一種稱為PXE(PrebootExecution Environment)的遠程啟動技術。最新的PXE規(guī)范的版本是2.0。PXE規(guī)范提出了一種新的基于TCP/IP協(xié)議簇的遠程啟動方法。因為PXE是建立在已成為工業(yè)標準的Internet技術規(guī)范的基礎之上,所以它的穩(wěn)定性比較好。但PXE技術還未發(fā)展成熟,市場尚在成長之中。而且PXE技術對多操作系統(tǒng)的啟動支持也不夠強,它沒有提出多操作系統(tǒng)啟動的辦法。
PXE協(xié)議是一種基于客戶/服務器模型的協(xié)議,分為客戶端和服務器兩部分。其啟動的基本原理是首先使用動態(tài)主機配置協(xié)議(DHCP)獲得本機的IP地址、啟動服務器的地址,然后利用簡單文件傳輸協(xié)議(TFTP)下載啟動程序并執(zhí)行。
PXE遠程啟動的步驟如下步驟1客戶端廣播DHCPDISCOVER消息分組到標準的DHCP端口67。該消息分組中具有選項域(option field),選項域的內(nèi)容如下1)客戶端的唯一標識(Universally Unique ID,UUID)標簽(tag)。
2)客戶端通用網(wǎng)絡設備接口版本標簽。
3)客戶端系統(tǒng)體系結構標簽。
4)DHCP第60號標簽,其含義是類別標識(Class ID),其值設置為“PXEClientArchxxxxUNDIyyyzzz”。
步驟2DHCP或DHCP代理服務通過向客戶端的標準響應端口68發(fā)送DHCPOFFER消息對客戶端進行響應。如果是DHCP代理服務器進行響應的話,則客戶IP地址的值為空(0.0.0.0)。如果是DHCP服務器進行響應的話,則客戶IP地址的值是有效值。
如果客戶端沒有收到響應,則到了一定時間后,客戶端將重新發(fā)送廣播消息。
步驟3客戶端從它收到的DHCPOFFER消息中,記錄以下的信息1)DHCP或BOOTP服務提供的客戶端IP地址以及其他的參數(shù)。
2)從DHCPOFFER中PXE標簽的啟動服務器域中得到啟動服務器列表。
3)如果可能,記錄發(fā)現(xiàn)控制(Discovery Control)標簽的內(nèi)容。
4)如果可能,記錄Multicast Discovery IP地址。
步驟4如果客戶端選擇了一個DHCP服務器所提供的IP地址,則它必須按照標準的DHCP協(xié)議向DHCP服務器發(fā)送一個請求并等待服務器的同意應答。如果客戶端使用一個BOOTP服務器響應,則可以簡單地使用這個地址。
步驟5客戶端選擇和發(fā)現(xiàn)啟動服務器。選擇和發(fā)現(xiàn)啟動服務器的數(shù)據(jù)分組可能被廣播(通過端口67),可能被多播(通過端口4011),也可能被單播(通過端口4011)。這取決于前面所說的DHCPOFFER消息的PXE擴展標簽中發(fā)現(xiàn)控制標簽的值。這個分組的格式和內(nèi)容同步驟1中所說的DHPCDISCOVER消息分組是一樣的,只是消息的類型為DHCPREQUEST。該分組包含如下的內(nèi)容1)DHCP服務器分配給客戶端的IP地址。
2)客戶端的唯一標識(UUID)標簽。
3)客戶端通用網(wǎng)絡設備接口版本標簽。
4)客戶端系統(tǒng)體系結構標簽。
5)DHCP第60號標簽,其含義是產(chǎn)品類別標識(Class ID),其值設置為“PXEClientArchxxxxUNDIyyyzzz”。
6)PXE選項域中的啟動服務器類型。
步驟6啟動服務器利用單播的方式向客戶端的源端口發(fā)送一個DHCPACK應答分組。該分組包含如下的內(nèi)容1)啟動文件的名字。
2)MTFTP(Multicast Trivial File Transfer Protocol)配置參數(shù)。
3)網(wǎng)絡啟動程序成功執(zhí)行需要的其他選項。
步驟7客戶端下載可執(zhí)行的文件,該下載可通過標準的TFTP協(xié)議(端口69)或MTFTP協(xié)議(啟動服務器應答分組中所分配的端口)??蓤?zhí)行代碼在客戶端內(nèi)存中的存放位置取決于客戶端CPU的體系結構。
步驟8PXE客戶端決定是否需要對下載的文件進行授權測試。如果需要測試,則客戶端向原來提供啟動文件的啟動服務器發(fā)送另一個DHCPREQUEST消息,請求認證文件,通過TFTP協(xié)議或MTFTP下載認證文件,然后執(zhí)行授權測試。
步驟9最后,如果授權測試成功或不需要進行授權測試,則PXE客戶端啟動執(zhí)行下載的代碼。
PXE協(xié)議方法由于采用了標準的TCP/IP協(xié)議簇,因此比較健壯,也比較容易實現(xiàn)。PXE的配置和使用要比RPL方便得多,但是它具有如下的不足其一,安全性。TFTP協(xié)議是一個簡單的協(xié)議,沒有認證機制,因此提供TFTP服務的主機可能受到攻擊。PXE提供了一種通過認證文件授權的方法來保證安全。但是如果在TFTP傳輸?shù)倪^程中程序包被惡意篡改,PXE方法是沒有辦法識別出來的。
其二,PXE主要是通過對DHCP的擴展來實現(xiàn)。PXE不但擴展了DHCP的選項定義,也擴展了DHCP服務的交互過程,這導致DHCP服務器的功能和啟動服務器的功能界限不清,不便于實現(xiàn),也不便于采用現(xiàn)有的DHCP服務來架構遠程啟動服務。
其三,不能支持多操作系統(tǒng)的啟動。PXE只能讓客戶端選擇為之服務的啟動服務器,不能讓用戶選擇他們需要加載的操作系統(tǒng)。
因此,目前流行的計算機遠程啟動技術,在健壯性,安全性和通用性上不能令人滿意,并且也不能對多操作系統(tǒng)的啟動提供有效的支持。因此不能滿足市場對計算機遠程啟動技術的要求。

發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有技術的不足之處,提出了一種網(wǎng)絡環(huán)境下計算機遠程啟動的方法,具有可靠、安全、高效,使用簡單,并且能夠支持多操作系統(tǒng)的啟動的特點??捎糜诰W(wǎng)絡計算機的遠程啟動、PC的多操作系統(tǒng)遠程啟動,還可以用于智能家電的遠程啟動,在信息家電領域有很好的應用前景。
本發(fā)明的方法基于客戶/服務器模型的,分為服務器和客戶端兩部分。這里所說的服務器和客戶端是一個服務模型的概念。服務器指提供遠程啟動服務的計算機,通常稱之為啟動服務器,而客戶端是指需要遠程啟動的計算機。
本發(fā)明提出的一種網(wǎng)絡環(huán)境下計算機遠程啟動的方法,首先在客戶端的計算機主板上或網(wǎng)卡上設置一個只讀存儲器(ROM)或可擦可編程只讀存儲器(EPROM),遠程啟動時包括以下步驟1)只讀存儲器中的初始啟動代碼在該計算機加電啟動后使用動態(tài)主機配置擴展協(xié)議(動態(tài)主機配置擴展協(xié)議是通過對動態(tài)主機配置協(xié)議DHCP的選項進行自定義而得到的)獲得客戶端計算機的標識;2)然后通過主動程序傳輸協(xié)議從服務器上下載一個腳本語言解釋執(zhí)行程序并加載執(zhí)行;3)在該腳本語言解釋執(zhí)行的環(huán)境下,客戶端通過對語言腳本的解釋執(zhí)行讓用戶選擇需要加載的操作系統(tǒng);4)客戶端再利用主動程序傳輸協(xié)議從服務器上下載操作系統(tǒng)的內(nèi)核鏡像并加載執(zhí)行,從而實現(xiàn)了計算機的遠程啟動。
其中2)和4)步驟中所使用的傳輸協(xié)議可為已有的任何一種傳輸協(xié)議,比如簡單文件傳輸協(xié)議。步驟3)中的腳本語言,既可為本發(fā)明實施方式中提出的腳本語言,也可為已有的其他一種腳本語言。
本發(fā)明的網(wǎng)絡環(huán)境下計算機遠程啟動方法的詳細步驟如圖1所示,其中上述中的步驟1)具體包括如下的步驟(1)對初始啟動代碼進行初始化該過程包括檢查代碼自身的合法性和完整性;初始化本機環(huán)境和網(wǎng)絡環(huán)境等;(2)初始啟動代碼驅動網(wǎng)卡工作,并廣播DHCPDISCOVER消息分組,請求本機的IP地址,網(wǎng)關地址,啟動服務器地址,腳本語言解釋執(zhí)行程序等標識;(3)服務器接收到DHCPDISCOVER消息分組后,檢查第60號和43號選項,如果是動態(tài)主機配置擴展協(xié)議的消息分組,則向客戶端發(fā)送應答的DHCPOFFER消息分組;如果不是動態(tài)主機配置擴展協(xié)議的消息分組,則將其丟棄;(4)客戶端收到DHCPOFFER消息分組后,驗證該消息分組是否是動態(tài)主機配置擴展協(xié)議的消息分組,如果該消息分組是動態(tài)主機配置擴展協(xié)議的消息分組,則記錄有關動態(tài)主機配置協(xié)議參數(shù),服務器地址,腳本語言解釋執(zhí)行程序等內(nèi)容,否則丟棄該消息分組,同時客戶端向服務器發(fā)送DHCPREQUEST消息分組并等待服務器的同意應答;(5)服務器收到DHCPREQUEST消息分組后,向客戶端發(fā)送DHCPACK消息分組作為應答。
上述中的步驟2)具體包括如下的步驟(1)客戶端收到DHCPACK消息分組后,驗證該消息分組是否是動態(tài)主機配置擴展協(xié)議的消息分組,如果該消息分組是動態(tài)主機配置擴展協(xié)議的消息分組,則記錄相關的內(nèi)容,否則丟棄該消息分組;同時客戶端根據(jù)返回的內(nèi)容向服務器發(fā)出請求下載腳本語言解釋執(zhí)行程序的傳輸請求;(2)服務器接收到客戶端的程序傳輸服務的請求后,利用主動程序傳輸協(xié)議的單播或多播方式向客戶端傳送腳本語言解釋執(zhí)行程序。
上述中的步驟3)具體包括如下的步驟(3)客戶端接收完腳本語言解釋執(zhí)行程序,并將其存儲在本地內(nèi)存中;客戶端加載執(zhí)行腳本語言解釋執(zhí)行程序,初始啟動代碼釋放系統(tǒng)控制權,腳本語言解釋執(zhí)行程序初始化腳本語言解釋執(zhí)行的環(huán)境;(4)客戶端腳本語言解釋執(zhí)行的環(huán)境解釋執(zhí)行語言腳本,在此階段,用戶使用鍵盤選擇需要加載的操作系統(tǒng)。
上述中的步驟4)具體包括如下的步驟(1)客戶端根據(jù)用戶選擇的操作系統(tǒng)的內(nèi)核鏡像的程序名稱、路徑或摘要,向服務器發(fā)出請求下載操作系統(tǒng)內(nèi)核鏡像的程序傳輸請求;(2)服務器接收到客戶端發(fā)出的程序傳輸服務的請求后,利用主動程序傳輸協(xié)議的單播或多播方式向客戶端傳送操作系統(tǒng)內(nèi)核鏡像;(3)客戶端接收操作系統(tǒng)內(nèi)核鏡像并將其存儲在本地內(nèi)存中,客戶端再利用多操作系統(tǒng)加載器加載執(zhí)行操作系統(tǒng)內(nèi)核鏡像,至此,操作系統(tǒng)加載完畢。
上述所說的初始啟動代碼的組成如圖2所示,包括如下的四個部分1)網(wǎng)卡驅動以及相關協(xié)議;2)動態(tài)主機配置擴展協(xié)議的客戶端代碼;3)主動程序傳輸協(xié)議客戶端代碼;4)腳本語言解釋執(zhí)行程序加載器。
初始啟動代碼啟動的過程如圖3所示,其步驟包括1)計算機加電;2)初始啟動代碼ROM初始化;3)執(zhí)行BIOS INT 19h;4)初始啟動代碼檢查自身代碼的完整性;5)本地初始化;6)初始化網(wǎng)絡環(huán)境。
上述所說的動態(tài)主機配置擴展協(xié)議是對動態(tài)主機配置協(xié)議DHCP的選項進行自定義而得到的,包括如下的內(nèi)容1)標簽號為60的選項,該選項的值定義為“MRBM-EDHCPSEClient”;2)標簽號為43的選項,該選項的值定義為“030508000000ffff”;3)標簽號為165的選項,該選項的用來傳遞給腳本語言解釋執(zhí)行程序的參數(shù);4)標簽號為138的選項,該選項定義為主動程序傳輸協(xié)議進行傳輸程序時的多播地址;5)標簽號為139的選項,該選項的含義為主動程序傳輸協(xié)議以多播方式傳輸程序時客戶端監(jiān)聽主動程序傳輸協(xié)議數(shù)據(jù)包的UDP端口;6)標簽號為140的選項,該選項的含義為主動程序傳輸協(xié)議以多播方式傳輸程序時服務器監(jiān)聽主動程序傳輸協(xié)議請求的UDP端口;7)標簽號為141的選項,該選項的含義為客戶端重發(fā)主動程序傳輸協(xié)議請求前等待的時間;
8)標簽號為142的選項,該選項的含義為服務器監(jiān)聽主動程序傳輸協(xié)議請求的延遲時間;9)標簽號為143的選項,該選項的含義為主動程序傳輸協(xié)議要傳輸程序的摘要。
上述所說的主動程序傳輸協(xié)議包括如下三種數(shù)據(jù)包1)讀請求包;2)數(shù)據(jù)應答包3)錯誤包。
主動程序傳輸協(xié)議在客戶端下載程序時的步驟如下1)客戶端發(fā)出讀請求包,該數(shù)據(jù)包中包含有程序的名稱或摘要以及請求的數(shù)據(jù)塊的塊號,初始為1;2)服務器收到客戶端的讀請求包后,檢查程序是否存在,如果存在,則發(fā)送數(shù)據(jù)包,否則發(fā)出錯誤包;3)客戶端如果收到數(shù)據(jù)包,則檢查數(shù)據(jù)包中的塊號是否存在,如果存在則丟棄該數(shù)據(jù)包,如果不存在,則保留在緩沖區(qū)。如果收到的數(shù)據(jù)塊的大小不足512個字節(jié),則轉6),否則將塊號加1,轉1);4)客戶端如果收到錯誤的包,則終止傳輸過程,并提示用戶;5)客戶端如果在一定時間(由DHCPACK消息分組中的主動程序傳輸?shù)却龝r間選項決定)后,如果沒有收到服務器的應答消息,則重發(fā)請求,如果重發(fā)次數(shù)到達了10次,則終止傳輸過程,并向用戶報告;6)如果傳輸使用的是摘要的方法,則對程序進行基于摘要的檢查,如果程序正常通過檢查,則轉8),否則轉7);7)表明傳輸過程出現(xiàn)了錯誤,需要重新開始傳輸,如果重新開始的次數(shù)超過了3次,則終止傳輸,并向用戶報告。否則轉1);8)傳輸正確,正常結束傳輸過程。
上述所說的主動程序傳輸協(xié)議在多播時客戶端下載程序的過程,其步驟如下1)多播監(jiān)聽;2)多播打開;3)多播關閉。
上述所說的操作系統(tǒng)的內(nèi)核鏡像的格式如圖7所示,內(nèi)容如下1)內(nèi)核鏡像標識,目前的值為05h,0ah,0ah,05h,作為內(nèi)核鏡像的標識;2)內(nèi)核鏡像在內(nèi)存中的裝載地址;3)內(nèi)核鏡像的首次執(zhí)行地址,當內(nèi)核鏡像加載程序成功地裝載到裝載地址后,跳轉到執(zhí)行地址處執(zhí)行,從而釋放系統(tǒng)的控制權;4)內(nèi)核鏡像的大小,該長度是指內(nèi)核鏡像為解壓前的大??;5)內(nèi)核鏡像解壓后所占用的內(nèi)存大小;6)程序的真正數(shù)據(jù)區(qū)。
本發(fā)明的方法的主要技術特點是一、在客戶端使用一段稱為初始啟動代碼的代碼,該代碼駐留在主板或網(wǎng)卡設備的ROM或EPROM中。初始啟動代碼主要由四部分組成網(wǎng)卡驅動以及相關的網(wǎng)絡協(xié)議代碼;動態(tài)主機配置擴展協(xié)議客戶端代碼;主動程序傳輸協(xié)議客戶端代碼;腳本語言解釋執(zhí)行程序加載器。服務器為客戶端的啟動提供服務,主要包括動態(tài)主機配置協(xié)議服務和主動程序傳輸協(xié)議的程序傳輸服務。通過客戶端和服務器的一系列的交互過程,實現(xiàn)客戶端從服務器上下載用戶選擇的操作系統(tǒng)的內(nèi)核鏡像。
二、使用擴展的動態(tài)主機配置協(xié)議。為了避免網(wǎng)絡上其他動態(tài)主機配置協(xié)議服務器對本方法提供的動態(tài)主機配置協(xié)議的影響,本方法利用動態(tài)主機配置協(xié)議的60和43標簽來標識本方法所使用的動態(tài)主機配置協(xié)議服務。這使本方法具有可靠性。同時,我們還對動態(tài)主機配置協(xié)議的165,138-143標簽進行了定義,這一定義的主要目的是為了使主動程序傳輸服務能夠支持多播,從而減少多臺計算機并發(fā)啟動時對網(wǎng)絡流量的沖擊。這使本方法具有很強的擴展能力。
三、本方法所使用的主動程序傳輸協(xié)議簡單,安全。該傳輸協(xié)議是基于UDP協(xié)議的,因而實現(xiàn)簡單。主動程序傳輸協(xié)議的數(shù)字簽名技術,保護程序在傳輸過程中不被惡意篡改,也保證了傳輸?shù)臏蚀_可靠。該協(xié)議是一個無狀態(tài)協(xié)議,它使得在傳輸過程中計算機能夠自動進行恢復,非常健壯。同時,主動程序傳輸協(xié)議能夠支持多播傳輸,大大減少了本方法對網(wǎng)絡帶寬的依賴性。
四、腳本語言解釋執(zhí)行程序的加載執(zhí)行為腳本語言的解釋執(zhí)行提供了一個類似操作系統(tǒng)的環(huán)境。通過對腳本語言的解釋執(zhí)行,能夠接受用戶的輸入,讓用戶選擇操作系統(tǒng)。這使得本方法能夠支持多操作系統(tǒng)的遠程啟動。
五、通過對操作系統(tǒng)內(nèi)核鏡像的格式進行統(tǒng)一規(guī)定,本方法能夠避開具體操作系統(tǒng)加載在內(nèi)存分配等方面的不一致。從而達到了能夠對多操作系統(tǒng)使用一致的方法來進行加載的效果。
表1是本發(fā)明的方法與傳統(tǒng)的RPL遠程啟動方法以及PXE啟動方法的比較結果。
表1本發(fā)明的方法,RPL和PXE的比較表 綜上所述,本發(fā)明方法可靠、安全、高效,使用簡單,并且能夠支持多操作系統(tǒng)的啟動。可用于網(wǎng)絡計算機的遠程啟動、PC的多操作系統(tǒng)遠程啟動,還可以用于智能家電的遠程啟動,在信息家電領域有很好的應用前景。


圖1為本發(fā)明提出的網(wǎng)絡環(huán)境下計算機遠程啟動的流程圖。
圖2為本實施例初始啟動代碼的結構圖。
圖3為本實施例初始啟動代碼啟動過程的示意圖。
圖4為本實施例主動程序傳輸協(xié)議包格式的示意圖。
圖5為本實施例主動程序傳輸協(xié)議多播監(jiān)聽過程的流程圖。
圖6為本實施例主動程序傳輸協(xié)議多播打開過程的流程圖。
圖7為本發(fā)明操作系統(tǒng)內(nèi)核鏡像格式組成的示意圖。
具體實施例方式
下面結合附圖及實施例更加詳細地說明本發(fā)明的內(nèi)容。
本發(fā)明提出了一種網(wǎng)絡環(huán)境下計算機遠程啟動法的實施例。該實施例是基于客戶/服務器模型的,分為服務器和客戶端兩部分。服務器為客戶端計算機提供啟動服務。
本實施例的具體實現(xiàn)方法包括以下步驟1初始啟動代碼進行初始化。該過程包括檢查代碼自身的合法性和完整性;初始化本機環(huán)境和網(wǎng)絡環(huán)境等。
2初始啟動代碼驅動網(wǎng)卡工作,并廣播DHCPDISCOVER消息分組,請求本機的IP地址,網(wǎng)關地址,啟動服務器地址,腳本語言解釋執(zhí)行程序等。在本實施例中,客戶端廣播的DHCPDISCOVER消息分組中包含如下的內(nèi)容1)第60號標簽,其含義是產(chǎn)品類別標識(Class ID),設置為“MRBM-EDHCPSEClient”。
2)第43號標簽,該選項的含義是與產(chǎn)品相關的特定信息,設置為“030508000000ffff”。
根據(jù)以上兩個選項域,就可以判斷一個動態(tài)主機配置協(xié)議的消息分組是否是動態(tài)主機配置擴展協(xié)議的消息分組。
3服務器接收到DHCPDISCOVER消息分組后,檢查第60號和43號選項,如果是動態(tài)主機配置擴展協(xié)議的消息分組,則向客戶端發(fā)送應答的DHCPOFFER消息分組。如果不是動態(tài)主機配置擴展協(xié)議的消息分組,則將其丟棄。
4客戶端收到DHCPOFFER消息分組后,驗證該消息分組是否是動態(tài)主機配置擴展協(xié)議的消息分組,如果該消息分組是動態(tài)主機配置擴展協(xié)議的消息分組,則記錄有關的信息,否則丟棄該消息分組。其記錄的內(nèi)容包括1)動態(tài)主機配置服務提供的客戶端IP地址以及其他參數(shù)。
2)服務器的地址。
3)腳本語言解釋執(zhí)行程序的程序名稱(如果使用摘要標識的話,則是程序的摘要)。
4)如果有,記錄主動程序傳輸協(xié)議多播方式時客戶端和服務器所使用的端口。
5)其他必要的參數(shù)。
同時客戶端向服務器發(fā)送DHCPREQUEST消息分組并等待服務器的同意應答。
5服務器收到DHCPREQUEST消息分組后,向客戶端發(fā)送DHCPACK消息分組作為應答。該消息分組包含的內(nèi)容有1)動態(tài)主機配置協(xié)議服務提供的客戶端IP地址以及其他參數(shù)。
2)服務器的地址。
3)腳本語言解釋執(zhí)行程序的程序名稱或者摘要。
4)主動程序傳輸協(xié)議多播方式時客戶端和服務器所使用的端口。
5)其他參數(shù)。
6客戶端收到DHCPACK消息分組后,驗證該消息分組是否是動態(tài)主機配置擴展協(xié)議的消息分組,如果該消息分組是動態(tài)主機配置擴展協(xié)議的消息分組,則記錄相關的內(nèi)容,否則丟棄該消息分組。同時客戶端根據(jù)返回的內(nèi)容向服務器發(fā)出請求下載腳本語言解釋執(zhí)行程序的傳輸請求。
7服務器接收到客戶端的程序傳輸服務的請求后,利用主動程序傳輸協(xié)議的單播或多播方式向客戶端傳送腳本語言解釋執(zhí)行程序。
8客戶端接收完腳本語言解釋執(zhí)行程序,并將其存儲在本地內(nèi)存中??蛻舳思虞d執(zhí)行腳本語言解釋執(zhí)行程序,初始啟動代碼釋放系統(tǒng)控制權。腳本語言解釋執(zhí)行程序初始化腳本語言解釋執(zhí)行的環(huán)境。
9客戶端腳本語言解釋執(zhí)行的環(huán)境解釋執(zhí)行語言腳本,在此階段,用戶使用鍵盤選擇需要加載的操作系統(tǒng)。
10客戶端根據(jù)用戶選擇的操作系統(tǒng)的信息,指操作系統(tǒng)鏡像的程序名稱、路徑或摘要,向服務器發(fā)出請求下載操作系統(tǒng)內(nèi)核鏡像的程序傳輸請求。
11服務器接收到客戶端發(fā)出的程序傳輸服務的請求后,利用主動程序傳輸協(xié)議的單播或多播方式向客戶端傳送操作系統(tǒng)內(nèi)核鏡像。
12客戶端接收操作系統(tǒng)內(nèi)核鏡像并將其存儲在本地內(nèi)存中??蛻舳嗽倮枚嗖僮飨到y(tǒng)加載器加載執(zhí)行操作系統(tǒng)內(nèi)核鏡像。至此,操作系統(tǒng)加載完畢。
下面對每個步驟的實施進行更詳細的說明,并給出相應的實施例。
本實施例的步驟1的詳細說明初始啟動代碼的擱置方法。
根據(jù)現(xiàn)在標準BIOS啟動規(guī)范(BIOS Boot Specification),計算機加電自檢通過后,主要搜索下面可用于啟動OS的設備1)BIOS意識設備(BIOS Aware IPL Devices,BAID),指軟盤、硬盤和SCSI設備。
2)PnP卡設備。一般指帶有可選ROM的網(wǎng)絡設備,該方法又可分為BCV(BootConnection Vector)方法和BEV(Bootstrap Entry Vector)方法。BCV方法利用INT13h鉤子程序來實現(xiàn)。BEV方法通過PnP擴展頭(PnP Expansion Header)結構中的啟動程序入口向量(BEV)來指示ROM中的OS加載程序。
3)傳統(tǒng)卡設備。指帶有可選ROM的非PnP卡設備(例如ISA卡設備)。這種方法的可選ROM的地址必須在內(nèi)存統(tǒng)一編址中C0000h和EFFFFh間2k邊界處。
本實施例的初始啟動代碼的擱置利用BEV方法來實現(xiàn),即在PnP網(wǎng)卡上增加一個可選ROM的辦法。在該ROM中駐留初始啟動代碼,計算機加電自檢后,將把計算機的控制權交給初始啟動代碼。但是從原理上說,初始啟動代碼的駐留和啟動也可通過上述中的別的方法來實現(xiàn)。在用于嵌入式設備時,初始啟動代碼ROM也可以安置在主板上。
本實施例初始啟動代碼的主要組成如圖2所示,各個部分的功能分別描述如下1)網(wǎng)卡驅動以及相關協(xié)議。該部分代碼的功能主要是初始化網(wǎng)卡,使網(wǎng)卡工作。不同網(wǎng)卡設備該部分代碼是不一樣的。在本發(fā)明的實施例中,網(wǎng)絡設備上可選ROM中只有本網(wǎng)卡的驅動代碼。相關的協(xié)議主要是基于TCP/IP的協(xié)議棧。但是在實施例的初始啟動代碼中,不是一個完整的TCP/IP協(xié)議,該協(xié)議棧只實現(xiàn)了IP層的簡單功能(發(fā)包和收包)以及UDP協(xié)議。在實現(xiàn)上也沒有嚴格按照層的概念。所有的這些手段,都是為了能在把代碼限制在32KB的范圍內(nèi)。
2)動態(tài)主機配置擴展協(xié)議的客戶端代碼。該部分的功能主要是利用動態(tài)主機配置協(xié)議與服務器上的動態(tài)主機配置協(xié)議服務進行交互,從而獲得本機的相關標識以及其他信息。關于動態(tài)主機配置擴展協(xié)議實施中的具體內(nèi)容,我們在后面進行詳細地說明。
3)主動程序傳輸協(xié)議客戶端代碼。主動程序傳輸協(xié)議是一個程序傳輸協(xié)議,利用該協(xié)議客戶端可以從服務器上下載程序到本機。關于主動程序傳輸協(xié)議的具體內(nèi)容,我們將在后面進行詳細地說明。
4)腳本語言解釋執(zhí)行程序加載器。該加載器主要用來腳本語言解釋執(zhí)行程序。由于腳本語言解釋執(zhí)行程序的代碼短小,只是一個腳本的解釋執(zhí)行環(huán)境,這部分代碼的功能比較簡單。
初始啟動代碼ROM的頭結構。該頭結構是BIOS與可選ROM進行交互的說明信息。標準的可選ROM的結構如表2所示表2標準可選ROM的頭結構

為了與標準的可選ROM兼容,只對保留區(qū)進行了擴展。本實施例中初始啟動代碼ROM的頭結構如表3所示表3初始啟動代碼ROM的頭結構

本實施例初始啟動代碼的啟動過程如圖3所示。其步驟如下1計算機加電計算機加電后將進行自檢(Power-On Self Test),即所謂的POST過程。BIOS將對計算機的設備進行初始化,設置中斷,初始化輸入輸出設備,并對設備進行資源的分配等。這一工作完成后,內(nèi)存的使用情況如下表4計算機加電video初始化后的內(nèi)存使用情況

2初始啟動代碼ROM初始化BIOS在初始化的過程中將檢查到初始啟動代碼ROM的存在,并讀取ROM中的初始化向量,見表3。然后BIOS將執(zhí)行初始化過程。該初始化過程將對網(wǎng)卡進行必要的配置。該過程結束后,內(nèi)存的使用情況如下表5初始啟動代碼ROM初始化后的內(nèi)存使用情況

3執(zhí)行BIOS INT 19h
INT 19h是BIOS POST過程中的最后一步,INT 19h掃描系統(tǒng)中可以啟動操作系統(tǒng)的設備。如果能找到系統(tǒng)的啟動設備,INT 19h并將控制權移交給啟動設備上的啟動程序。INT 19h將根據(jù)初始啟動代碼ROM頭結構中的擴展頭結構偏移地址,找到擴展頭結構。即插即用設備的擴展頭結構如表6所示表6即插即用設備擴展頭結構

根據(jù)擴展頭結構中的啟動程序入口點,BIOS跳轉到此處執(zhí)行,到此,初始啟動代碼掌握了計算機的控制權。
4初始啟動代碼檢查代碼的完整性初始啟動代碼的完整性檢查主要是通過對代碼結尾的標志碼“AA005500FFFF”進行檢查,確保代碼的完整無誤。如果不完整,則該過程需要再次讀取初始啟動代碼或者自動放棄,并將控制權交給INT 19h。
5本地初始化初始啟動代碼的初始化。檢測計算機的內(nèi)存模式(實模式還是保護模式)。如果是保護模式,則需要切換到實模式。初始啟動代碼將設立自己的代碼段,數(shù)據(jù)段,堆棧段。
6初始化網(wǎng)絡環(huán)境初始啟動代碼啟動網(wǎng)卡開始工作,建立TCP/IP協(xié)議棧。到此,初始啟動代碼已經(jīng)開始工作。
該過程結束后,內(nèi)存的分配使用情況如下表7初始啟動代碼ROM啟動后的內(nèi)存使用情況


本實施例的步驟2的詳細說明步驟2中涉及的問題就是本方法是如何擴展定義動態(tài)主機配置協(xié)議的,即動態(tài)主機配置擴展協(xié)議的定義和用法。
動態(tài)主機配置擴展協(xié)議是在IETF RFC2131的基礎上通過定義動態(tài)主機配置協(xié)議的消息域以及可選項的含義而得到的。動態(tài)主機配置協(xié)議能夠為Internet上的主機提供網(wǎng)絡配置參數(shù),諸如計算機的IP地址,路由信息,TTL和最大包長等。動態(tài)主機配置協(xié)議包括了兩個方面的內(nèi)容,一個是從服務器到主機的配置參數(shù)傳遞協(xié)議;另一個是給主機分配網(wǎng)絡地址的機制。動態(tài)主機配置協(xié)議共有兩種類型的消息,一種是要求消息(BOOTREQUEST),一種是應答消息(BOOTREPLY)。動態(tài)主機配置協(xié)議消息分組格式的各個域的長度(以OCTETS為單位,8位比特)和含義如表8所示。
表8動態(tài)主機配置協(xié)議消息各個域含義的說明

在本實施例中,利用動態(tài)主機配置協(xié)議來配置客戶端的主機參數(shù),并利用file域傳遞需要下載的腳本語言解釋執(zhí)行程序。
當網(wǎng)絡上存在多個動態(tài)主機配置協(xié)議服務器的時候,根據(jù)動態(tài)主機配置協(xié)議的規(guī)定,客戶端將隨機選擇一個服務器為其服務。在本實施例中,這種情況將導致混亂。為了增強本方法的健壯性和安全性,本實施例對動態(tài)主機配置協(xié)議的可選參數(shù)域進行了擴展定義。同時,為了滿足主動程序傳輸協(xié)議多播的要求,本實施例也擴展定義了其他一些標簽。本實施例對動態(tài)主機配置協(xié)議的擴展定義見表9。根據(jù)IETF RFC2132的規(guī)定69以后的標簽都為未定義的標簽。
表9動態(tài)主機配置擴展協(xié)議對選項域的擴展定義


DHCPDISCOVER消息分組的是由客戶端向標準動態(tài)主機配置協(xié)議服務器UDP端口67廣播發(fā)送的。DHCPDISCOVER分組的內(nèi)容必須按照RFC 2131的規(guī)定,并加上本發(fā)明的擴展內(nèi)容。其格式和內(nèi)容如表10所示。
表10 DHCPDISCOVER消息分組的格式及內(nèi)容


當客戶端發(fā)出DHCPDISCOVER消息后,客戶端必須準備接收響應。
本實施例的步驟3的詳細說明服務器收到DHCPDISCOVER消息分組后,將發(fā)出DHCPOFFER響應消息分組。DHCPOFFER消息分組的格式和內(nèi)容也必須遵循RFC 2131和RFC 2132的有關規(guī)定。DHCPOFFER消息分組的內(nèi)容如表11所示。
表11 DHCPOFFER消息分組的格式及內(nèi)容

DHCPOFFER消息分組發(fā)出后,如果客戶端沒有收到,則客戶端將根據(jù)超時情況重新發(fā)送DHCPDISCOVER消息分組??蛻舳藢⒅匦掳l(fā)送DHCPDISCOVER消息分組四次,等待的超時時間分別為4,8,16和32秒。如果四次發(fā)送后還未接收到DHCPOFFER響應消息分組,客戶端將放棄嘗試,并報告用戶。
本實施例的步驟4的詳細說明客戶端在接收到DHCPOFFER消息分組以后,驗證該消息分組是否是動態(tài)主機配置擴展協(xié)議的消息分組,如果不是則丟棄該分組。否則必須記錄DHCPOFFER消息分組所提供的所有相關的信息,其內(nèi)容包括1)動態(tài)主機配置服務提供的客戶端IP地址以及其他參數(shù)。
2)服務器的地址。
3)腳本語言解釋執(zhí)行程序的程序名稱(如果使用摘要標識的話,則是程序的摘要)。
4)如果有,記錄主動程序傳輸協(xié)議多播方式時客戶端和服務器所使用的端口。
5)其他必要的參數(shù)。
同時,客戶端必須發(fā)送DHCPREQUEST消息分組請求確認。DHCPREQUEST消息分組的格式和內(nèi)容如表12所示。
表12 DHCPREQUEST消息分組的格式及內(nèi)容

本實施例的步驟5的詳細說明服務器在收到客戶端的DHCPREQUEST消息分組后,更新本地的IP地址分配數(shù)據(jù)庫,并用DHCPACK消息分組作為對DHCPREQUEST消息分組的應答。在DHCPREQUEST消息分組中,包含的內(nèi)容有1)動態(tài)主機配置協(xié)議服務提供的客戶端IP地址以及其他參數(shù)。
2)服務器的地址。
3)腳本語言解釋執(zhí)行程序的程序名稱或者摘要。
4)主動程序傳輸協(xié)議多播方式時客戶端和服務器所使用的端口。
5)其他參數(shù)。
DHCPACK消息分組的格式和內(nèi)容如表13所示。
表13 DHCPRACK消息分組的格式及內(nèi)容

本實施例的步驟6的詳細說明客戶端接收到DHCPACK消息分組以后,將確定本機可以使用的IP地址信息。并記錄其他的信息,可參見表13。其內(nèi)容包括1)動態(tài)主機配置服務提供的客戶端IP地址以及其他參數(shù)。
2)服務器的地址。
3)腳本語言解釋執(zhí)行程序的名稱或者摘要。
4)如果有,記錄主動程序傳輸協(xié)議多播時客戶端和服務器所使用的端口。
5)其他必要的參數(shù)。
到現(xiàn)在為止,動態(tài)主機配置擴展協(xié)議的交互過程完全結束。接下來的過程就是客戶端利用主動程序傳輸協(xié)議向服務器請求傳輸腳本語言解釋執(zhí)行程序的過程。
上述的說明已經(jīng)把動態(tài)主機配置擴展協(xié)議的具體實施細節(jié)進行了詳細地說明。在本發(fā)明的實施例中,動態(tài)主機配置擴展協(xié)議的實現(xiàn)是對通過對現(xiàn)有的動態(tài)主機配置協(xié)議的配置文件進行設置來實現(xiàn)的。下面是動態(tài)主機配置擴展協(xié)議服務器的配置文件的一個例子(其中#號后面的是注釋說明)<pre listing-type="program-listing"><![CDATA[  {  #本方法相關選項  option dhcp-class-identifier“MRBM-EDHCPSEClient”;  option vendor-encapsulated-options 030508000000ffff;  #全局選項  option subnet-mask 255.255.255.0;  default-lease-time-1;  #本方法中與主動程序傳輸協(xié)議相關的選項  option 138 255.255.255.0;  option 139 1005;  option 140 1006;  option 141 8;  #與子網(wǎng)有關的選項  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”;   }  }]]></pre>本實施例的步驟7的詳細說明步驟6以及步驟7其實是客戶端利用主動程序傳輸協(xié)議下載腳本語言解釋執(zhí)行程序的一個交互過程。主動程序傳輸協(xié)議是一個簡單、安全、高效的程序傳輸協(xié)議,它的特點如下1)協(xié)議簡單,便于實現(xiàn)。因此該協(xié)議可以用于嵌入式的環(huán)境作為程序的傳輸協(xié)議;功能簡單,它沒有文件傳輸協(xié)議FTP所提供的目錄及程序瀏覽的服務。
2)安全性好。在程序的命名上,主動程序傳輸協(xié)議可以采用基于MD5的單向哈希函數(shù)做摘要的方法,能夠實現(xiàn)程序正確的到達客戶端,并防止程序在傳輸?shù)倪^程中被惡意篡改。同時該協(xié)議沒有寫操作,不會對服務器造成由于寫而產(chǎn)生的安全問題。
3)基于UDP。原因主要是TCP太復雜,不便于在本方法中使用。為了可靠地傳輸數(shù)據(jù),該協(xié)議采用了客戶端超時重發(fā)請求的方法。
4)無狀態(tài)性。主動程序傳輸協(xié)議沒有連接的建立過程。
5)支持多播方式。為了支持很大數(shù)量的客戶端,解決并發(fā)啟動的性能問題,該協(xié)議能夠以多播方式傳送數(shù)據(jù),從而大大減少了并發(fā)啟動時對網(wǎng)絡帶寬的沖擊。
主動程序傳輸協(xié)議采用固定的數(shù)據(jù)塊大小進行傳輸。當客戶端需要傳輸數(shù)據(jù)時,客戶端向服務器提出請求。在客戶端的請求包中包括程序的信息以及需要傳輸?shù)臄?shù)據(jù)塊的塊號。在該協(xié)議中,傳輸?shù)臄?shù)據(jù)采用固定大小的數(shù)據(jù)塊(512 Byte)進行傳輸,因此服務器可以根據(jù)客戶端提出的請求包中的數(shù)據(jù)塊的塊號計算出應該傳輸?shù)臄?shù)據(jù)。在傳輸?shù)倪^程中,主動程序傳輸協(xié)議沒有連接的建立過程。在服務器上,并不保存每個連接的傳輸狀態(tài)。數(shù)據(jù)的傳輸由客戶端來控制,客戶端必須對已經(jīng)傳輸?shù)臄?shù)據(jù)的狀態(tài)有記錄。如果客戶端在一定時間內(nèi)沒有收到數(shù)據(jù),它就重新發(fā)出請求。
主動程序傳輸協(xié)議客戶端和服務器UDP端口的選用。當不使用多播傳輸時,客戶端使用1050端口。服務器監(jiān)聽1051端口。當使用多播方式傳送數(shù)據(jù)時,客戶端和服務器使用的端口由DHCPOFFER和DHCPACK消息中的相應選項域的值決定。參見表9。
主動程序傳輸協(xié)議傳輸程序數(shù)據(jù)的過程如下1客戶端發(fā)出讀請求包,該數(shù)據(jù)包中包含有程序的名稱或摘要以及請求的數(shù)據(jù)塊的塊號,初始為1。
2服務器收到客戶端的讀請求包后,檢查程序是否存在。如果存在,則發(fā)送數(shù)據(jù)包,否則發(fā)出錯誤包。
3客戶端如果收到數(shù)據(jù)包,則檢查數(shù)據(jù)包中的塊號是否存在,如果存在則丟棄該數(shù)據(jù)包,如果不存在,則保留在緩沖區(qū)。如果收到的數(shù)據(jù)塊的大小不足512個字節(jié),則轉6,否則將塊號加1,轉1。
4客戶端如果收到錯誤的包,則終止傳輸過程,并提示用戶。
5客戶端如果在一定時間(由DHCPACK消息中的主動程序傳輸協(xié)議等待時間選項決定)后,如果沒有收到服務器的應答消息,則重發(fā)請求,如果重發(fā)次數(shù)到達了10次,則終止傳輸過程,并向用戶報告。
6如果傳輸使用的是摘要的方法,則對程序進行基于摘要的檢查,如果程序正常通過檢查,則轉8,否則轉7。
7表明傳輸過程出現(xiàn)了錯誤,需要重新開始傳輸,如果重新開始的次數(shù)超過了3次,則終止傳輸并向用戶報告,否則轉1。
8傳輸正確,正常結束傳輸過程。
主動程序傳輸協(xié)議的包格式。該協(xié)議共有三中包,分別為讀請求包,數(shù)據(jù)應答包,錯誤包。各種包的格式如圖4所示。其用法分別說明如下讀請求包操作碼表示包的種類。括號中的數(shù)字為該域的長度(以下同)。類型為1時表示使用程序名來標識需要傳送的程序,為1時表示使用MD5摘要來標識需要傳輸?shù)某绦???蛇x項1和值1分別表示第一個選項和它的取值。當選項為’MUL’表示請求多播傳送數(shù)據(jù)包。
數(shù)據(jù)應答包其中的塊號從1開始連續(xù)編號。
錯誤包當傳輸過程發(fā)生錯誤的時候,服務器將向客戶端發(fā)送錯誤包,客戶端收到錯誤包后,立即終止傳輸過程,并向用戶報告。
主動程序傳輸協(xié)議對多播的支持。在主動程序傳輸時,如果DHCPOFFER和DHCPACK消息的選項域中發(fā)送了多播的參數(shù),并且客戶端也愿意使用多播方式來接收數(shù)據(jù)包,則客戶端可以接收多播的主動程序傳輸協(xié)議數(shù)據(jù)包??蛻舳私邮斩嗖?shù)據(jù)包分為四個階段監(jiān)聽,打開,接收和關閉。
主動程序傳輸協(xié)議多播監(jiān)聽階段監(jiān)聽過程的流程圖如圖5所示??蛻舳送ㄟ^監(jiān)聽主動程序傳輸協(xié)議的多播端口來收集有效的數(shù)據(jù)包。如果能夠收集到所有需要的數(shù)據(jù)包,則客戶端不需要進入打開階段了。
主動程序傳輸協(xié)議多播打開階段當在監(jiān)聽階段客戶端沒有收集到一個數(shù)據(jù)包時,則進入打開階段,使用單播方式從服務器接收數(shù)據(jù)。如果客戶端收到了一個多播數(shù)據(jù)包,則又進入監(jiān)聽階段。其過程如圖6所示。
多播接收階段客戶端在這個階段,接收從服務器上發(fā)出的多播數(shù)據(jù)包。
多播關閉階段當客戶端接收到所有數(shù)據(jù)包后,則客戶端完成了所有的傳輸工作。進入下一步的工作。
本實施例中的主動程序傳輸協(xié)議服務一直監(jiān)聽端口1051。傳輸服務服務器的工作步驟大體如下1監(jiān)聽UDP 1051端口。
2接收到主動程序傳輸協(xié)議讀請求,判斷需要傳輸?shù)某绦蚴欠翊嬖冢绻淮嬖?,則轉10。
3判斷是否使用多播,如果使用則轉7。
4計算所需要傳送的數(shù)據(jù)塊。
5如果系統(tǒng)中的線程數(shù)小于50,則新建立一線程。如果大于50,則選取一個老線程。
6隨機取一大于1024的未使用端口,使用新的線程或選取的老線程使用該端口向客戶端發(fā)送數(shù)據(jù)。轉1。
7如果是使用多播傳送數(shù)據(jù),則首先發(fā)送第一塊數(shù)據(jù)。
8增大數(shù)據(jù)塊的編號,繼續(xù)發(fā)送多播數(shù)據(jù)。
9如果程序數(shù)據(jù)全部多播結束,則終止多播傳輸。轉1。
10發(fā)送錯誤包。轉1。
本實施例的步驟8的詳細說明腳本語言解釋執(zhí)行程序下載后將被解開放置到內(nèi)存地址為0x10000000的地方。此過程結束后,內(nèi)存的使用情況如下表14腳本語言解釋執(zhí)行程序下載后內(nèi)存的使用情況

本實施例的步驟9的詳細說明腳本語言解釋執(zhí)行程序執(zhí)行,取得系統(tǒng)控制權。此時的內(nèi)存使用情況如下表15腳本語言解釋執(zhí)行的環(huán)境加載后內(nèi)存的使用情況


初始啟動代碼的代碼段的存在是為了復用部分的代碼,比如網(wǎng)卡驅動和TCP/IP協(xié)議棧。當然在實現(xiàn)中,我們也可以不考慮使用初始啟動代碼,而直接利用腳本語言解釋執(zhí)行程序來進行網(wǎng)絡環(huán)境的初始化,但必須繼承初始啟動代碼所獲得的主機配置信息。
腳本語言解釋執(zhí)行的環(huán)境通過對腳本的解釋執(zhí)行,接受用戶的輸入。根據(jù)用戶的選擇,客戶端利用主動程序傳輸協(xié)議下載操作系統(tǒng)內(nèi)核鏡像。
在本實施例中,給出了一個腳本語言的例子。其主要功能是接受用戶的輸入,并根據(jù)用戶的選擇加載相應的操作系統(tǒng)內(nèi)核鏡像。
該腳本語言是基于命令行的,命令后面是命令的參數(shù),其格式為Command parameter 1,parameter 2……下面是腳本語言的語言格式。
語法規(guī)則1命令以行為單位進行解析,行與行之間用換行或回車隔離2行的最大長度為255個字符3關鍵字或變量大小寫不敏感4“為字符串的分隔符5$開始的字符串表示變量6轉義符的使用\b 后退\n 換行\(zhòng)r 回車\t Tab\nnn用值為八進制數(shù)nnn的ASCII碼代替\X 表示不在上述的字符中的字符X字符串表達式字符串是指以”開始和以”結束的一串字符。如“Hello World!”數(shù)值表達式本腳本語言只使用32bitd的10進制整數(shù),從-2,147,483,646到2,147,483,647。數(shù)值表達式使用數(shù)值表達式中可以包括正數(shù)和負數(shù)。
表達式的形式為expr1 op expr2,其中op的取值可以為+,-,*,/,%;為了簡單起見,各個運算符之間沒有優(yōu)先級的區(qū)別,用括號表示運算的順序。
例如((4*6)+8)延遲命令delay命令可用于延遲,參數(shù)以秒為單位。
例如delay 3 延遲3秒delay 0.5延遲0.5秒文件的命名文件名為字符串。它們必須用雙引號括起來,文件名是大小寫敏感的,可用轉義符來表示特殊的字符。
如果文件名不是以/開始,則默認為從/tftpboot目錄下尋找。
如果文件名中出現(xiàn)冒號,則冒號前的部分將被解釋為計算機名。
例如“ald.image” 表示在/tftpboot目錄下的文件“/tftpboot/ald.image”指絕對路徑在/tftpboot下的文件名為ald.image的文件。
“192.168.0.72/tftpboot/ald.image”表示在IP地址為192.168.0.72計算機/tftpboot/目錄下的ald.image文件。
監(jiān)控命令Echo該命令的格式為Echo“text”,其用途是在屏幕上回現(xiàn)字符串”text”Beep該命令將使計算機發(fā)出聲。
控制命令Goto label指跳轉到標號為label的地方解釋執(zhí)行。
If...在本腳本語言中If命令只是檢查表達式的值是否為真,為真則執(zhí)行后面的命令,否則就繼續(xù)往下執(zhí)行。
例如If $val=”ERROR”TurnonBeep...
上面的腳本表示當變量val的值為”ERROR”時,則重啟計算機,否則使計算機發(fā)聲,并繼續(xù)往下執(zhí)行。
Set設置變量的值。
例如Set Vall=”sopca computer”Poweroff關閉計算機。
Turnon重啟計算機。
與鍵盤相關的命令
GetKey(var)等待用戶輸入一個鍵值,并存儲在變量var中。
WaitForKey duration在用戶按任意鍵前延遲duration秒。
Input(var)從鍵盤讀入一以回車結束的字符串。目前只支持30個字符。
文本輸出命令Print“text”在當前屏幕出打印字符串內(nèi)核鏡像加載命令LoadImage“kernel image name”加載內(nèi)核鏡像。
下面是一個用上下箭頭選擇的菜單腳本例子。兩個菜單分別啟動windows98和Linux系統(tǒng)。
<pre listing-type="program-listing"><![CDATA[  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=”O(jiān)K”  if“$ExitMenu”?。健癘K”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”]]></pre>本實施例的步驟10的詳細說明客戶端根據(jù)用戶的選擇,向服務器(主動程序傳輸服務)發(fā)出下載操作系統(tǒng)內(nèi)核鏡像的傳輸請求。
本實施例的步驟11的詳細說明
服務器(主動程序傳輸服務)響應客戶端的下載操作系統(tǒng)內(nèi)核鏡像的請求,傳輸操作系統(tǒng)內(nèi)核鏡像。
本實施例的步驟12的詳細說明如果操作系統(tǒng)的內(nèi)核鏡像不大,則客戶端利用主動程序傳輸協(xié)議下載操作系統(tǒng)內(nèi)核鏡像后,內(nèi)存的使用情況如表16所示表16操作系統(tǒng)內(nèi)核鏡像下載后內(nèi)存的使用情況(小鏡像)

如果操作系統(tǒng)的內(nèi)核鏡像比較大,則客戶端利用主動程序傳輸協(xié)議下載操作系統(tǒng)的內(nèi)核鏡像后,內(nèi)存的使用情況如17所示表17操作系統(tǒng)內(nèi)核鏡像下載后內(nèi)存的使用情況(大鏡像)

當操作系統(tǒng)內(nèi)核鏡像下載結束后,系統(tǒng)的控制權將交給多操作系統(tǒng)加載器。多操作系統(tǒng)加載器將根據(jù)內(nèi)核鏡像的格式,加載操作系統(tǒng)內(nèi)核鏡像。
為了加載多操作系統(tǒng)的內(nèi)核鏡像,必須對內(nèi)核鏡像的格式加以規(guī)定,使用統(tǒng)一的內(nèi)核鏡像格式,這樣加載器就能透明地加載各種操作系統(tǒng)的內(nèi)核鏡像。在Linux中,加載器工作在實模式下,操作系統(tǒng)內(nèi)核鏡像的大小不能超過1M。這在嵌入式系統(tǒng)中是完全滿足需要的。但是在加載象Windows系統(tǒng)時就行不通了。這時需要先加載DOS內(nèi)核,再在DOS環(huán)境中利用DOS工具啟動Windows系統(tǒng)。但是對Linux的加載器而言,它不需要知道這些細節(jié),它只是按照內(nèi)核鏡像的格式要求,在實模式下將內(nèi)核鏡像放置在規(guī)定的內(nèi)存物理區(qū)域。然后多操作系統(tǒng)加載器跳轉到該處執(zhí)行,從而釋放系統(tǒng)的控制權。
本方法中操作系統(tǒng)的內(nèi)核鏡像的格式如圖7所示,有關的含義說明如下內(nèi)核鏡像標識。目前的值為05h,0ah,0ah,05h,作為內(nèi)核鏡像的標識。
內(nèi)核鏡像在內(nèi)存中的裝載地址。
內(nèi)核鏡像的首次執(zhí)行地址。當內(nèi)核鏡像被加載程序成功地裝載到裝載地址后,加載程序將跳轉到執(zhí)行地址處執(zhí)行,從而釋放系統(tǒng)的控制權。
內(nèi)核鏡像的大小。該大小是指內(nèi)核鏡像解壓前的大小。
內(nèi)核鏡像解壓后所占用的內(nèi)存大小。該大小是內(nèi)核鏡像解壓后內(nèi)核所占用的內(nèi)存的大小。
程序的真正數(shù)據(jù)區(qū)。指內(nèi)核鏡像使用的數(shù)據(jù)區(qū)的大小。
至此,本發(fā)明所有的關于網(wǎng)絡環(huán)境下計算機遠程啟動方法的實施步驟都已經(jīng)進行了詳細的說明,本實施例僅給出本發(fā)明的一種具體實現(xiàn)方法,當不能限定本發(fā)明的保護范圍,凡對本實施例中所述方法的任何等同變換,均應屬于本發(fā)明權利要求書中所述的保護范圍。
權利要求
1.一種網(wǎng)絡環(huán)境下計算機遠程啟動的方法,首先在客戶端的計算機主板上或網(wǎng)卡上設置一個只讀存儲器或可擦可編程只讀存儲器,遠程啟動時包括以下步驟1)只讀存儲器中的初始啟動代碼在該計算機加電啟動后使用動態(tài)主機配置擴展協(xié)議獲得客戶端計算機的標識;2)然后通過主動程序傳輸協(xié)議從服務器上下載一個腳本語言解釋執(zhí)行程序并加載執(zhí)行;3)在該腳本語言解釋執(zhí)行的環(huán)境下,客戶端通過對語言腳本的解釋執(zhí)行讓用戶選擇需要加載的操作系統(tǒng);4)客戶端再利用主動程序傳輸協(xié)議從服務器上下載該操作系統(tǒng)的內(nèi)核鏡像并加載執(zhí)行,從而實現(xiàn)了計算機的遠程啟動。
2.如權利要求1所述的網(wǎng)絡環(huán)境下計算機遠程啟動的方法,其特征在于,所說的步驟1)具體包括如下的步驟(1)對初始啟動代碼進行初始化該過程包括檢查代碼自身的合法性和完整性;初始化本機環(huán)境和網(wǎng)絡環(huán)境等;(2)初始啟動代碼驅動網(wǎng)卡工作,并廣播DHCPDISCOVER消息分組,請求本機的IP地址,網(wǎng)關地址,啟動服務器地址,腳本語言解釋執(zhí)行程序等標識;(3)服務器接收到DHCPDISCOVER消息分組后,檢查第60號和43號選項,如果是動態(tài)主機配置擴展協(xié)議的消息分組,則向客戶端發(fā)送應答的DHCPOFFER消息分組;如果不是動態(tài)主機配置擴展協(xié)議的消息分組,則將其丟棄;(4)客戶端收到DHCPOFFER消息分組后,驗證該消息分組是否是動態(tài)主機配置擴展協(xié)議的消息分組,如果該消息分組是動態(tài)主機配置擴展協(xié)議的消息分組,則記錄有關動態(tài)主機配置協(xié)議參數(shù),服務器地址,腳本語言解釋執(zhí)行程序等內(nèi)容,否則丟棄該消息分組,同時客戶端向服務器發(fā)送DHCPREQUEST消息分組并等待服務器的同意應答;(5)服務器收到DHCPREQUEST消息分組后,向客戶端發(fā)送DHCPACK消息分組作為應答。
3.如權利要求1所述的網(wǎng)絡環(huán)境下計算機遠程啟動的方法,其特征在于,所說的步驟2)具體包括如下的步驟(1)客戶端收到DHCPACK消息分組后,驗證該消息分組是否是動態(tài)主機配置擴展協(xié)議的消息分組,如果該消息分組是動態(tài)主機配置擴展協(xié)議的消息分組,則記錄相關的內(nèi)容,否則丟棄該消息分組;同時客戶端根據(jù)返回的內(nèi)容向服務器發(fā)出請求下載腳本語言解釋執(zhí)行程序的傳輸請求;(2)服務器接收到客戶端的程序傳輸服務的請求后,利用主動程序傳輸協(xié)議的單播或多播方式向客戶端傳送腳本語言解釋執(zhí)行程序。
4.如權利要求1所述的網(wǎng)絡環(huán)境下計算機遠程啟動的方法,其特征在于,所說的步驟3)具體包括如下的步驟(1)客戶端接收完腳本語言解釋執(zhí)行程序,并將其存儲在本地內(nèi)存中;客戶端加載執(zhí)行腳本語言解釋執(zhí)行程序,初始啟動代碼釋放系統(tǒng)控制權,腳本語言解釋執(zhí)行程序初始化腳本語言解釋執(zhí)行的環(huán)境;(2)客戶端腳本語言解釋執(zhí)行的環(huán)境解釋執(zhí)行語言腳本,在此階段,用戶使用鍵盤選擇需要加載的操作系統(tǒng)。
5.如權利要求1所述的網(wǎng)絡環(huán)境下計算機遠程啟動的方法,其特征在于,所說的步驟4)具體包括如下的步驟(1)客戶端根據(jù)用戶選擇的操作系統(tǒng)的內(nèi)核鏡像的程序名稱、路徑或摘要,向服務器發(fā)出請求下載操作系統(tǒng)內(nèi)核鏡像的程序傳輸請求;(2)服務器接收到客戶端發(fā)出的程序傳輸服務的請求后,利用主動程序傳輸協(xié)議的單播或多播方式向客戶端傳送操作系統(tǒng)的內(nèi)核鏡像;(3)客戶端接收操作系統(tǒng)內(nèi)核鏡像并將其存儲在本地內(nèi)存中,客戶端再利用多操作系統(tǒng)加載器加載執(zhí)行操作系統(tǒng)內(nèi)核鏡像,至此,操作系統(tǒng)加載完畢。
6.如權利要求1所述的網(wǎng)絡環(huán)境下計算機遠程啟動的方法,其特征在于,所說的動態(tài)主機配置擴展協(xié)議是對動態(tài)主機配置協(xié)議DHCP的選項進行自定義而得到的,包括如下的內(nèi)容1)標簽號為60的選項,該選項的值定義為“MRBM-EDHCPSEClient”;2)標簽號為43的選項,該選項的值定義為“030508000000ffff”;3)標簽號為165的選項,該選項的用來傳遞給腳本語言解釋執(zhí)行程序的參數(shù);4)標簽號為138的選項,該選項定義為主動程序傳輸協(xié)議進行傳輸程序時的多播地址;5)標簽號為139的選項,該選項的含義為主動程序傳輸協(xié)議以多播方式傳輸程序時客戶端監(jiān)聽主動程序傳輸協(xié)議數(shù)據(jù)包的UDP端口;6)標簽號為140的選項,該選項的含義為主動程序傳輸協(xié)議以多播方式傳輸程序時服務器監(jiān)聽主動程序傳輸協(xié)議請求的UDP端口;7)標簽號為141的選項,該選項的含義為客戶端重發(fā)主動程序傳輸協(xié)議請求前等待的時間;8)標簽號為142的選項,該選項的含義為服務器監(jiān)聽主動程序傳輸協(xié)議請求的延遲時間;9)標簽號為143的選項,該選項的含義為主動程序傳輸協(xié)議要傳輸程序的摘要。
7.如權利要求1所述的網(wǎng)絡環(huán)境下計算機遠程啟動的方法,其特征在于,所說的主動程序傳輸協(xié)議在客戶端下載程序時的步驟如下1)客戶端發(fā)出讀請求包,該數(shù)據(jù)包中包含有程序的名稱或摘要以及請求的數(shù)據(jù)塊的塊號,初始為1;2)服務器收到客戶端的讀請求包后,檢查程序是否存在,如果存在,則發(fā)送數(shù)據(jù)包,否則發(fā)出錯誤包;3)客戶端如果收到數(shù)據(jù)包,則檢查數(shù)據(jù)包中的塊號是否存在,如果存在則丟棄該數(shù)據(jù)包,如果不存在,則保留在緩沖區(qū);如果收到的數(shù)據(jù)塊的大小不足512個字節(jié),則轉6),否則將塊號加1,轉1);4)客戶端如果收到錯誤的包,則終止傳輸過程,并提示用戶;5)客戶端如果在一定時間后,如果沒有收到服務器的應答消息,則重發(fā)請求,如果重發(fā)次數(shù)到達了10次,則終止傳輸過程,并向用戶報告;6)如果傳輸使用的是摘要的方法,則對程序進行基于摘要的檢查,如果程序正常通過檢查,則轉8),否則轉7);7)表明傳輸過程出現(xiàn)了錯誤,需要重新開始傳輸,如果重新開始的次數(shù)超過了3次,則終止傳輸,并向用戶報告;否則轉1);8)傳輸正確,正常結束傳輸過程。
8.如權利要求1所述的網(wǎng)絡環(huán)境下計算機遠程啟動的方法,其特征在于,所說的操作系統(tǒng)的內(nèi)核鏡像的格式內(nèi)容具體包括1)內(nèi)核鏡像標識,目前的值為05h,0ah,0ah,05h,作為內(nèi)核鏡像的標識;2)內(nèi)核鏡像在內(nèi)存中的裝載地址;3)內(nèi)核鏡像的首次執(zhí)行地址,當內(nèi)核鏡像加載程序成功地裝載到裝載地址后,跳轉到執(zhí)行地址處執(zhí)行,從而釋放系統(tǒng)的控制權;4)內(nèi)核鏡像的大小,該長度是指內(nèi)核鏡像為解壓前的大小;5)內(nèi)核鏡像解壓后所占用的內(nèi)存大小;6)程序的真正數(shù)據(jù)區(qū)。
全文摘要
本發(fā)明屬于計算機網(wǎng)絡領域,其步驟包括:只讀存儲器中的初始啟動代碼在該計算機加電啟動后使用動態(tài)主機配置擴展協(xié)議獲得客戶端計算機的標識;然后通過主動程序傳輸協(xié)議從服務器上下載一個腳本語言解釋執(zhí)行程序并加載執(zhí)行;在該腳本語言解釋執(zhí)行的環(huán)境下,客戶端通過對語言腳本的解釋執(zhí)行讓用戶選擇需要加載的操作系統(tǒng);客戶端再利用主動程序傳輸協(xié)議從服務器上下載操作系統(tǒng)內(nèi)核鏡像并加載執(zhí)行,從而實現(xiàn)了計算機的遠程啟動。本發(fā)明具有可靠、安全、高效,使用簡單,并且能夠支持多操作系統(tǒng)的啟動的特點。本發(fā)明可用于網(wǎng)絡計算機的遠程啟動,PC的多操作系統(tǒng)遠程啟動,還可以用于智能家電的遠程啟動,在信息家電領域有很好的應用前景。
文檔編號G06F9/445GK1334510SQ0114203
公開日2002年2月6日 申請日期2001年9月7日 優(yōu)先權日2001年9月7日
發(fā)明者張堯學, 周悅芝, 王勇, 彭玉坤, 王曉輝 申請人:清華大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1