两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種文件傳輸方法

文檔序號:7749470閱讀:388來源:國知局
專利名稱:一種文件傳輸方法
技術(shù)領(lǐng)域
本發(fā)明涉及文件傳輸方法,特別涉及基于簡單文件傳輸協(xié)議(Trivial FileTransfer Protocol, TFTP)優(yōu)化的文件傳輸方法。
背景技術(shù)
TFTP是一個傳輸文件的簡單協(xié)議(參考RFC (Request For Comments) 1350),其實 現(xiàn)基于用戶數(shù)據(jù)包協(xié)議(User Datagram Pr0t0C0l,UDP),可以在不同網(wǎng)絡(luò)的主機間進行文 件傳送。下面對TFTP進行詳細說明。TFTP基于UDP實現(xiàn),其協(xié)議分層從下至上依次為物理層、數(shù)據(jù)鏈路層、互聯(lián)網(wǎng)協(xié)議 (Internet Protocol,IP)層、UDP層、TFTP層。TFTP使用端口 69作為服務(wù)器端口,其所支 持的指令有如下5種。opcode operation1Read request (RRQ)2Write request (WRQ)3Data (DATA)4Acknowledgment (ACK)5Error (ERROR)其中,opcode為1、2、3、5的報文是TFTP客戶端所使用的報文,而opcode為3、4、 5的報文是TFTP服務(wù)器所使用的報文。更具體地,TFTP指令的opcode為1 (RRQ) ,2 (WRQ)時,指令的報文格式如下。
opcode filename 0 mode 0其中,opcode表示指令,占兩個字節(jié),具體地為“1”或“2”。filename表示文件名, 是以0為終止符的ascii字符串。filename后緊接一個值為0的字節(jié)。mode表示傳輸模 式,是以0為終止符的ascii字符串。TFTP支持兩種傳輸模式,mode為字符串“netascii”, 則表示數(shù)據(jù)是8位的ASCII碼形式,而mode為字符串“octet”,則表示數(shù)據(jù)是8位的源數(shù)據(jù) 類型。mode后緊接一個值為0的字節(jié)。RRQ指令或WRQ指令只能由TFTP客戶端發(fā)起。TFTP指令的opcode為3 (DATA)時,指令的報文格式如下。
opcode block#data其中,opcode表示指令,占兩個字節(jié),具體地為“3”。Block#表示文件數(shù)據(jù)塊號, 占2個字節(jié),且1 <= Block# <= 65535。data表示文件數(shù)據(jù),占0 512字節(jié)。如果不 是最后一個數(shù)據(jù)塊,則data必須為512字節(jié),如果是最后一個數(shù)據(jù)塊,data必須小于512字節(jié)(可以為0)。如果TFTP客戶端發(fā)起RRQ(讀文件),則由TFTP服務(wù)器發(fā)送DATA。如果TFTP客戶端發(fā)起WRQ (,寫文件),則由TFTP客戶端發(fā)送DATA。TFTP指令的opcode為4 (ACK)時,指令的報文格式如下。 其中,opcode表示指令,占兩個字節(jié),具體地為“4”。Block#表示文件數(shù)據(jù)塊號, 占2個字節(jié),且1 <= Block# <= 65535,用于對opcode為1或2的讀或?qū)懳募噶钸M行 確認。每一個RRQ或WRQ指令必須對應(yīng)一個確認字符、即ACK。如果TFTP客戶端發(fā)起 RRQ(讀文件),則TFTP服務(wù)器發(fā)送DATA,TFTP客戶端回應(yīng)ACK。如果TFTP客戶端發(fā)起 WRQ (寫文件),則TFTP客戶端發(fā)送DATA,TFTP服務(wù)器回應(yīng)ACK。TFTP指令的opcode為5 (ERROR)時,指令的報文格式如下。 其中,opcode表示指令,占兩個字節(jié),具體地為“5”。errorcode表示錯誤號,占2 個字節(jié),errorcode的值以及其相應(yīng)的含義如下。0 未定義錯誤,錯誤原因參考errmsg1 指定的文件不存在2 指定的文件不允許訪問3 磁盤空間滿4 不可識別的 TFTP opcode5 IP報文的傳輸ID錯誤6 指定的文件已經(jīng)存在7 沒有指定的用戶errmsg表示錯誤消息,是以0為終止符的ascii字符串,用以提示用戶有關(guān)錯誤的 消息。errmsg后緊接一個值為0的字節(jié)。圖1為表示現(xiàn)有的典型的TFTP客戶端從TFTP服務(wù)器獲取文件的過程的圖。在步驟1010,TFTP客戶端向TFTP服務(wù)器發(fā)送讀文件指令,即opcode為1 (RRQ); filename為指定要讀取的文件名;mode為“octet”表示以二進制方式傳輸。在步驟1021,TFTP服務(wù)器收到TFTP客戶端的讀指令后,TFTP服務(wù)器向TFTP客戶 端發(fā)送數(shù)據(jù),即opcode為3(DATA) ;block#為1,表示本次發(fā)送的數(shù)據(jù)是指定文件的第一塊 512字節(jié)的數(shù)據(jù);data為指定文件的第一塊512字節(jié)的數(shù)據(jù)。在步驟1022,TFTP客戶端收到TFTP服務(wù)器發(fā)送的數(shù)據(jù)后,TFTP客戶端向TFTP服 務(wù)器發(fā)送確認指令,即opcode為4 (ACK) ;block#為1,表示TFTP客戶端已經(jīng)收到步驟1021 的數(shù)據(jù)。在步驟1031,TFTP服務(wù)器收到TFTP客戶端的確認指令后,TFTP服務(wù)器向TFTP客戶端發(fā)送數(shù)據(jù),即opcode為3 (DATA) ;block#為2,表示本次發(fā)送的數(shù)據(jù)是指定文件的第二 塊512字節(jié)的數(shù)據(jù);data為指定文件的第二塊512字節(jié)的數(shù)據(jù)。在步驟1032,TFTP客戶端收到TFTP服務(wù)器發(fā)送的數(shù)據(jù)后,TFTP客戶端向TFTP服 務(wù)器發(fā)送確認指令,即opcode為4 (ACK) ;block#為2,表示TFTP客戶端已經(jīng)收到步驟1031 的數(shù)據(jù)。以此類推,TFTP服務(wù)器與TFTP客戶端依次發(fā)送第3塊至第n_l塊的數(shù)據(jù)及確認 指令。每一個數(shù)據(jù)塊的大小為512字節(jié)。這里,η為指定的要讀取的文件的數(shù)據(jù)塊數(shù)。接著,在步驟10nl,TFTP服務(wù)器向TFTP客戶端發(fā)送數(shù)據(jù),即opcode為3 (DATA); block#為n,表示本次發(fā)送的數(shù)據(jù)是指定文件的第η塊數(shù)據(jù)(也是最后一塊數(shù)據(jù)),數(shù)據(jù)長 度小于512字節(jié)(也可以為0) ;data為指定文件的第η塊數(shù)據(jù)(,也是最后一塊數(shù)據(jù))。在步驟10n2,TFTP客戶端向TFTP服務(wù)器發(fā)送確認指令,即opcode為4(ACK); block#為n,表示TFTP客戶端已經(jīng)收到步驟IOnl的數(shù)據(jù);整個文件傳輸過程結(jié)束。TFTP協(xié)議設(shè)計的初旨是進行小文件的傳輸,因此很容易實現(xiàn),但不具備通常的文 件傳輸協(xié)議(File Transfer Protocol, FTP)所具有的許多功能,例如TFTP只能從文件服 務(wù)器上下載文件或向文件服務(wù)器上載文件,而不能像FTP那樣列出目錄,也不具有FTP所具 有的認證功能。尤其,最早的TFTP協(xié)議因太過簡單,而有很多限制。比如,文件塊只能是 512字節(jié),傳輸效率低,再則沒有約定超時機制。為解決這些問題,對TFTP協(xié)議進行了擴展, 具體地,RFC2347允許擴展選項,RFC2348允許文件塊大小協(xié)商,RFC2349允許超時協(xié)商。具體地,當TFTP指令的opcode為1、2時,指令的報文格式如下。 其中,0pC0de、filename及mode的含義不變。mode后可以跟多個選項對。每個選 項對由一個op和一個value構(gòu)成,op和value后緊跟一個值為0的字節(jié)。op為自定義選 項名稱,是以“0”為終止符的ascii字符串。value為自定義選項值,是以“0”為終止符的 ascii字符串。比如在RFC2348中,允許協(xié)商data的大小,此時,op為“blksize”,value為字符 串,該字符串為數(shù)字,單位為字節(jié),比如“ 1428”表示1428字節(jié)。而在RFC2349中,則允許協(xié)商重傳時間。此時,op為“timeout”,value為字符串, 該字符串表示數(shù)字,單位為秒,比如“30”表示30秒。并且,在RFC2349中,允許通告文件大 小,此時,op為“tsize”,value為字符串,該字符串表示數(shù)字,單位為字節(jié),比如“234567” 表示234567字節(jié)。而且,新增如下的TFTP指令。opcode operation6acknowledge the options (OACK)上述OACK指令、即選項確認字符指令的報文格式如下 其中,opcode表示指令,占兩個字節(jié),具體地為“6”。opcode后可以跟多個選項對。 每個選項對由一個OP和一個value構(gòu)成,op和value后緊跟一個值為O的字節(jié)。op為自 定義選項名稱,是以“O”為終止符的ascii字符串。value為自定義選項值,是以“O”為終 止符的ascii字符串。TFTP服務(wù)器收到攜帶選項的RRQ或WRQ后,回應(yīng)0ACK。如果TFTP服務(wù)器支持TFTP 客戶端指定的選項,則OACK中攜帶對應(yīng)的選項對,op為TFTP客戶端發(fā)送的選項名,value 為TFTP服務(wù)器支持的相應(yīng)op選項的值。通過TFTP客戶端攜帶自定義選項,TFTP服務(wù)器回應(yīng)0ACK,TFTP服務(wù)器和客戶端可以協(xié)商具體的選項。TFTP客戶端收到TFTP服務(wù)器的OACK后,回應(yīng)ACK(black#為0),表 示接受TFTP服務(wù)器的選項值。以下,將RFC2347、RFC2348、RFC2349中帶有擴展選項op及value的TFTP指令稱 為TFTP擴展指令。圖2為以支持文件傳輸塊大小協(xié)商的RFC2348為例,示出TFTP客戶端從TFTP服 務(wù)器獲取文件的過程的圖。在步驟2011,TFTP客戶端向TFTP服務(wù)器發(fā)送讀文件指令,即opcode為1 (RRQ); filename為指定要讀取的文件名;mode為“octet”表示以二進制方式傳輸;第一個自定義 選項關(guān)鍵字(op)為“blksize”,第一個自定義選項值(value)為1432。在步驟2012,TFTP服務(wù)器收到步驟2011中由TFTP發(fā)送的指令后,發(fā)現(xiàn)有自定 義選項“blksize”,TFTP服務(wù)器本身支持這個自定義選項(“blksize”)和自定義選項值 (1432),則回應(yīng)TFTP客戶端0ACK,即opcode為6 (OACK);第一個自定義選項關(guān)鍵字(op)為 "blksize",第一個自定義選項值(value)為1432,表示確認支持TFTP客戶端指定的自定義 選項。在步驟2013,TFTP客戶端收到TFTP服務(wù)器發(fā)送的0ACK,發(fā)現(xiàn)TFTP服務(wù)器支持自 己(TFTP客戶端)指定的自定義選項“blksize”及選項值“1432”,說明選項協(xié)商成功,回應(yīng) TFTP服務(wù)器ACK,即opcode為4 (ACK) ;block#為0,表示選項協(xié)商成功。在步驟2021,TFTP服務(wù)器收到TFTP客戶端的選項協(xié)商成功確認后,向TFTP客戶 端發(fā)送第一塊數(shù)據(jù),即opcode為3(DATA) ;block#為1,表示本次發(fā)送的數(shù)據(jù)是指定文件的 第一塊1432字節(jié)的數(shù)據(jù);data為指定文件的第一塊1432字節(jié)的數(shù)據(jù)。在步驟2022,TFTP客戶端向TFTP服務(wù)器發(fā)送確認指令,即opcode為4 (ACK); block#為2,表示TFTP客戶端已經(jīng)收到步驟2021的數(shù)據(jù)。接著,TFTP服務(wù)器與TFTP客戶端依次發(fā)送第二塊至第n_l塊的數(shù)據(jù)及確認指令。 每一個數(shù)據(jù)塊的大小為1432字節(jié)。這里,η為指定的要讀取的文件的數(shù)據(jù)塊數(shù)。接著,在步驟20nl,TFTP服務(wù)器向TFTP客戶端發(fā)送數(shù)據(jù),即opcode為3 (DATA); block#為n,表示本次發(fā)送的數(shù)據(jù)是指定文件的第η塊數(shù)據(jù)(也是最后一塊數(shù)據(jù)),數(shù)據(jù)長 度小于1432字節(jié)(也可以為0) ;data為指定文件的第η塊數(shù)據(jù)(也是最后一塊數(shù)據(jù))。在步驟20n2,TFTP客戶端向TFTP服務(wù)器發(fā)送確認指令,即opcode為4 (ACK); block#為n,表示TFTP客戶端已經(jīng)收到步驟20nl的數(shù)據(jù);整個文件傳輸過程結(jié)束。上述的RFC2347、RFC2348、RFC2349只是對TFTP協(xié)議進行擴展,優(yōu)化了傳輸效率, 但本質(zhì)上還是客戶機/服務(wù)器(Client/Server,CS)結(jié)構(gòu),無法消除TFTP服務(wù)器性能瓶頸的隱患。

發(fā)明內(nèi)容
鑒于現(xiàn)有TFTP中存在的問題,本發(fā)明提供了一種文件傳輸方法,能夠消除由于CS 結(jié)構(gòu)導致的TFTP服務(wù)器性能瓶頸。為了實現(xiàn)上述目的,根據(jù)本發(fā)明的一種文件傳輸方法,其特征在于,包括步驟所 述客戶端向固定服務(wù)器端請求下載指定文件;所述固定服務(wù)器指示所述客戶端從固定服務(wù) 器或臨時服務(wù)器下載所述指定文件,其中,所述臨時服務(wù)器是指曾經(jīng)作為客戶端下載過并 保存有所述指定文件而且能夠向所述客戶端提供文件下載服務(wù)的其他客戶端;所述固定服 務(wù)器保存有臨時服務(wù)器列表,所述臨時服務(wù)器列表記錄有所有構(gòu)成臨時服務(wù)器的所述其他 客戶端的互聯(lián)網(wǎng)協(xié)議地址。并且,上述的文件傳輸方法中,其特征在于,所述固定服務(wù)器指示所述客戶端從一 個固定服務(wù)器或臨時服務(wù)器下載所述指定文件的全部,或從多個固定服務(wù)器或臨時服務(wù)器 分別下載所述指定文件的一部分,而組成整個所述指定文件。并且,上述的文件傳輸方法中,其特征在于,所述客戶端向所述固定服務(wù)器發(fā)送的 簡單文件傳輸協(xié)議(TFTP)的文件下載請求(RRQ)包含一對由自定義選項名稱(op)和自定 義選項值(value)構(gòu)成的自定義選項對,所述自定義選項名稱為“p2p”,用于表示所述客戶 端支持點對點文件傳輸機制;所述固定服務(wù)器向所述客戶端回應(yīng)選項確認指令(OACK),所 述選項確認指令(OACK)包含所述自定義選項對,所述自定義選項名稱為“p2p”,則表示所 述固定服務(wù)器支持點對點文件傳輸機制。并且,上述的文件傳輸方法中,其特征在于,所述文件下載請求(RRQ)中所包含自 定義選項值(value)包含文件模式(file-mode)位,用于表示所述客戶端可以從一個固定 服務(wù)器或臨時服務(wù)器下載所述指定文件的全部,或可以從多個固定服務(wù)器或臨時服務(wù)器分 別下載所述指定文件的一部分,而組成整個所述指定文件,或表示該兩種模式均支持;所述 選項確認指令(OACK)中所包含自定義選項值(value)包含文件模式(file-mode)位,用于 指示所述客戶端從一個固定服務(wù)器或臨時服務(wù)器下載所述指定文件的全部,或從多個固定 服務(wù)器或臨時服務(wù)器分別下載所述指定文件的一部分,而組成整個所述指定文件,或指示 任意選擇該兩種模式之一。并且,上述的文件傳輸方法中,其特征在于,所述文件下載請求(RRQ)中所包含自 定義選項值(value)還包含第一互聯(lián)網(wǎng)地址(first-ip),所述第一互聯(lián)網(wǎng)地址(first-ip) 為所述固定服務(wù)器的互聯(lián)網(wǎng)協(xié)議地址;所述選項確認指令(OACK)中所包含自定義選項值 (value)還包含第一互聯(lián)網(wǎng)地址(first-ip),所述第一互聯(lián)網(wǎng)地址(first-ip)為所述固定 服務(wù)器的互聯(lián)網(wǎng)協(xié)議地址。并且,上述的文件傳輸方法中,其特征在于,所述選項確認指令(OACK)中所包含 自定義選項值(value)還包含計數(shù)(count)位,用于表示所述固定服務(wù)器指示所述客戶端 用于下載文件的固定服務(wù)器或臨時服務(wù)器的個數(shù)。并且,上述的文件傳輸方法中,其特征在于,當所述計數(shù)(count)位為“0”,表示所述固定服務(wù)器指示所述客戶端從所述固定服務(wù)器下載完整的所述指定文件。并且,上述的文件傳輸方法中,其特征在于,當所述計數(shù)(count)位為“1”,所述選項確認指令(OACK)中所包含自定義選項值(value)還包含一個第二互聯(lián)網(wǎng)協(xié)議地址(ip) 時,表示所述固定服務(wù)器指示所述客戶端可以從所述固定服務(wù)器或所述第二互聯(lián)網(wǎng)協(xié)議地 址(ip)的臨時服務(wù)器下載完整的所述指定文件。并且,上述的文件傳輸方法中,其特征在于,當所述計數(shù)(count)位的值大于1,所 述選項確認指令(OACK)中所包含自定義選項值(value)還包含多個第二互聯(lián)網(wǎng)協(xié)議地址 (ip)及多個下載開始位置(begin)、下載結(jié)束位置(end)時,表示所述固定服務(wù)器指示所述 客戶端從所述多個互聯(lián)網(wǎng)協(xié)議地址(ip)的臨時服務(wù)器分別下載所述指定文件的所述下載 開始位置(begin)和下載結(jié)束位置(end)之間所對應(yīng)的部分。并且,上述的文件傳輸方法中,其特征在于,所述文件下載請求(RRQ)中所包含自 定義選項值(value)包含工作模式(work-mode)位,使用值“ 1”表示所述客戶端只能工作 在客戶端模式,或使用值“2”表示所述客戶端在下載完畢所述指定文件后,還可以作為臨時 服務(wù)器向其他客戶端提供文件下載服務(wù);所述文件下載請求(RRQ)中所包含自定義選項值 (value)包含工作模式(work-mode)位表示所述客戶端在下載完畢所述指定文件后作為臨 時服務(wù)器工作時,所述固定服務(wù)器將所述客戶端作為與所述指定文件相對應(yīng)的臨時服務(wù)器 記錄到所述臨時服務(wù)器列表中。并且,上述的文件傳輸方法中,其特征在于,所述選項確認指令(OACK)中所包含 自定義選項值(value)還包含工作模式(work-mode)位,使用值“3”表示所述固定服務(wù)器 的工作模式為固定服務(wù)器。并且,上述的文件傳輸方法中,其特征在于,所述文件下載請求(RRQ)中所包含自 定義選項值(value)包含時間(time)位,用于表示所述客戶端能夠工作在臨時服務(wù)器模式 的時間長度;所述固定服務(wù)器將所述時間(time)作為所述臨時服務(wù)器的信息記錄到所述 臨時服務(wù)器列表中。并且,上述的文件傳輸方法中,其特征在于,所述選項確認指令(OACK)中所包含 自定義選項值(value)還包含時間(time)位,使用無限大值表示所述固定服務(wù)器工作在固 定服務(wù)器模式。根據(jù)本發(fā)明的文件傳輸方法,文件傳輸設(shè)備并非固定為客戶端或服務(wù)器端,而是 即可以工作于客戶端模式或服務(wù)器模式,也可以工作在客戶端模式的同時,支持作為臨時 的服務(wù)器。因此能夠?qū)崿F(xiàn)點對點文件傳輸機制,消除了由于CS結(jié)構(gòu)導致的TFTP服務(wù)器性 能瓶頸。


通過下面結(jié)合附圖進行的描述,本發(fā)明的上述和其他目的和特點將會變得更加清 楚,其中圖1為表示現(xiàn)有的典型的TFTP客戶端從TFTP服務(wù)器獲取文件的過程的圖;圖2為以支持文件傳輸塊大小協(xié)商的RFC2348為例,示出TFTP客戶端從TFTP服務(wù)器獲取文件的過程的圖;圖3為表示根據(jù)本發(fā)明實施方式的TFTP客戶端1下載文件A的具體過程的圖;圖4為表示根據(jù)本發(fā)明實施方式的TFTP客戶端2下載文件A的具體過程的圖;圖5為示出了根據(jù)本發(fā)明實施方式的TFTP客戶端2從TFTP客戶端1下載文件的具體過程的圖;圖6為示出了根據(jù)本發(fā)明實施方式的TFTP客戶端3從TFTP服務(wù)器1下載文件A 的具體過程的圖;圖7為示出了根據(jù)本發(fā)明實施方式的TFTP客戶端3從臨時服務(wù)器(即TFTP客戶 端1)下載文件的一部分的具體過程的圖;圖8為示出了根據(jù)本發(fā)明實施方式的TFTP客戶端3從臨時服務(wù)器(即TFTP客戶 端2)下載文件A的剩余部分數(shù)據(jù)的具體過程的圖。
具體實施例方式以下,參照附圖及表格詳細說明本發(fā)明的實施方式。(實施方式)根據(jù)本發(fā)明的實施方式的文件傳輸方法,是基于RFC2347對TFTP進行的優(yōu)化,具 體地,擴展TFTP選項,引入點對點(Peer-to-Peer,p2p)機制。通過在文件傳輸設(shè)備之間引入p2p機制,文件傳輸設(shè)備并非固定為客戶端或服務(wù) 器端,而是即可以工作于客戶端模式或服務(wù)器模式,也可以工作在客戶端模式的同時,支持 作為臨時的服務(wù)器。具體地,p2p機制是指客戶端先從一個服務(wù)器(這里稱為first)獲取文件信息, 文件信息中包含“文件大小”以及“表示哪些其它服務(wù)器(這里稱為second,可能是多個) 可以提供指定的下載文件的信息”等。此時,自定義選項名稱、即OP為“p2p”,是以0為終止符的ascii字符串。該op選 項只支持RRQ (即下載文件)和OACK指令指令。相應(yīng)地,自定義選項值、即value為變長字 節(jié)數(shù)值,其構(gòu)成為 work-mode+file-mode+first-ip+time+count+info-list0<work-mode>work-mode表示工作模式,為1字節(jié)數(shù)值,數(shù)值為“ 1”則表示文件傳輸設(shè)備工作 在客戶端模式,數(shù)值為“2”則表示文件傳輸設(shè)備工作在客戶端模式,同時支持作為臨時的 TFTP服務(wù)器。數(shù)值為“3”則表示設(shè)備工作在服務(wù)器模式,即固定作為TFTP服務(wù)器。<file-mode>fle-mode表示文件獲取模式,為1字節(jié)數(shù)值。bitO,對于TFTP客戶端,表示支持從 指定的一個TFTP服務(wù)器(包括臨時或固定的TFTP服務(wù)器)下載完整文件,而對于TFTP服 務(wù)器,表示允許一個TFTP客戶端從自己這里下載指定的完整的文件。bitl,對于TFTP客戶 端,表示支持從指定的多個TFTP服務(wù)器(包括臨時或固定的TFTP服務(wù)器)下載所述指定 文件的不同部分;而對于TFTP服務(wù)器,表示允許一個TFTP客戶端從自己這里下載所述指定 文件的一部分數(shù)據(jù),其它位保留。bitO和bitl不沖突,可以同時置位,bitO和bitl同時置位時,對于TFTP客戶端,表示既可以從指定的一個TFTP服務(wù)器(包括臨時或固定的TFTP服務(wù)器)下載完整文件, 也可以從指定的多個TFTP服務(wù)器(包括臨時或固定的TFTP服務(wù)器)下載所述指定文件的 不同部分。而對于TFTP服務(wù)器,則表示既允許一個TFTP客戶端從自己這里下載指定的完 整的文件,也允許一個TFTP客戶端從自己這里下載所述指定文件的一部分數(shù)據(jù)。<first-ip>
f irSt-ip表示TFTP服務(wù)器IP地址,為4字節(jié)數(shù)值。(1)當TFTP客戶端向frst發(fā)起RRQ請求時,first-ip為first的IP地址。first 收到TFTP客戶端的RRQ請求后可以校驗first-ip是否為自己的IP地址。Second收到 TFTP客戶端的RRQ請求后可以校驗first-ip是否是自己信任的first推薦過來的。(2)當TFTP服務(wù)器(包括臨時TFTP服務(wù)器)回應(yīng)OACK時,first-ip為前面RRQ 請求中相應(yīng)的first-ip。<time>time表示TFTP客戶端下載完指定文件后作為臨時TFTP服務(wù)器提供這個文件的下 載服務(wù)的時間長度,為4字節(jié)數(shù)值,單位為秒。(1)當TFTP客戶端發(fā)起RRQ請求時,如果客戶端支持臨時TFTP服務(wù)器,則time表 示自己支持作為臨時TFTP服務(wù)器的時間長度;如果客戶端支持固定TFTP服務(wù)器,time必 須為Oxffffffff,表示無限時間長度;如果客戶端只支持客戶端模式,則time必須為0。(2)當固定TFTP服務(wù)器回應(yīng)OACK時,time無意義。(3)當臨時TFTP服務(wù)器回應(yīng)OACK時,time是臨時TFTP服務(wù)器剩余的服務(wù)時間長 度(承諾的時間長度減去已經(jīng)工作的時間長度)。<count>count表示后面info-list的個數(shù),為2字節(jié)數(shù)值。(1)當TFTP客戶端向固定TFTP服務(wù)器發(fā)起RRQ時,count必須為0。(2)當TFTP客戶端向臨時TFTP服務(wù)器發(fā)起RRQ時,count必須為0或1。count 為0表示希望從臨時TFTP服務(wù)器下載指定的完整文件;count為1,表示下載info-list指 定的部分文件。(3)當固定TFTP服務(wù)器向TFTP客戶端發(fā)送OACK時,如果固定TFTP服務(wù)器所存儲 的服務(wù)器列表表格中沒有臨時服務(wù)器,則count必須為0,表示TFTP客戶端需要從自己(固 定TFTP服務(wù)器)下載完整文件;而如果固定TFTP服務(wù)器所存儲的服務(wù)器列表表格中有臨 時服務(wù)器,則count必須大于等于1。count為1,表示TFTP客戶端需要從指定的臨時TFTP 服務(wù)器下載完整文件;count > 1,表示TFTP客戶端需要分別從多個臨時TFTP服務(wù)器下載 指定文件的不同部分。(4)臨時TFTP服務(wù)器向TFTP客戶端發(fā)送OACK時,count和info-list必須與OACK 對應(yīng)的前面的RRQ中的count和info-list —致。<info-list>info-list S count f infoinfo ^l^jj^^J ip+begin+end。(1)其中,ip表示服務(wù)器IP地址,為4字節(jié)數(shù)值。begin表示數(shù)據(jù)塊在文件中的 起始位置(從0開始),即相對于文件第一個字節(jié)的偏移,為4字節(jié)數(shù)值。end表示數(shù)據(jù)塊 在文件中的結(jié)束位置(從0開始),即相對于文件第一個字節(jié)的偏移,為4字節(jié)數(shù)值。(2)對于TFTP客戶端,向first發(fā)起RRQ時,count必須為0。向second發(fā)起RRQ 時,ip必須填充為second的IP地址,begin表示希望獲取的所述指定文件起始位置,end 表示希望獲取的所述指定文件結(jié)束位置。(3)對于TFTP服務(wù)器,當first回應(yīng)RRQ時,count必須大于等于1,ip表示其它TFTP服務(wù)器的IP地址,該服務(wù)器擁有所述指定文件的begin和end之間的文件數(shù)據(jù)。這里,如果count為1,begin為文件起始,end為文件結(jié)束,則表示first推薦客戶端從指定 的ip (first或second)下載整個文件。(4) second回應(yīng)RRQ時,count和info-list必須與OACK對應(yīng)的前面的RRQ中的 count 禾口 info-list —至文。對于TFTP服務(wù)器,如果支持從指定的多個TFTP服務(wù)器下載文件的不同部分的模 式,則需要本地記錄相應(yīng)文件的臨時服務(wù)器信息,即哪些服務(wù)器上有相應(yīng)的文件,如下表1 為TFTP服務(wù)器所存儲的服務(wù)器列表表格。
文件名文件大小 臨時服務(wù)器 臨時服務(wù)器 表1
當TFTP客戶端發(fā)起攜帶p2p的RRQ時,對于接收到攜帶p2p的RRQ請求的TFTP 服務(wù)器,如果自己維護的服務(wù)器列表表格中沒有指定的文件信息,則允許客戶端從自己這 里(一個服務(wù)器)處下載文件。同時如果客戶端支持臨時服務(wù)器,則向服務(wù)器列表表格中 記錄這個客戶端IP地址及可以作為臨時服務(wù)器的時間。而如果接收到攜帶p2p的RRQ請求的TFTP服務(wù)器所維護的服務(wù)器列表表格中有 指定的文件信息,則通知客戶端從指定的文件信息中對應(yīng)的臨時服務(wù)器下載。即TFTP服務(wù) 器通過Info-list告訴當前TFTP客戶端從哪些臨時TFTP服務(wù)器下載。服務(wù)器根據(jù)臨時服務(wù)器時間對表項進行老化處理。下面對根據(jù)本發(fā)明的p2p機制的文件傳輸方法的具體的文件傳輸過程,進行舉例 說明。在此例子中,有三個TFTP客戶端,分別記為TFTP客戶端1 (IP地址為ip_l) ,TFTP 客戶端2 (IP地址為IP-2)、TFTP客戶端3 (IP地址為ip_3),這三個TFTP客戶端均支持 work-mode的值為2,均支持file-mode的值為OxCO (即bitO和bitl同時置位),支持作為 臨時服務(wù)器時的time的值均為3600秒(1小時)。同時在此例中,有1個TFTP服務(wù)器,記為 TFTP服務(wù)器1 (IP地址為ip-4),支持work-mode的值為3,支持file-mode的值為OxCO (即 bitO和bitl同時置位),TFTP服務(wù)器1的IP地址為ip-4,TFTP服務(wù)器1上有文件A (二 進制文件),文件大小為1000字節(jié)。圖3為表示根據(jù)本實施方式的TFTP客戶端1下載文件A的具體過程的圖。首先在步驟3011,TFTP客戶端1向TFTP服務(wù)器發(fā)送讀文件指令,即opcode為 1 (RRQ) ;filename為“文件A”;mode為“octet”表示以二進制方式傳輸;第一個自定義選項關(guān)鍵字(即第一個op)為“p2p”。第一個自定義選項值(即value)按照 work-mode+file-mode+first-ip+time+co unt+info-list進行解釋mork-mode值為2,表示TFTP客戶端1工作在客戶端模式,同時 支持作為臨時的TFTP服務(wù)器;file-mode值為OxCO (bitO和bitl同時置位),表示TFTP客 戶端1既可以從指定的一個TFTP服務(wù)器(臨時或固定的TFTP服務(wù)器)下載完整文件,也 可以從指定的多個TFTP服務(wù)器(臨時或固定的TFTP服務(wù)器)下載指定文件的不同部分。 first-ip值為ip-4,即TFTP服務(wù)器1的IP地址。time值為3600,表示TFTP客戶端1下 載完文件A后可以在1小時內(nèi)作為臨時TFTP服務(wù)器提供文件A的下載服務(wù)。count值為 0,表示后面沒有info-list。接著在步驟3012,TFTP服務(wù)器1收到步驟3011的指令后,發(fā)現(xiàn)有自定義選項 “p2p”,TFTP服務(wù)器1本身支持這個自定義選項(“p2p”),則回應(yīng)0ACK,opcode為6 (即 0ACK);第一個自定義選項關(guān)鍵字為“p2p”;第一個自定義選項值(即value)按照work-mod e+file-mode+first-ip+time+count+info-list 進行角軍釋work-mode 值為 3,表示 TFTP 月艮 務(wù)器1工作在服務(wù)器模式,作為固定TFTP服務(wù)器;file-mode值為OxCO (bitO和bitl同時 置位),表示TFTP服務(wù)器1既允許一個TFTP客戶端從自己這里下載指定的完整的文件,也 允許一個TFTP客戶端從自己這里下載指定文件的一部分數(shù)據(jù);first-ip值為TFTP服務(wù)器 1的IP地址ip-4 ;因為TFTP客戶端1是第一個從TFTP服務(wù)器1上下載文件,TFTP服務(wù)器 1上維護的服務(wù)器列表表格為空(臨時TFTP服務(wù)器數(shù)量為0),即只能讓TFTP客戶端從自 己這里下載完整的文件A。time值為Oxffffffff,表示支持無限時間的下載服務(wù)。count 值為1,表示后面有1份info-list。Info-list中各項如下。即ip為ip_4,即TFTP服務(wù) 器1的IP地址ip-4。begin值為0,end值為999,表示TFTP服務(wù)器1希望TFTP客戶端2 從ip-4下載完整的文件A。接著在步驟3013,TFTP客戶端1收到TFTP服務(wù)器1發(fā)送0ACK,發(fā)現(xiàn)TFTP服務(wù)器 1支持自己(TFTP客戶端1)指定的自定義選項“p2p”,選項值ip-4通知自己(TFTP客戶端 1)從TFTP服務(wù)器1上下載整個文件A。TFTP客戶端1決定從TFTP服務(wù)器1上下載整個文 件A,則向TFTP服務(wù)器1回應(yīng)ACK,即opcode為4 (ACK) ;block#為0,表示選項協(xié)商成功。接著在步驟3021,TFTP服務(wù)器1收到TFTP客戶端1的選項協(xié)商成功確認后,TFTP 服務(wù)器1向TFTP客戶端1發(fā)送第一份數(shù)據(jù),即opcode為3 (DATA) ;block#為1,表示本次 發(fā)送的數(shù)據(jù)是指定文件的第一塊512字節(jié)的數(shù)據(jù);data為指定文件的第一塊512字節(jié)的數(shù) 據(jù)。接著在步驟3022,TFTP客戶端1向TFTP服務(wù)器1發(fā)送確認指令,即opcode為 4 (ACK) ;block#為1,表示TFTP客戶端1已經(jīng)收到步驟3021的數(shù)據(jù)。接著在步驟3031,TFTP服務(wù)器1向TFTP客戶端1發(fā)送最后一份數(shù)據(jù),即opcode 為3 (DATA) ;block#為2,表示本次發(fā)送的數(shù)據(jù)是指定文件的第二塊數(shù)據(jù),長度為488字節(jié), 表示為最后一塊數(shù)據(jù);data為指定文件的第二塊數(shù)據(jù)(488字節(jié))。接著在步驟3032,TFTP客戶端1向TFTP服務(wù)器1發(fā)送確認指令,即opcode為 4 (ACK) ;block#為2,表示TFTP客戶端1已經(jīng)收到步驟3031的數(shù)據(jù)。在完成步驟3032后,TFTP客戶端1接著啟動本地臨時TFTP服務(wù)器,在后續(xù)1小時內(nèi)提供文件A的下載服務(wù),允許其它TFTP客戶端從自己這里下載完整或部分文件A。
TFTP服務(wù)器1收到步驟3032的確認后,在自己維護的服務(wù)器列表表格中添加如下 內(nèi)容。 表210秒鐘后,TFTP服務(wù)器1上服務(wù)器列表表格刷新為如下內(nèi)容,即臨時服務(wù)器時間 減少了 10秒。 表3下面,說明TFTP客戶端2下載文件A的具體過程的圖。接著,圖4為表示根據(jù)本實施方式的TFTP客戶端2下載文件A的具體過程的圖。首先,在步驟4011,TFTP客戶端2向TFTP服務(wù)器1發(fā)送讀文件指令,即opcode為 1 (RRQ) ;filename為“文件A”;mode為“octet”表示以二進制方式傳輸;第一個自定義選 項關(guān)鍵字(即op)為“p2p” ;第一個自定義選項值(即value)按照work-mode+f ile-mode +first-ip+time+count+info-list 進行解釋,work-mode 的值為 2,表示 TFTP 客戶端 2 工 作在客戶端模式,同時支持作為臨時的TFTP服務(wù)器;file-mode值為OxCO (bitO和bit 1同 時置位),表示TFTP客戶端2既可以從指定的一個TFTP服務(wù)器(臨時或固定的TFTP服務(wù) 器)下載完整文件,也可以從指定的多個TFTP服務(wù)器(臨時或固定的TFTP服務(wù)器)下載 指定文件的不同部分;first-ip的值為TFTP服務(wù)器1的IP地址ip_4。time值為3600,表 示TFTP客戶端2下載完文件A后可以在1小時內(nèi)作為臨時TFTP服務(wù)器提供文件A的下載 服務(wù)。count值為0,表示后面沒有info-list。接著在步驟4012,TFTP服務(wù)器1收到步驟4011的指令后,發(fā)現(xiàn)有自定義選項 “p2p”,TFTP服務(wù)器1本身支持這個自定義選項(“p2p”),則回應(yīng)OACK,即opcode為 6 (OACK);第一個自定義選項關(guān)鍵字為“p2p” ;第一個自定義選項值按照work-mode+file-m ode+first-ip+time+count+info-list 進行解釋,即 work-mode 值為 3,表示 TFTP 服務(wù)器 1 工作在服務(wù)器模式,作為固定TFTP服務(wù)器;file-mode值為OxCO (bitO和bitl同時置位), 表示TFTP服務(wù)器1既允許一個TFTP客戶端從自己這里下載指定的完整的文件,也允許一 個TFTP客戶端從自己這里下載指定文件的一部分數(shù)據(jù);first-ip值為TFTP服務(wù)器1的IP 地址ip-4,time值為3600,表示支持無限時間的下載服務(wù)。count值為1,表示后面有一份 info-list,按照ip+begin+end進行解釋,即ip值為TFTP服務(wù)器1維護的服務(wù)器列表表格 中的一個隨機IP地址,假設(shè)選定為TFTP客戶端1 ;begin值為0,end值為999,表示TFTP服務(wù)器1希望TFTP客戶端2從ip-Ι下載完整的文件A。接著在步驟4013,TFTP客戶端2收到TFTP服務(wù)器1發(fā)送的0ACK,發(fā)現(xiàn)TFTP服務(wù) 器1支持自己(TFTP客戶端2)指定的自定義選項“p2p”,選項值ip-Ι通知自己(TFTP客 戶端2)從TFTP客戶端1上下載整個文件A。TFTP客戶端2決定從TFTP客戶端1上下載 整個文件A,則回應(yīng)TFTP服務(wù)器1ACK,結(jié)束與TFTP服務(wù)器1的協(xié)商,即opcode為4 (ACK); block#為0,表示選項協(xié)商成功。TFTP服務(wù)器1收到步驟4013的通知后,則認為TFTP客戶端2會成功從TFTP客戶 端1下載文件AJfTFTP客戶端2加入到自己維護的表中,服務(wù)器列表表格變?yōu)槿缦隆?表 4TFTP客戶端2完成步驟4013后,得到臨時服務(wù)器的信息,重新啟動一次TFTP下 載,從臨時服務(wù)器(即TFTP客戶端1)下載文件。圖5為示出了根據(jù)本實施方式的TFTP客戶端2從TFTP客戶端1下載文件的具體 過程的圖。首先,在步驟5011,TFTP客戶端2向TFTP臨時服務(wù)器(TFTP客戶端1)發(fā)送讀文 件指令,即opcode為1 (RRQ) ;filename為“文件A” ;mode為“octet”,表示以二進制方式 傳輸;第一個自定義選項關(guān)鍵字為“p2p”;第一個自定義選項值按照work-mode+file-mode +first-ip+time+count+info-list 進行解釋,即 work-mode 值為 2,表示 TFTP 客戶端 2 工 作在客戶端模式,同時支持作為臨時的TFTP服務(wù)器;file-mode值為OxCO (bitO和bit 1同 時置位),表示TFTP客戶端2既可以從指定的一個TFTP服務(wù)器(臨時或固定的TFTP服務(wù) 器)下載完整文件,也可以從指定的多個TFTP服務(wù)器(臨時或固定的TFTP服務(wù)器)下載 指定文件的不同部分;first-ip值為ip-4,即TFTP服務(wù)器1的IP地址;time值為3600,表 示TFTP客戶端2下載完文件A后可以在1小時內(nèi)作為臨時TFTP服務(wù)器提供文件A的下載 服務(wù);count值為0,表示后面沒有info-list。接著在步驟5012,TFTP臨時服務(wù)器(TFTP客戶端1)收到步驟5011的指令后,發(fā) 現(xiàn)有自定義選項“P2p”,TFTP客戶端1本身支持這個自定義選項(“p2p”),則回應(yīng)0ACK,即 opcode為6(0ACK);第一個自定義選項關(guān)鍵字為“p2p”;第一個自定義選項值按照work-mod e+file-mode+first-ip+time+count+info-list 進行角軍釋,艮口 work-mode 值為 2,表示 TFTP 臨時服務(wù)器(TFTP客戶端1)工作在臨時服務(wù)器模式,作為臨時TFTP服務(wù)器;file-mode值 為0xC0(bit0和bitl同時置位),表示TFTP臨時服務(wù)器(TFTP客戶端1)既允許一個TFTP 客戶端從自己這里下載指定的完整的文件,也允許一個TFTP客戶端從自己這里下載指定 文件的一部分數(shù)據(jù);first-ip值為TFTP服務(wù)器1的IP地址ip_4 ;time值為3590,表示 TFTP臨時服務(wù)器(TFTP客戶端1)上文件A還支持3590秒的下載服務(wù)。count值為0,與前面RRQ —致。接著在步驟5013,TFTP客戶端2收到0ACK,發(fā)現(xiàn)TFTP臨時服務(wù)器(TFTP客戶端 1)支持自己(TFTP客戶端2)指定的自定義選項“p2p”,選項值ip-Ι表示允許自己(TFTP 客戶端2)從TFTP臨時服務(wù)器(TFTP客戶端1)上下載整個文件A。TFTP客戶端2決定從 TFTP臨時服務(wù)器(TFTP客戶端1)上下載整個文件A,則回應(yīng)TFTP臨時服務(wù)器(TFTP客戶 端1)ACK,即opcode為4 (ACK),block#為0,表示選項協(xié)商成功。接著在步驟5021,TFTP臨時服務(wù)器(TFTP客戶端1)收到TFTP客戶端2的選項 協(xié)商成功確認后,TFTP臨時服務(wù)器(TFTP客戶端1)向TFTP客戶端2發(fā)送第一份數(shù)據(jù),即 opcode為3 (DATA) ;block#為1,表示本次發(fā)送的數(shù)據(jù)是指定文件的第一塊512字節(jié)的數(shù) 據(jù);data為指定文件的第一塊512字節(jié)的數(shù)據(jù)。接著在步驟5022,TFTP客戶端2向TFTP臨時服務(wù)器(TFTP客戶端1)發(fā)送確認指 令,即opcode為4(ACK4) ;block#為1,表示TFTP客戶端2已經(jīng)收到步驟5021的數(shù)據(jù)。接著在步驟5031,TFTP臨時服務(wù)器(TFTP客戶端1)向TFTP客戶端2發(fā)送最后 一份數(shù)據(jù),即opcode為3 (DATA) ;block#為2,表示本次發(fā)送的數(shù)據(jù)是指定文件的第二塊數(shù) 據(jù),長度為488字節(jié),表示為最后一塊數(shù)據(jù);data為指定文件的第二塊數(shù)據(jù)(488字節(jié))。接著在步驟5032,TFTP客戶端2向TFTP臨時服務(wù)器(TFTP客戶端1)發(fā)送確認指 令,即opcode為4 (ACK) ;block#為2,表示TFTP客戶端2已經(jīng)收到步驟5021的數(shù)據(jù)。TFTP客戶端2完成步驟5032后,啟動本地臨時TFTP服務(wù)器,在后續(xù)1小時內(nèi)提供 文件A的下載服務(wù),允許其它TFTP客戶端從自己這里下載完整或部分文件A。10秒鐘后, TFTP服務(wù)器1上服務(wù)器列表表格刷新為如下內(nèi)容。 表5下面說明TFTP客戶端3從TFTP服務(wù)器1下載文件A的過程。圖6為示出了根據(jù)本實施方式的TFTP客戶端3從TFTP服務(wù)器1下載文件A的具 體過程的圖。首先,在步驟6011,TFTP客戶端3向TFTP服務(wù)器1發(fā)送讀文件指令,即opcode為 1 (RRQ) ;filename為“文件A”;mode為“octet”表示以二進制方式傳輸;第一個自定義選 項關(guān)鍵字為“p2p”;第一個自定義選項值按照work-mode+file-mode+first-ip+time+coun t+info-list進行解釋,即work-mode值為2,表示TFTP客戶端3工作在客戶端模式,同時 支持作為臨時的TFTP服務(wù)器;file-mode值為OxCO (bitO和bitl同時置位),表示TFTP客 戶端3既可以從指定的一個TFTP服務(wù)器(臨時或固定的TFTP服務(wù)器)下載完整文件,也 可以從指定的多個TFTP服務(wù)器(臨時或固定的TFTP服務(wù)器)下載指定文件的不同部分; first-ip值為TFTP服務(wù)器1的IP地址ip_4。time值為3600,表示TFTP客戶端3下載完文件A后可以在1小時內(nèi)作為臨時TFTP服務(wù)器提供文件A的下載服務(wù)。count值為0,表 /^jpffliSW info_list。接著在步驟6012,TFTP服務(wù)器1收到步驟6011的指令后,發(fā)現(xiàn)有自定義選項 “p2p”,TFTP服務(wù)器1本身支持這個自定義選項(“p2p”),且自己維護的服務(wù)器列表表格 中有臨時服務(wù)器提供這個文件的下載服務(wù),則回應(yīng)0ACK,即opcode為6 (OACK);第一個自定 義選項關(guān)鍵字為“p2p” ;第一個自定義選項值按照work-mode+file-mode+first-ip+time+ count+info-list進行解釋,即work-mode值為3,表示TFTP服務(wù)器1工作在服務(wù)器模式, 作為固定TFTP服務(wù)器;file-mode值為OxCO (bitO和bitl同時置位),表示TFTP服務(wù)器1 既允許一個TFTP客戶端從自己這里下載指定的完整的文件,也允許一個TFTP客戶端從自 己這里下載指定文件的一部分數(shù)據(jù);first-ip值為TFTP服務(wù)器1的IP地址ip_4。time 值為3600,表示支持無限時間的下載服務(wù)。count值為2,表示后面有兩份info-list,按照 ip+begin+end 進行解釋,即第一份 info-list,ip 值為 ip_l (TFTP 客戶端 1) ;begin 值為 0, end值為511,表示TFTP服務(wù)器1希望TFTP客戶端3從ip-Ι下載文件A的前面部分。第 二份 info-list, ip 值為 ip-2 (TFTP 客戶端 2) ;begin 值為 512,end 值為 999,表示 TFTP 服 務(wù)器1希望TFTP客戶端3從ip-2下載文件A的后面部分。接著在步驟6013,TFTP客戶端3收到TFTP服務(wù)器1發(fā)送的0ACK,發(fā)現(xiàn)TFTP服務(wù) 器1支持自己(TFTP客戶端3)指定的自定義選項“p2p”,自定義選項值通知自己(TFTP客 戶端3)從TFTP客戶端1和TFTP客戶端2上下載文件A。TFTP客戶端3決定從TFTP客戶 端1和TFTP客戶端2上下載整個文件A,則向TFTP服務(wù)器1回應(yīng)ACK,結(jié)束與TFTP服務(wù)器 1的協(xié)商,即opcode為4(ACK) ;block#為0,表示選項協(xié)商成功。TFTP服務(wù)器1收到步驟6013的通知后,則認為TFTP客戶端3會成功下載文件A, 將TFTP客戶端3加入到自己維護的服務(wù)器列表表格中,服務(wù)器列表表格變?yōu)槿缦隆?表6TFTP客戶端3完成步驟6013后,得到臨時服務(wù)器的信息,重新啟動一次TFTP下 載,從臨時服務(wù)器(即TFTP客戶端1)下載文件A的一部分。圖7為示出了根據(jù)本實施方式的TFTP客戶端3從臨時服務(wù)器(即TFTP客戶端1) 下載文件的一部分的具體過程的圖。首先,在步驟7011,TFTP客戶端3向TFTP臨時服務(wù)器(TFTP客戶端1)發(fā)送讀文 件指令,即opcode為1 (RRQ ;filename為“文件A" ;mode為“octet,,表示以二進制方式傳 輸;第一個自定義選項關(guān)鍵字為“p2p”;第一個自定義選項值按照work-mode+file-mode+f irst-ip+time+count+info-list進行解釋,即work-mode值為2,表示TFTP客戶端3工作在客戶端模式,同時支持作為臨時的TFTP服務(wù)器;file-mode值為OxCO (bitO和bit 1同時置 位),表示TFTP客戶端3既可以從指定的一個TFTP服務(wù)器(臨時或固定的TFTP服務(wù)器) 下載完整文件,也可以從指定的多個TFTP服務(wù)器(臨時或固定的TFTP服務(wù)器)下載指定 文件的不同部分;first-ip值為ip-4,即TFTP服務(wù)器1的IP地址。time值為3600,表示 TFTP客戶端3下載完文件A后可以在1小時內(nèi)作為臨時TFTP服務(wù)器提供文件A的下載服 務(wù)。count值為1 ;info-list中ip為ip_l,begin為0,end為511,表示希望從ip_l下載 文件A的0 511字節(jié)數(shù)據(jù)。接著在步驟7012,TFTP臨時服務(wù)器(TFTP客戶端1)收到步驟7011的指令后,發(fā) 現(xiàn)有自定義選項“p2p”,TFTP客戶端1本身支持這個自定義選項(“p2p”),且有指定的文 件A對應(yīng)數(shù)據(jù),則回應(yīng)0ACK,即opcode為6 (OACK);第一個自定義選項關(guān)鍵字為“p2p”;第一 個自定義選項值按照 work-mode+file-mode+first-ip+time+count+info-list 進行解釋, 即work-mode值為2,表示TFTP臨時服務(wù)器(TFTP客戶端1)工作在臨時服務(wù)器模式,作為 臨時TFTP服務(wù)器;file-mode值為OxCO (bitO和bitl同時置位),表示TFTP臨時服務(wù)器 (TFTP客戶端1)既允許一個TFTP客戶端從自己這里下載指定的完整的文件,也允許一個 TFTP客戶端從自己這里下載指定文件的一部分數(shù)據(jù);first-ip值為TFTP服務(wù)器1的IP地 址ip-4 ;time值為3580 ;表示TFTP臨時服務(wù)器(TFTP客戶端1)上文件A還支持3580秒 的下載服務(wù);count值為1 ;info-list中的ip為ip-1,begin為0,end為511,表示提供文 件A的0 511字節(jié)數(shù)據(jù)的下載服務(wù)。接著在步驟7013,TFTP客戶端3收到0ACK,發(fā)現(xiàn)TFTP臨時服務(wù)器(TFTP客戶端 1)支持自己(TFTP客戶端3)指定的自定義選項“p2p”,選項值允許自己(TFTP客戶端3) 從TFTP臨時服務(wù)器(TFTP客戶端1)上下載文件A的0 511字節(jié)數(shù)據(jù)。TFTP客戶端3決 定從TFTP臨時服務(wù)器(TFTP客戶端1)上下載文件A的0 511字節(jié)數(shù)據(jù),則向TFTP臨時 服務(wù)器(TFTP客戶端1)回應(yīng)ACK,即opcode為4 (ACK) ;block#為0,表示選項協(xié)商成功。接著在步驟7021,TFTP臨時服務(wù)器(TFTP客戶端1)收到TFTP客戶端3的選項 協(xié)商成功確認后,TFTP臨時服務(wù)器(TFTP客戶端1)向TFTP客戶端3發(fā)送第一份數(shù)據(jù),即 opcode為3 (DATA) ;block#為1,表示本次發(fā)送的數(shù)據(jù)是指定文件的第一塊512字節(jié)的數(shù) 據(jù);data為指定文件的第一塊512字節(jié)的數(shù)據(jù)。接著在步驟7022,TFTP客戶端3向TFTP臨時服務(wù)器(TFTP客戶端1)發(fā)送確認指 令,即opcode為4 (ACK) ;block#為1,表示TFTP客戶端3已經(jīng)收到步驟7021的數(shù)據(jù)。接著在步驟7031,TFTP臨時服務(wù)器(TFTP客戶端1)向TFTP客戶端3發(fā)送最后一 份數(shù)據(jù)(0字節(jié)),即opcode為3 (DATA) ;block#為2,表示本次發(fā)送的數(shù)據(jù)是指定文件的第 二塊數(shù)據(jù),長度為0字節(jié),表示為最后一塊數(shù)據(jù);data為指定文件的第二塊數(shù)據(jù)(0字節(jié))。接著在步驟7032,TFTP客戶端3向TFTP臨時服務(wù)器(TFTP客戶端1)發(fā)送確認指令,即opcode為4 (ACK) ;block#為2,表示TFTP客戶端3已經(jīng)收到步驟7021的數(shù)據(jù)。TFTP 客戶端3完成從TFTP臨時服務(wù)器(TFTP客戶端1)下載文件A的0 511字節(jié)數(shù)據(jù)。接著,TFTP客戶端3再從臨時服務(wù)器(即TFTP客戶端2)下載文件A的剩余部分 數(shù)據(jù)。圖8為示出了根據(jù)本實施方式的TFTP客戶端3從臨時服務(wù)器(即TFTP客戶端2) 下載文件A的剩余部分數(shù)據(jù)的具體過程的圖。
首先,在步驟8011,TFTP客戶端3向TFTP臨時服務(wù)器(TFTP客戶端2)發(fā)送讀文 件指令,即opcode為I(RRQ) ;filename為“文件A” ;mode為“octet”表示以二進制方式傳 輸;第一個自定義選項關(guān)鍵字為“p2p”;第一個自定義選項值按照work-mode+file-mode+f irst-ip+time+count+info-list進行解釋,即work-mode值為2,表示TFTP客戶端3工作在 客戶端模式,同時支持作為臨時的TFTP服務(wù)器;file-mode值為OxCO (bitO和bit 1同時置 位),表示TFTP客戶端3既可以從指定的一個TFTP服務(wù)器(臨時或固定的TFTP服務(wù)器) 下載完整文件,也可以從指定的多個TFTP服務(wù)器(臨時或固定的TFTP服務(wù)器)下載指定 文件的不同部分;first-ip值為ip-4,即TFTP服務(wù)器1的IP地址;time值為3600,表示 TFTP客戶端3下載完文件A后可以在1小時內(nèi)作為臨時TFTP服務(wù)器提供文件A的下載服 務(wù);count 值為 1 ;info-list 中的 ip 為 ip-2, begin 為 512,end 為 999,表示希望從 ip-2 下載文件A的512 999字節(jié)數(shù)據(jù)。接著在步驟8012,TFTP臨時服務(wù)器(TFTP客戶端2)收到步驟8011的指令后,發(fā) 現(xiàn)有自定義選項“p2p”,TFTP客戶端2本身支持這個自定義選項(“p2p”),且有指定的文 件A的相應(yīng)數(shù)據(jù),則回應(yīng)0ACK,即opcode為6 (OACK);第一個自定義選項關(guān)鍵字為“p2p” ; 第一個自定義選項值按照 work-mode+file-mode+first-ip+time+count+info~list 進行 解釋,即work-mode值為2,表示TFTP臨時服務(wù)器(TFTP客戶端2)工作在臨時服務(wù)器模式, 作為臨時TFTP服務(wù)器;file-mode值為OxCO (bitO和bitl同時置位),表示TFTP臨時服務(wù) 器(TFTP客戶端2)既允許一個TFTP客戶端從自己這里下載指定的完整的文件,也允許一 個TFTP客戶端從自己這里下載指定文件的一部分數(shù)據(jù);first-ip值為TFTP服務(wù)器1的IP 地址ip-4 ;time值為3590 ;表示TFTP臨時服務(wù)器(TFTP客戶端2)上文件A還支持3590 秒的下載服務(wù);count值為1 ;info-list :ip為ip_2,begin為512,end為999,表示提供文 件A的512 999字節(jié)數(shù)據(jù)的下載服務(wù)。接著在步驟8013,TFTP客戶端3收到0ACK,發(fā)現(xiàn)TFTP臨時服務(wù)器(TFTP客戶端 2)支持自己(TFTP客戶端3)指定的自定義選項“p2p”,選項值允許自己(TFTP客戶端3)從 TFTP臨時服務(wù)器(TFTP客戶端2)上下載文件A的512 999字節(jié)數(shù)據(jù)。TFTP客戶端3決 定從TFTP臨時服務(wù)器(TFTP客戶端2)上下載文件A的512 999字節(jié)數(shù)據(jù),則回應(yīng)TFTP 臨時服務(wù)器(TFTP客戶端2)ACK,即opcode為4 (ACK) ;block#為0,表示選項協(xié)商成功。接著在步驟8021,TFTP臨時服務(wù)器(TFTP客戶端2)收到TFTP客戶端3的選項 協(xié)商成功確認后,TFTP臨時服務(wù)器(TFTP客戶端2)向TFTP客戶端3發(fā)送第一份數(shù)據(jù),即 opcode為3 (DATA) ;block#為1,表示本次發(fā)送的數(shù)據(jù)是指定文件的第一塊512 999字節(jié) 數(shù)據(jù);data為指定文件的第一塊512 999字節(jié)數(shù)據(jù)。接著在步驟8022,TFTP客戶端3向TFTP臨時服務(wù)器(TFTP客戶端2)發(fā)送確認指 令,即opcode為4 (ACK) ;block#為1,表示TFTP客戶端3已經(jīng)收到步驟8021的數(shù)據(jù)。TFTP 客戶端3完成從TFTP臨時服務(wù)器(TFTP客戶端2)下載文件A的512 999字節(jié)數(shù)據(jù)。從 而TFTP客戶端3獲得完整文件A。如上所述,根據(jù)本發(fā)明的文件傳輸方法,文件傳輸設(shè)備并非固定為客戶端或服務(wù)器端,而是即可以工作于客戶端模式或服務(wù)器模式,也可以工作在客戶端模式的同時,支持 作為臨時的服務(wù)器。因此實現(xiàn)了網(wǎng)絡(luò)設(shè)備之間的點對點式的文件傳輸,消除了由于CS結(jié)構(gòu) 導致的TFTP服務(wù)器性能瓶頸,能夠提高文件傳輸?shù)男省?br> 產(chǎn)業(yè)上的可利用性 本發(fā)明的文件傳輸方法適用于網(wǎng)絡(luò)設(shè)備之間的點對點式的文件傳輸。
權(quán)利要求
一種文件傳輸方法,其特征在于,包括步驟所述客戶端向固定服務(wù)器端請求下載指定文件;所述固定服務(wù)器指示所述客戶端從固定服務(wù)器或臨時服務(wù)器下載所述指定文件,其中,所述臨時服務(wù)器是指曾經(jīng)作為客戶端下載過并保存有所述指定文件,而且能夠向所述客戶端提供文件下載服務(wù)的其他客戶端;所述固定服務(wù)器保存有臨時服務(wù)器列表,所述臨時服務(wù)器列表記錄有所有構(gòu)成臨時服務(wù)器的所述其他客戶端的互聯(lián)網(wǎng)協(xié)議地址。
2.如權(quán)利要求1所述的文件傳輸方法,其特征在于,所述固定服務(wù)器指示所述客戶端從一個固定服務(wù)器或臨時服務(wù)器下載所述指定文件 的全部,或從多個固定服務(wù)器或臨時服務(wù)器分別下載所述指定文件的一部分,而組成整個 所述指定文件。
3.如權(quán)利要求1或2所述的文件傳輸方法,其特征在于,所述客戶端向所述固定服務(wù)器發(fā)送的簡單文件傳輸協(xié)議(TFTP)的文件下載請求 (RRQ)包含一對由自定義選項名稱(op)和自定義選項值(value)構(gòu)成的自定義選項對,所 述自定義選項名稱為“p2p”,用于表示所述客戶端支持點對點文件傳輸機制;所述固定服務(wù)器向所述客戶端回應(yīng)選項確認指令(OACK),所述選項確認指令(OACK) 包含所述自定義選項對,所述自定義選項名稱為“p2p”,則表示所述固定服務(wù)器支持點對點 文件傳輸機制。
4.如權(quán)利要求3所述的文件傳輸方法,其特征在于,所述文件下載請求(RRQ)中所包含自定義選項值(value)包含文件模式(file-mode) 位,用于表示所述客戶端可以從一個固定服務(wù)器或臨時服務(wù)器下載所述指定文件的全部, 或可以從多個固定服務(wù)器或臨時服務(wù)器分別下載所述指定文件的一部分,而組成整個所述 指定文件,或表示該兩種模式均支持;所述選項確認指令(OACK)中所包含自定義選項值(value)包含文件模式(file-mode) 位,用于指示所述客戶端從一個固定服務(wù)器或臨時服務(wù)器下載所述指定文件的全部,或從 多個固定服務(wù)器或臨時服務(wù)器分別下載所述指定文件的一部分,而組成整個所述指定文 件,或指示任意選擇該兩種模式之一。
5.如權(quán)利要求4所述的文件傳輸方法,其特征在于,所述文件下載請求(RRQ)中所包含自定義選項值(value)還包含第一互聯(lián)網(wǎng)地址 (first-ip),所述第一互聯(lián)網(wǎng)地址(first-ip)為所述固定服務(wù)器的互聯(lián)網(wǎng)協(xié)議地址;所述選項確認指令(OACK)中所包含自定義選項值(value)還包含第一互聯(lián)網(wǎng)地址 (first-ip),所述第一互聯(lián)網(wǎng)地址(first-ip)為所述固定服務(wù)器的互聯(lián)網(wǎng)協(xié)議地址。
6.如權(quán)利要求5所述的文件傳輸方法,其特征在于,所述選項確認指令(OACK)中所包含自定義選項值(value)還包含計數(shù)(count)位,用 于表示所述固定服務(wù)器指示所述客戶端用于下載文件的固定服務(wù)器或臨時服務(wù)器的個數(shù)。
7.如權(quán)利要求6所述的文件傳輸方法,其特征在于,當所述計數(shù)(count)位為“0”,表示所述固定服務(wù)器指示所述客戶端從所述固定服務(wù) 器下載完整的所述指定文件。
8.如權(quán)利要求6所述的文件傳輸方法,其特征在于,當所述計數(shù)(count)位為“1”,所述選項確認指令(OACK)中所包含自定義選項值 (value)還包含一個第二互聯(lián)網(wǎng)協(xié)議地址(ip)時,表示所述固定服務(wù)器指示所述客戶端可 以從所述固定服務(wù)器或所述第二互聯(lián)網(wǎng)協(xié)議地址(ip)的臨時服務(wù)器下載完整的所述指定 文件。
9.如權(quán)利要求6所述的文件傳輸方法,其特征在于,當所述計數(shù)(count)位的值大于1,所述選項確認指令(OACK)中所包含自定義選項值 (value)還包含多個第二互聯(lián)網(wǎng)協(xié)議地址(ip)及多個下載開始位置(begin)、下載結(jié)束位 置(end)時,表示所述固定服務(wù)器指示所述客戶端從所述多個互聯(lián)網(wǎng)協(xié)議地址(ip)的臨時 服務(wù)器分別下載所述指定文件的所述下載開始位置(begin)和下載結(jié)束位置(end)之間所 對應(yīng)的部分。
10.如權(quán)利要求3所述的文件傳輸方法,其特征在于,所述文件下載請求(RRQ)中所包含自定義選項值(value)包含工作模式(work-mode) 位,使用值“ 1”表示所述客戶端只能工作在客戶端模式,或使用值“2”表示所述客戶端在下 載完畢所述指定文件后,還可以作為臨時服務(wù)器向其他客戶端提供文件下載服務(wù);所述文件下載請求(RRQ)中所包含自定義選項值(value)包含工作模式(work-mode) 位表示所述客戶端在下載完畢所述指定文件后作為臨時服務(wù)器工作時,所述固定服務(wù)器將 所述客戶端作為與所述指定文件相對應(yīng)的臨時服務(wù)器記錄到所述臨時服務(wù)器列表中。
11.如權(quán)利要求10所述的文件傳輸方法,其特征在于,所述選項確認指令(OACK)中所包含自定義選項值(value)還包含工作模式 (work-mode)位,使用值“3”表示所述固定服務(wù)器的工作模式為固定服務(wù)器。
12.如權(quán)利要求10所述的文件傳輸方法,其特征在于,所述文件下載請求(RRQ)中所包含自定義選項值(value)包含時間(time)位,用于表 示所述客戶端能夠工作在臨時服務(wù)器模式的時間長度;所述固定服務(wù)器將所述時間(time)作為所述臨時服務(wù)器的信息記錄到所述臨時服務(wù) 器列表中。
13.如權(quán)利要求11所述的文件傳輸方法,其特征在于,所述選項確認指令(OACK)中所包含自定義選項值(value)還包含時間(time)位,使 用無限大值表示所述固定服務(wù)器工作在固定服務(wù)器模式。
全文摘要
本發(fā)明公開了一種文件傳輸方法,用于實現(xiàn)點對點文件傳輸機制,其特征在于,包括步驟所述客戶端向固定服務(wù)器端請求下載指定文件;所述固定服務(wù)器指示所述客戶端從固定服務(wù)器或臨時服務(wù)器下載所述指定文件,其中,所述臨時服務(wù)器是指曾經(jīng)作為客戶端下載過并保存有所述指定文件,而且能夠向所述客戶端提供文件下載服務(wù)的其他客戶端;所述固定服務(wù)器保存有臨時服務(wù)器列表,所述臨時服務(wù)器列表記錄有所有構(gòu)成臨時服務(wù)器的所述其他客戶端的互聯(lián)網(wǎng)協(xié)議地址。
文檔編號H04L29/08GK101841570SQ201010179148
公開日2010年9月22日 申請日期2010年5月21日 優(yōu)先權(quán)日2010年5月21日
發(fā)明者劉靖非, 范成龍 申請人:北京傲天動聯(lián)技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
潮州市| 通江县| 万全县| 连南| 卫辉市| 通河县| 石景山区| 伊宁县| 浦北县| 弋阳县| 新乐市| 仲巴县| 宜州市| 大庆市| 彭阳县| 濮阳市| 凉山| 呼玛县| 大化| 滦南县| 于田县| 桓台县| 墨江| 石景山区| 介休市| 攀枝花市| 聊城市| 石河子市| 阜新市| 上犹县| 甘孜| 安顺市| 芷江| 建德市| 德令哈市| 灌阳县| 修文县| 秀山| 都江堰市| 怀宁县| 福鼎市|