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

一種數(shù)據(jù)下載方法及系統(tǒng)的制作方法

文檔序號(hào):7966014閱讀:215來源:國(guó)知局
專利名稱:一種數(shù)據(jù)下載方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及在互聯(lián)網(wǎng)中的一種數(shù)據(jù)下栽方法及 系統(tǒng)。
背景技術(shù)
目前,在互聯(lián)網(wǎng)中,有很多種方法可以將遠(yuǎn)程數(shù)據(jù)下栽到本地存儲(chǔ)系統(tǒng)。 針對(duì)于不同的應(yīng)用場(chǎng)景,數(shù)據(jù)下載有單播方式也有組播方式。所謂單播,是指 在網(wǎng)絡(luò)傳送時(shí),通信的雙方采用一對(duì)一的方式發(fā)送數(shù)據(jù)包。所謂組播,是指在 網(wǎng)絡(luò)傳送時(shí),通信的雙方采用一對(duì)多的方式發(fā)送數(shù)據(jù)包,其IP地址屬特定的 范圍,只有加入這個(gè)IP地址的接收端才能收到數(shù)據(jù)包,而發(fā)送端只要發(fā)送到這個(gè)IP地址就可以了。單播方式的典型代表是點(diǎn)對(duì)點(diǎn)技術(shù)P2P (peer-to-peer) 數(shù)據(jù)下載。組播方式的典型代表是采用數(shù)據(jù)輪播技術(shù),即在一個(gè)組播組內(nèi)循環(huán) 發(fā)送要下載的數(shù)據(jù)?,F(xiàn)有技術(shù)中可以利用P2P技術(shù)進(jìn)行遠(yuǎn)程數(shù)據(jù)下栽,例如采用BitTorrent下 栽。BitTorrent是一種分發(fā)數(shù)據(jù)的協(xié)議,它通過統(tǒng)一資源定位符URL (Uniform Resource Locator)來識(shí)別內(nèi)容,并且可以無縫地和網(wǎng)頁(yè)web進(jìn)行交互。它基 于互聯(lián)網(wǎng)HTTP協(xié)議,它的優(yōu)勢(shì)是如果有多個(gè)下載者并發(fā)地下載同一數(shù)據(jù), 那么,每個(gè)下栽者也同時(shí)為其它下栽者上傳數(shù)據(jù),這樣,數(shù)據(jù)源可以支持大量 的用戶進(jìn)行下載。但此種方法的缺陷是可能會(huì)造成網(wǎng)絡(luò)堵塞?,F(xiàn)在的網(wǎng)絡(luò)是"上下非對(duì)稱" 的金字塔結(jié)構(gòu),也就是網(wǎng)絡(luò)主干的帶寬遠(yuǎn)遠(yuǎn)小于所有用戶帶寬之和,但現(xiàn)在網(wǎng) 絡(luò)使用的單播通訊協(xié)議卻要求網(wǎng)絡(luò)主干的帶寬等于或接近所有用戶帶寬之和。 現(xiàn)在的狀況是一個(gè)城市或省的網(wǎng)絡(luò)出口主干的帶寬大約相當(dāng)于其所有客戶帶 寬之和的5 % ,也就是說假如有5 %的客戶用BT軟件通過網(wǎng)絡(luò)全速傳輸數(shù)據(jù), 那其余95%的客戶就沒有辦法使用網(wǎng)絡(luò)了。另外,當(dāng)前的網(wǎng)絡(luò)是非對(duì)稱網(wǎng)絡(luò), 釆用P2P進(jìn)行數(shù)據(jù)下載,當(dāng)用戶數(shù)據(jù)量達(dá)到一定程度,會(huì)造成骨干網(wǎng)的堵塞,這是運(yùn)營(yíng)商所不愿看到的。笫二種現(xiàn)有技術(shù)是采用組播方式中的數(shù)據(jù)輪播方法,即在一個(gè)組播組內(nèi)循環(huán)發(fā)送要下載的數(shù)據(jù)。具體請(qǐng)參閱圖l,包括步驟Al、服務(wù)端準(zhǔn)備數(shù)據(jù)并創(chuàng)建組播組,通知客戶端進(jìn)行數(shù)據(jù)下載; A2、客戶端加入組播組,準(zhǔn)備數(shù)據(jù)接收;A3、服務(wù)端通過組播把數(shù)據(jù)循環(huán)推送下去,客戶端接收并保存數(shù)據(jù),本 次沒有接收到或者丟失的數(shù)據(jù)等到下一輪組播時(shí)接收。此種方法雖然避免了造成網(wǎng)絡(luò)堵塞等問題,但仍具有以下不足1、 由于是采用組播方式,決定了它是一種不可靠的下載方式;當(dāng)前,支持組播的標(biāo)準(zhǔn)傳輸層協(xié)議只有用戶數(shù)據(jù)報(bào)協(xié)議UDP,因而組播 報(bào)文的傳輸是不可靠的。IP層的組播通信只提供"盡力型"服務(wù),不保證組 播數(shù)據(jù)報(bào)文的可靠傳輸。2、 客戶端在本次錯(cuò)過某些數(shù)據(jù)信息接收或者接收到損壞的數(shù)據(jù)時(shí),必須 等到下一輪組播時(shí)才能重新接收該段數(shù)據(jù),這導(dǎo)致了比較大的接收延遲;3、 由于數(shù)據(jù)是循環(huán)的輪播,雖然在一定程度上彌補(bǔ)了傳輸過程中的數(shù)據(jù) 丟失,但大量的客戶端已經(jīng)擁有的數(shù)據(jù)也會(huì)被一遍又一遍地重復(fù)輪播下來,從 而造成網(wǎng)絡(luò)帶寬不必要的浪費(fèi)。發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種數(shù)據(jù)下載方法及系統(tǒng),本發(fā)明能夠增 強(qiáng)數(shù)據(jù)下栽的可靠性和解決數(shù)據(jù)下載過程中的網(wǎng)絡(luò)帶寬浪費(fèi)問題。 本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)本發(fā)明提供一種數(shù)據(jù)下栽方法,包括服務(wù)端向客戶端下發(fā)組播地址及客 戶信息列表;客戶端通過組播地址從服務(wù)端下載數(shù)據(jù);客戶端向客戶信息列表 內(nèi)的其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù),被請(qǐng)求的客戶端若含有所述請(qǐng) 求的數(shù)據(jù),則發(fā)送給請(qǐng)求的客戶端。進(jìn)一步的,所述方法還包括客戶端向服務(wù)端匯才艮數(shù)據(jù)接收情況,服務(wù)端根 據(jù)所述數(shù)據(jù)接收情況向客戶端下發(fā)未成功接收到的數(shù)據(jù)。 所述服務(wù)端向客戶端下發(fā)未成功接收到的數(shù)據(jù)通過原有組播地址或新建 的組播地址下發(fā)。進(jìn)一步的,客戶端從服務(wù)端下載數(shù)據(jù)過程中正常或異常退出后,服務(wù)端從 客戶信息列表刪除所述客戶端的信息,并將更新后的客戶信息列表下發(fā)給其他 客戶端。進(jìn)一步的,服務(wù)端接收到客戶端的數(shù)據(jù)下載請(qǐng)求后,將客戶端信息加入客 戶信息列表。進(jìn)一步的,服務(wù)端確認(rèn)客戶端屬授權(quán)用戶后將客戶端信息加入客戶信息列 表,以及,客戶端確認(rèn)其他請(qǐng)求獲取未成功接收到的數(shù)據(jù)的客戶端在客戶信息 列表內(nèi)再發(fā)送請(qǐng)求的數(shù)據(jù)到請(qǐng)求的客戶端。進(jìn)一步的,客戶端從服務(wù)端下載數(shù)據(jù)前,服務(wù)端將客戶端請(qǐng)求下載的數(shù)據(jù) 分塊和打包,并注明標(biāo)識(shí)后發(fā)送,以及,客戶端從服務(wù)端下載數(shù)據(jù)過程中,客 戶端根據(jù)所述標(biāo)識(shí)向其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù)或向其他請(qǐng)求 獲取未成功接收到的數(shù)據(jù)的客戶端發(fā)送請(qǐng)求的數(shù)據(jù)。其中,所述發(fā)送的數(shù)據(jù)包括經(jīng)過前向糾錯(cuò)處理的數(shù)據(jù)。相應(yīng)地,本發(fā)明提供一種數(shù)據(jù)下栽系統(tǒng)包括服務(wù)端和客戶端;服務(wù)端, 用于向客戶端下發(fā)組播地址及客戶信息列表,并向客戶端下發(fā)數(shù)據(jù);客戶端,用于接收服務(wù)端下發(fā)的組播地址及客戶信息列表,通過組播地址從服務(wù)端下載 數(shù)據(jù),向客戶信息列表內(nèi)的其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù)或向其他請(qǐng)求獲取未成功接收到的數(shù)據(jù)的客戶端發(fā)送請(qǐng)求的數(shù)據(jù)??蛻舳诉M(jìn)一步包括用于向服務(wù)端匯報(bào)數(shù)據(jù)接收情況;以及,服務(wù)端進(jìn)一步 包括用于根據(jù)所述數(shù)據(jù)接收情況向客戶端下發(fā)未成功接收到的數(shù)據(jù)。本發(fā)明還提供一種用于數(shù)據(jù)下載的服務(wù)端包括數(shù)據(jù)單元、第一打包單元、 第一數(shù)據(jù)下載處理單元和第一網(wǎng)絡(luò)收發(fā)單元;數(shù)據(jù)單元,用于存儲(chǔ)下發(fā)的數(shù)據(jù), 將數(shù)據(jù)傳遞給第一打包單元進(jìn)行打包;第一打包單元,用于將數(shù)據(jù)進(jìn)行打包和 注明標(biāo)識(shí);第一數(shù)據(jù)下載處理單元,用于控制數(shù)據(jù)的下發(fā)流程;第一網(wǎng)絡(luò)收發(fā) 單元,用于接收和下發(fā)數(shù)據(jù),向客戶端下發(fā)數(shù)據(jù),接收客戶端返回的關(guān)于數(shù)據(jù)
接收情況的信息。服務(wù)端進(jìn)一步包括第一前向糾錯(cuò)處理單元,用于將數(shù)據(jù)單元傳遞的數(shù)據(jù)進(jìn) 行前向糾錯(cuò)處理,并傳遞給第一打包單元進(jìn)行打包。本發(fā)明還提供一種用于數(shù)據(jù)下載的客戶端包括第二網(wǎng)絡(luò)收發(fā)單元、第二 數(shù)據(jù)下栽處理單元、解包單元和本地存儲(chǔ)系統(tǒng)單元;第二網(wǎng)絡(luò)收發(fā)單元,用于 下載和發(fā)送數(shù)據(jù),從服務(wù)端下載數(shù)據(jù),向服務(wù)端返回關(guān)于數(shù)據(jù)接收情況的信息, 向其他客戶端發(fā)送獲取未成功接收到的數(shù)據(jù)的請(qǐng)求或向其他請(qǐng)求獲取未成功 接收到的數(shù)據(jù)的客戶端發(fā)送請(qǐng)求的數(shù)據(jù);第二數(shù)據(jù)下載處理單元,用于控制客 戶端的數(shù)據(jù)下載過程;解包單元,用于將第二網(wǎng)絡(luò)收發(fā)單元下載的數(shù)據(jù)包解包 后傳遞到本地存儲(chǔ)系統(tǒng)單元進(jìn)行存儲(chǔ);本地存儲(chǔ)系統(tǒng)單元,用于存儲(chǔ)解包單元 傳遞的數(shù)據(jù)??蛻舳诉M(jìn)一步包括第二打包單元,用于將本地存儲(chǔ)系統(tǒng)單元存儲(chǔ)的其他客 戶端請(qǐng)求獲取的未成功接收到的數(shù)據(jù)進(jìn)行打包,并通過第二網(wǎng)絡(luò)收發(fā)單元發(fā)送 給請(qǐng)求的其他客戶端。客戶端進(jìn)一步包括第二前向糾錯(cuò)處理單元,用于將解包單元傳遞的數(shù)據(jù)進(jìn) 行前向糾錯(cuò)恢復(fù)處理,并傳遞到本地存儲(chǔ)系統(tǒng)單元進(jìn)行存儲(chǔ),還包括用于將本 地存儲(chǔ)系統(tǒng)單元存儲(chǔ)的其他客戶端請(qǐng)求獲取的未成功接收到的數(shù)據(jù)進(jìn)行前向 糾錯(cuò)處理,并傳遞給第二打包單元進(jìn)行打包。以上技術(shù)方案可以看出首先,前述現(xiàn)有技術(shù)中采用組播方法,不能保證數(shù)據(jù)下載的可靠性,可能 出現(xiàn)數(shù)據(jù)丟失,但沒有相應(yīng)的修復(fù)機(jī)制來恢復(fù)丟失的數(shù)據(jù),必須等到下一輪組 播時(shí)再接收丟失的數(shù)據(jù),而本發(fā)明采用的數(shù)據(jù)下載的方法,在從服務(wù)端下載數(shù) 據(jù)過程中出現(xiàn)數(shù)據(jù)丟失、損壞或錯(cuò)過部分?jǐn)?shù)據(jù)時(shí),客戶端向向客戶信息列表內(nèi) 的其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù),被請(qǐng)求的客戶端若含有所述請(qǐng)求 的數(shù)據(jù),則發(fā)送給請(qǐng)求的客戶端,達(dá)到了對(duì)丟失的數(shù)據(jù)進(jìn)行修復(fù),增強(qiáng)了數(shù)據(jù) 下載的可靠性, 一定程度上克服了普通組播技術(shù)傳輸數(shù)據(jù)不可靠的缺點(diǎn),并且 本發(fā)明使得客戶端不必等到下一輪服務(wù)端下發(fā)數(shù)據(jù)才可以繼續(xù)接收需要的數(shù) 據(jù),也避免了比較大的接收延遲;進(jìn)一步的,前迷現(xiàn)有技水中每次輪播都是全部數(shù)據(jù),大量的客戶端已經(jīng)擁 有的數(shù)據(jù)也會(huì)被一遍又一遍地重復(fù)輪播下來,造成網(wǎng)絡(luò)帶寬不必要的浪費(fèi),而 本發(fā)明中,客戶端向服務(wù)端匯報(bào)數(shù)據(jù)接收情況,服務(wù)端根據(jù)所述數(shù)據(jù)接收情況, 在一輪數(shù)據(jù)組播完成后向客戶端下發(fā)未成功接收到的數(shù)據(jù),也就是只需要下發(fā) 部分?jǐn)?shù)據(jù)即可,從而避免浪費(fèi)帶寬。


圖1是現(xiàn)有技術(shù)中采用輪播方法流程圖; 圖2是本發(fā)明方法總括流程圖; 圖3是本發(fā)明方法具體流程圖; 圖4是本發(fā)明方法中客戶端間通信流程圖; 圖5是本發(fā)明系統(tǒng)結(jié)構(gòu)示意圖; 圖6是本發(fā)明中服務(wù)端結(jié)構(gòu)示意圖; 圖7是本發(fā)明中客戶端結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明提供一種數(shù)據(jù)下栽方法,其核心思想是客戶端通過組播地址從服 務(wù)端下栽數(shù)據(jù)時(shí),如果錯(cuò)過、丟失部分?jǐn)?shù)據(jù)或接收到損壞的數(shù)據(jù),則可以向?qū)?于同一客戶信息列表內(nèi)的其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù),被請(qǐng)求的 客戶端接到請(qǐng)求后,若含有所述請(qǐng)求的數(shù)據(jù),則發(fā)送給請(qǐng)求的客戶端,這樣客 戶端不必等到下一輪服務(wù)端下發(fā)數(shù)據(jù)才可以繼續(xù)接收需要的數(shù)據(jù)。另外,客戶 端向服務(wù)端匯報(bào)未成功接收的數(shù)據(jù)情況,服務(wù)端對(duì)所有客戶端的數(shù)據(jù)接收情況 進(jìn)行統(tǒng)計(jì),并在下一輪組播時(shí)向客戶端下發(fā)未成功接收到的數(shù)據(jù),而不必下發(fā) 所有數(shù)據(jù)。需要說明的是,本發(fā)明以在交互式網(wǎng)絡(luò)電視IPTV系統(tǒng)應(yīng)用為例進(jìn)行說明 但不局限于此,本發(fā)明也適用其他在互聯(lián)網(wǎng)中的數(shù)據(jù)下載業(yè)務(wù)。
客戶端請(qǐng)求下載的是同一份數(shù)據(jù),在條件允許范圍內(nèi),該客戶端一方面加入組 播組接收組播數(shù)據(jù),另一方面,向其它客戶端請(qǐng)求錯(cuò)過、丟失或者損壞的下載 數(shù)據(jù),被請(qǐng)求的客戶端若含有所述請(qǐng)求的數(shù)據(jù),則發(fā)送給請(qǐng)求的客戶端??蛻?端會(huì)向服務(wù)端匯報(bào)數(shù)據(jù)接收情況,服務(wù)端根據(jù)客戶端的數(shù)據(jù)接收情況進(jìn)行統(tǒng) 計(jì),并在一輪組播完成后,組播所有客戶端未成功接收到的數(shù)據(jù),未成功接收到的數(shù)據(jù)包括錯(cuò)過、丟失或損壞的數(shù)據(jù)。請(qǐng)參閱圖2,是本發(fā)明方法總括流程 圖,包括步驟Bl、服務(wù)端準(zhǔn)備數(shù)據(jù)并創(chuàng)建組播組;B2、客戶端加入組播組,準(zhǔn)備接收數(shù)據(jù);服務(wù)端向客戶端下發(fā)組播地址及客戶信息列表,客戶端收到這些信息后, 加入組播組,準(zhǔn)備接收數(shù)據(jù)。 B3、服務(wù)端組播數(shù)據(jù);服務(wù)端開始組播,客戶端通過服務(wù)端下發(fā)的組播地址從服務(wù)端下栽數(shù)據(jù)。B4、客戶端間傳遞從服務(wù)端未成功接收到的數(shù)據(jù);客戶端向服務(wù)端下發(fā)的客戶信息列表內(nèi)的其他客戶端請(qǐng)求獲取從服務(wù)端 未成功接收到的數(shù)據(jù),被請(qǐng)求的客戶端若含有所述請(qǐng)求的數(shù)據(jù),則發(fā)送給請(qǐng)求 的客戶端。B5、客戶端向服務(wù)端匯報(bào)數(shù)據(jù)接收情況,服務(wù)端根據(jù)所述數(shù)據(jù)接收情況 重新組播所有客戶端未成功接收到的數(shù)據(jù)。此時(shí)可以通過原有組播地址組播數(shù) 據(jù),也可以通過新建的組播地址組播數(shù)據(jù),若新建組播地址,則客戶端需要加 入到新組播組,通過新的組播地址接收服務(wù)端下發(fā)的數(shù)據(jù)。請(qǐng)參閱圖3,是本發(fā)明方法的具體流程圖,包括步驟Cl、服務(wù)端進(jìn)行數(shù)據(jù)準(zhǔn)備,創(chuàng)建組播組;服務(wù)端在數(shù)據(jù)發(fā)布過程中,需要將要下載的數(shù)據(jù)進(jìn)行分塊發(fā)送。在IPTV 數(shù)據(jù)下載系統(tǒng)(CDS )內(nèi),客戶端通過寬帶內(nèi)容向?qū)CG (Broadband Content Guide )獲取服務(wù)端地址和數(shù)據(jù)的基本信息。BCG規(guī)范是由DVB-IPI組織負(fù)責(zé) 制定,主要應(yīng)用于新的寬帶業(yè)務(wù)上。服務(wù)端將數(shù)據(jù)準(zhǔn)備好后,創(chuàng)建組播組。服務(wù)端準(zhǔn)備的數(shù)據(jù)基本信息主要包括如下部分a、 數(shù)據(jù)基本信息描迷,比如數(shù)據(jù)名稱,總長(zhǎng)度,基本信息描迷,前向糾 錯(cuò)處理FEC ( Forward Error Correction)參數(shù)等,其中FEC為可選項(xiàng);b、 數(shù)據(jù)分塊大小以及子塊大小,為了便于網(wǎng)絡(luò)傳輸, 一個(gè)分塊可以分成 若千子塊;服務(wù)端將用戶要下載的數(shù)據(jù)分隔成大小一樣的塊,每一塊的大小為2的指 數(shù)次方,然后在分塊上劃分子塊,子塊大小也是2的指數(shù)次方。每一個(gè)子快加 上包頭作為網(wǎng)絡(luò)上發(fā)送的數(shù)據(jù)包單元,每一個(gè)數(shù)據(jù)包都按規(guī)則進(jìn)行編號(hào),客戶 端根據(jù)編號(hào)可以判斷數(shù)據(jù)包在數(shù)據(jù)中的具體位置以及哪些數(shù)據(jù)包沒有收到。需要說明的是,本發(fā)明以此分塊方法為例但并不局限于此,也可以按其他 方式進(jìn)行劃分。c、 數(shù)據(jù)傳輸協(xié)議;數(shù)據(jù)傳輸協(xié)議指明數(shù)據(jù)在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包采用什么樣的格式,可以采 用實(shí)時(shí)傳輸協(xié)議RTP (Real Time Transport Protocol ),或者直接采用用戶數(shù)據(jù) 報(bào)文協(xié)議UDP (User Datagram Protocol)和自定義的數(shù)據(jù)包頭??蛻舳烁鶕?jù)數(shù) 據(jù)傳輸協(xié)議,進(jìn)行相應(yīng)的解包,同時(shí),也可以支持重新打包,同一數(shù)據(jù),經(jīng)過 客戶端重新打的包必需保證和服務(wù)端完全一致。d、 數(shù)據(jù)和數(shù)據(jù)組播地址信息。C2、客戶端請(qǐng)求下載數(shù)據(jù),并加入到組播組; 根據(jù)客戶端請(qǐng)求下載的時(shí)機(jī),可以分為下面四種情況 1、客戶端請(qǐng)求下載時(shí),數(shù)據(jù)下載組播組還沒有建立;客戶端在請(qǐng)求下載時(shí),服務(wù)端還沒有準(zhǔn)備好組播數(shù)據(jù),接收到客戶端的請(qǐng) 求后,服務(wù)端記錄客戶信息,創(chuàng)建組播組。同時(shí),根據(jù)下栽條件,比如規(guī)定上 午8: 00開始推送數(shù)據(jù),或者當(dāng)請(qǐng)求者達(dá)到10人以上等,決定數(shù)據(jù)推送時(shí)間。服務(wù)端將客戶信息加入到客戶信息列表內(nèi),然后將客戶信息列表和數(shù)據(jù)組 播地址下發(fā)到客戶信息列表內(nèi)的每個(gè)客戶端,客戶端收到這些信息后,加入到 數(shù)據(jù)下栽的組播組,準(zhǔn)備接收數(shù)據(jù)。 2、 客戶端請(qǐng)求下栽時(shí),數(shù)據(jù)下栽組播組已經(jīng)建立,但還沒有下發(fā)數(shù)據(jù); 客戶端在請(qǐng)求下載時(shí),服務(wù)端已經(jīng)創(chuàng)建了組播組,接收到客戶端的請(qǐng)求后,記錄客戶信息,同時(shí),根據(jù)下載條件,比如規(guī)定上午8: OO開始推送數(shù)據(jù),或 者當(dāng)請(qǐng)求者達(dá)到IO人以上等,決定數(shù)據(jù)推送時(shí)間。服務(wù)端將客戶信息加入到客戶信息列表內(nèi),然后將客戶信息列表和數(shù)據(jù)組 播地址下發(fā)到客戶信息列表內(nèi)的每個(gè)客戶端,客戶端收到這些信息后,加入到 數(shù)據(jù)下載的組播組,準(zhǔn)備接收數(shù)據(jù)。3、 客戶端請(qǐng)求下載時(shí),數(shù)據(jù)下載組播組已經(jīng)建立并正在下發(fā)數(shù)據(jù),并且 客戶端在下載條件允許范圍內(nèi);客戶端在請(qǐng)求下載時(shí),服務(wù)端已經(jīng)創(chuàng)建了組播組并且正在下發(fā)數(shù)據(jù),接收 到客戶端的請(qǐng)求后,記錄客戶信息。服務(wù)端將客戶信息加入到客戶信息列表內(nèi), 然后將客戶信息列表和數(shù)據(jù)組播地址下發(fā)到客戶信息列表內(nèi)的每個(gè)客戶端,客 戶端收到這些信息后,加入到數(shù)據(jù)下載的組播組,開始接收數(shù)據(jù)。同時(shí),如果 客戶端的帶寬和性能足夠,客戶端向客戶信息列表內(nèi)的其它客戶端請(qǐng)求獲取錯(cuò) 過、丟失或損壞的數(shù)據(jù),如果其它客戶端的帶寬和性能足夠,則向該客戶端提 供其請(qǐng)求的錯(cuò)過、丟失或損壞的數(shù)據(jù)。4、 客戶端請(qǐng)求下載時(shí),數(shù)據(jù)下載組播組已經(jīng)建立并正在下發(fā)數(shù)據(jù),但客 戶端不在下載條件允許范圍內(nèi)。客戶端在請(qǐng)求下載時(shí),服務(wù)端已經(jīng)創(chuàng)建了組播組并且正在下發(fā)數(shù)據(jù),由于 客戶端的請(qǐng)求不在下載條件允許范圍內(nèi),比如下載條件為本次組播只接收8: 00~8: 30請(qǐng)求下載的用戶請(qǐng)求,而客戶端在8: 50提出下載請(qǐng)求,或者本次 數(shù)據(jù)下載最多允許5000用戶下載,而該客戶端是第5001個(gè)請(qǐng)求數(shù)據(jù)下載者等, 服務(wù)端在接收到客戶端的請(qǐng)求后,記錄客戶信息,將客戶端加入到下一輪次組 播客戶信息列表內(nèi)。需要說明的是,客戶端向服務(wù)端請(qǐng)求下載文件,服務(wù)端將根據(jù)安全機(jī)制驗(yàn) 證客戶端身份,例如可以根據(jù)客戶端的網(wǎng)絡(luò)地址等進(jìn)行,若是授權(quán)用戶則通過 驗(yàn)證,否則拒絕,通過驗(yàn)證后服務(wù)端將記錄客戶端信息,并允許其加入組播組。 C3、服務(wù)端組播數(shù)據(jù),客戶端接收數(shù)據(jù);在指定條件滿足后,服務(wù)端將數(shù)據(jù)推到指定的組播組向客戶信息列表內(nèi)的 客戶端進(jìn)行組播,客戶端加入組播組后即可以進(jìn)行相關(guān)數(shù)據(jù)下栽。這里所說的指定條件是服務(wù)端根據(jù)自身策略而定,例如該條件可以這樣制 定規(guī)定上午8: OO開始推送數(shù)據(jù),或者當(dāng)請(qǐng)求者達(dá)到10人以上進(jìn)行推送數(shù) 據(jù)等。C4 、客戶端向其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù); 客戶端在接收組播數(shù)據(jù)的同時(shí),如果錯(cuò)過了某些數(shù)據(jù)的下栽,或者出現(xiàn)了 丟包或者數(shù)據(jù)包損壞的情況,可以通過端到端的方式從其它客戶端請(qǐng)求錯(cuò)過 的、丟失的或者損壞的數(shù)據(jù),而其他客戶端收到請(qǐng)求后,還可以判斷請(qǐng)求的客 戶端是否在客戶信息列表內(nèi),只有確認(rèn)請(qǐng)求所需數(shù)據(jù)的客戶端在組播組的客戶 信息列表內(nèi)才發(fā)送數(shù)據(jù)到請(qǐng)求的客戶端??蛻舳讼螺d的主要數(shù)據(jù)是通過組播的方式獲取的,少量的數(shù)據(jù)需要從其它 客戶端獲取,這部分所占用的帶寬相對(duì)較少。由于數(shù)據(jù)需要進(jìn)行分塊傳輸,每一個(gè)分塊又由多個(gè)數(shù)據(jù)包所組成,兩個(gè)客 戶端之間交換分塊彩:據(jù)與交換單個(gè)數(shù)據(jù)包數(shù)據(jù)相比,前者占有的控制信息帶寬 與處理明顯就要小得多。因此,客戶端應(yīng)該盡量向其它客戶端請(qǐng)求重傳整個(gè)分 塊,而不是單個(gè)數(shù)據(jù)包??紤]到在數(shù)據(jù)下載過程中,數(shù)據(jù)丟包率一般不會(huì)太高, 可以采用如下策略進(jìn)行客戶端之間的數(shù)據(jù)重傳客戶端在下載的過程中,如果錯(cuò)過、丟失或者損壞了某個(gè)數(shù)據(jù)包。如果該 數(shù)據(jù)包所在的分塊內(nèi)所有的數(shù)據(jù)包都沒有收到,則向其它客戶端請(qǐng)求該分塊數(shù) 據(jù),如果只是某分塊內(nèi)一部分?jǐn)?shù)據(jù)錯(cuò)過、丟失或者損壞,可以向其它客戶端請(qǐng) 求錯(cuò)過、丟失或者損壞的數(shù)據(jù)包。當(dāng)客戶端發(fā)現(xiàn)有數(shù)據(jù)丟失時(shí),它首先根據(jù)當(dāng)前客戶信息列表,向其它客戶 端發(fā)送查詢包,查詢包可以包括本客戶端基本信息,丟失的數(shù)據(jù)包序號(hào),是否 支持FEC等信息。其基本流程請(qǐng)參閱圖4本發(fā)明方法中客戶端間通信流程圖。如圖4所示,包括步驟
Dl、客戶端l發(fā)現(xiàn)有數(shù)據(jù)錯(cuò)過、丟失或者損壞;D2、客戶端1向客戶端2和3同時(shí)發(fā)送查詢包,詢問是否含有客戶端1 所錯(cuò)過、丟失或者損壞的數(shù)據(jù);D3、客戶端2告知客戶端1含有所需數(shù)據(jù);D4、客戶端1取消向客戶端3的查詢請(qǐng)求;D5、客戶端2向客戶端l發(fā)送所需的數(shù)據(jù)包;客戶端2判斷客戶端1是否支持FEC解碼,如果客戶端1支持FEC解碼, 客戶端2檢查是否有客戶端1所需要的數(shù)據(jù)包所對(duì)應(yīng)的FEC包,若有,則將 該FEC包發(fā)送給客戶端l,若無,則直接把客戶端1所需要的數(shù)據(jù)包發(fā)送過去; 如果客戶端1不支持FEC解碼,則客戶端2直接把客戶端1所需要的數(shù)據(jù)包 發(fā)送過去。需要說明的是,客戶端2提供的數(shù)據(jù)包可以來自本地緩沖區(qū),也可以在本 地利用傳輸協(xié)議重新打包,但是重新打的數(shù)據(jù)包必需和服務(wù)端提供的數(shù)據(jù)包內(nèi) 容完全一致;客戶端2的FEC包可以來自本地緩沖區(qū),也可以在本地利用FEC 算法產(chǎn)生。FEC包可以看成是冗余數(shù)據(jù)包,采用相應(yīng)的FEC算法,將某個(gè)普通數(shù)據(jù) 包進(jìn)行FEC處理,可以獲得相應(yīng)的FEC數(shù)據(jù)包。數(shù)據(jù)下載時(shí), 一般是同時(shí)發(fā) 送普通數(shù)據(jù)包和FEC包。另外,選用某種FEC算法,也可以不傳送普通數(shù)據(jù) 包而只發(fā)送FEC包,當(dāng)然,也可以選擇只發(fā)送普通數(shù)據(jù)包。FEC是可選項(xiàng), 服務(wù)端可以支持或不支持,客戶端也可以支持或不支持,或者服務(wù)端選用FEC , 但客戶端可以不支持FEC,此時(shí)客戶端如果不支持FEC,則它只需要選擇接 收普通數(shù)據(jù)包即可,不需要接收FEC數(shù)據(jù)包。通過FEC數(shù)據(jù)包可以恢復(fù)丟失 的普通數(shù)據(jù)包,在數(shù)據(jù)下載時(shí)采用FEC包可以節(jié)省數(shù)據(jù)包丟失時(shí)重新請(qǐng)求數(shù) 據(jù)包帶來的額外交互開銷,但同時(shí)采用FEC技術(shù)也可能會(huì)給網(wǎng)絡(luò)額外帶來一 些帶寬開銷。另外,采用FEC技術(shù)時(shí),服務(wù)端準(zhǔn)備的數(shù)據(jù)基本信息中還可以 包括FEC數(shù)據(jù)組播地址信息。需要說明的是,在客戶端接收服務(wù)端組播數(shù)據(jù)的過程中,如果客戶端完成
下栽,并且沒有其他客戶端連接請(qǐng)求獲取數(shù)據(jù),則可以退出下載,如果還有其 他客戶端連接請(qǐng)求獲取數(shù)據(jù),則繼續(xù)提供數(shù)據(jù)給其他客戶端。C5、服務(wù)端更新客戶信息;在下載過程中,服務(wù)端周期性的檢測(cè)客戶端狀態(tài),更新本地客戶信息列表, 并將更新后的客戶信息列表下發(fā)給客戶端。在IPTV的數(shù)據(jù)下載系統(tǒng)(CDS) 內(nèi),服務(wù)端通過業(yè)務(wù)發(fā)現(xiàn)與選擇SD&S ( Service Discovery and Selection)將客 戶信息推送到客戶端,客戶端收到信息后,更新本地客戶信息列表??蛻舳吮?存下載客戶信息,主要用于數(shù)據(jù)錯(cuò)過、丟失或損壞時(shí),根據(jù)當(dāng)前下載客戶信息, 向其它客戶端發(fā)送查詢包,也用于確認(rèn)請(qǐng)求所需數(shù)據(jù)的客戶端是否在組播組的 客戶信息列表內(nèi),只有確認(rèn)后才發(fā)送數(shù)據(jù)到請(qǐng)求的客戶端。收到查詢包的客戶 端,如果有該客戶端需要的數(shù)據(jù)包,就將其發(fā)送給該客戶端。C6、客戶端向服務(wù)端匯報(bào)數(shù)據(jù)接收情況;當(dāng)客戶端不能從其它客戶端獲取到所需要的數(shù)據(jù),則該客戶端通過數(shù)據(jù)接 收?qǐng)?bào)告通知服務(wù)端。C7、服務(wù)端統(tǒng)計(jì)客戶下栽信息,組播所有客戶端不能通過客戶端間端到 端方式獲得的數(shù)據(jù);在服務(wù)端組播完數(shù)據(jù)后,根據(jù)當(dāng)前所有客戶端發(fā)送的數(shù)據(jù)接收?qǐng)?bào)告,統(tǒng)計(jì) 客戶的下載信息,然后將所有客戶端不能通過端到端請(qǐng)求獲得的數(shù)據(jù)通過組播 的方式推送下來。此時(shí)可以通過原有組播地址組播數(shù)據(jù),也可以通過新建的組 播地址組播數(shù)據(jù),若新建組播地址,則客戶端需要加入到新組播組,通過新的 組播地址接收服務(wù)端下發(fā)的數(shù)據(jù)。正常情況下,服務(wù)端只需要統(tǒng)計(jì)一兩次數(shù)據(jù)下載信息就可以完成整個(gè)網(wǎng)絡(luò) 的數(shù)據(jù)下載。也就是說只需要組播一兩次數(shù)據(jù),第一次組播所有數(shù)據(jù),以后組 播網(wǎng)絡(luò)上客戶端缺失的數(shù)據(jù),而不必象以前那樣重新組播所有數(shù)據(jù)。C8、所有客戶端完成組播數(shù)據(jù)下載后,服務(wù)端關(guān)閉組播組。為便于更好地理解本發(fā)明方法,下面舉一個(gè)具體應(yīng)用實(shí)施例。在上午7: 55~8: 00之間,有200個(gè)客戶向服務(wù)端請(qǐng)求下載文件"a.dat",
上午8: OO服務(wù)端開始組播文件數(shù)據(jù),組播時(shí)間為8: 00 9: 00,在該時(shí)間又 有500個(gè)客戶加入下栽。在8: 00 9: OO期間,客戶一邊接收組播數(shù)據(jù), 一邊 從其它客戶那里下載其錯(cuò)過、丟失或者損壞的數(shù)據(jù)。9: OO之后,服務(wù)端統(tǒng)計(jì) 所有在線的下載客戶數(shù)據(jù)信息,將所有客戶錯(cuò)過、丟失或者損壞的數(shù)據(jù),通過 組播重新下發(fā)。具體實(shí)施步驟包括1、 服務(wù)端準(zhǔn)備文件"a,dat",文件大小為256M,設(shè)置文件分塊大小為256K, 共1000個(gè)分塊,網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)包大小為1K,則每個(gè)分塊256個(gè)包。每個(gè)分 塊都有一個(gè)分塊號(hào),從O開始編號(hào),范圍是0-999,每一個(gè)數(shù)據(jù)包都有一個(gè)分 塊內(nèi)包號(hào),從O開始編號(hào),范圍是0 255,在網(wǎng)絡(luò)上發(fā)送的數(shù)據(jù)包序號(hào)由兩部 分組成,包括分塊號(hào)和分塊內(nèi)包號(hào),由每個(gè)數(shù)據(jù)包號(hào)序號(hào)可以定位其在文件中 的具體位置;2、 客戶端向服務(wù)端請(qǐng)求下載文件,服務(wù)端驗(yàn)證客戶端身份,若是授權(quán)用 戶則通過驗(yàn)證,否則拒絕,通過驗(yàn)證后服務(wù)端將記錄客戶端信息;3、 服務(wù)端將文件信息、文件源網(wǎng)絡(luò)組播地址/端口信息、組內(nèi)成員列表發(fā) 送到組內(nèi)各客戶端,并創(chuàng)建組播組,客戶端收到服務(wù)端發(fā)送的信息,加入到組 播組;4、 在上午8: 00,服務(wù)端開始組播數(shù)據(jù),客戶端接收并統(tǒng)計(jì)接收到的數(shù)據(jù);在下載過程中,如果客戶端在下栽組播數(shù)據(jù)時(shí)有數(shù)據(jù)錯(cuò)過、丟失或損壞, 該錯(cuò)過、丟失或損壞的數(shù)據(jù)如果其它客戶端擁有,則可以從其它客戶端請(qǐng)求獲 取,否則,客戶端記下數(shù)據(jù)包的信息,最后由服務(wù)端統(tǒng)計(jì),再重新組播,統(tǒng)一 下發(fā)給客戶端;如果是向其它客戶端下載數(shù)據(jù)的過程中出現(xiàn)數(shù)據(jù)丟失,則重傳 該數(shù)據(jù)包所在的分塊數(shù)據(jù)。在8: 00~8: 30加入下載的客戶端, 一方面加入組4番組下栽數(shù)據(jù),同時(shí), 假定該客戶端錯(cuò)過了分塊0 50、分塊51內(nèi)的數(shù)據(jù)包254和255,則向其它客 戶端請(qǐng)求傳送分塊0 50內(nèi)的數(shù)據(jù)包,以及分塊51內(nèi)的數(shù)據(jù)包254和255 。
在下載過程中,如杲帶寬不夠,將優(yōu)先滿足組播數(shù)據(jù)下栽,其次才是和其 它客戶端之間的數(shù)據(jù)下載。5、 服務(wù)端周期地向客戶端獲取信息狀態(tài),更新客戶信息; 在下載過程中,服務(wù)端將周期性地檢測(cè)客戶端狀態(tài),更新本地客戶信息列表,并將更新后的客戶信息列表下發(fā)給客戶端。當(dāng)客戶端下載完成,客戶端連接的其他請(qǐng)求客戶端都斷開連接,則可以退 出組播組,向服務(wù)端發(fā)送要退出下載的消息,服務(wù)端將該客戶端從組內(nèi)成員信 息列表內(nèi)刪除,同時(shí),將新的組內(nèi)成員客戶信息列表下發(fā)給列表內(nèi)的其它客戶 端,但客戶端下載完成時(shí)如果還有其它客戶端和它連接并從其下栽數(shù)據(jù),則繼 續(xù)提供數(shù)據(jù)給其它客戶端。需要說明的是,客戶端根據(jù)自身需要,隨時(shí)可以退 出組播組,服務(wù)端通過客戶端發(fā)送的退出消息或周期性地檢測(cè),可以知道客戶 端的狀態(tài),并更新客戶信息列表。6、 客戶端向服務(wù)端匯報(bào)數(shù)據(jù)接收情況;當(dāng)客戶端不能從其它客戶端獲取到所需要的未成功接收到的數(shù)據(jù),則該客 戶端通過數(shù)據(jù)接收?qǐng)?bào)告通知服務(wù)端。7、 一次組播完成后,服務(wù)端統(tǒng)計(jì)客戶下載信息,并組播所有客戶端不能 通過客戶端間端到端方式獲得的錯(cuò)過、丟失或損壞的數(shù)據(jù);此時(shí)服務(wù)端可以通過原有組播地址組播數(shù)據(jù),也可以通過新建的組播地址 組播數(shù)據(jù),若新建組播地址,則客戶端需要加入到新組播組,通過新的組播地 址接收服務(wù)端下發(fā)的數(shù)據(jù)。8、 所有客戶端都完成下載,服務(wù)端關(guān)閉組播組,數(shù)據(jù)下載完成。相應(yīng)的,本發(fā)明提供一種數(shù)據(jù)下栽系統(tǒng)。請(qǐng)參閱圖5,是本發(fā)明系統(tǒng)結(jié)構(gòu) 示意圖。本系統(tǒng)500包括服務(wù)端501和客戶端502。服務(wù)端501,用于向客戶端502下發(fā)組播地址及客戶信息列表,接收客戶 端502加入組播組,并向客戶端502下發(fā)數(shù)據(jù);客戶端502,用于接收服務(wù)端 501下發(fā)的組播地址及客戶信息列表,通過組播地址從服務(wù)端501下栽數(shù)據(jù),
向客戶信息列表內(nèi)的其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù)或向其他請(qǐng)求 獲取未成功接收到的數(shù)據(jù)的客戶端發(fā)送請(qǐng)求的數(shù)據(jù)。本發(fā)明中客戶端502向服務(wù)端501請(qǐng)求數(shù)據(jù)下栽,服務(wù)端501通過承栽網(wǎng) 將數(shù)據(jù)以組播的方式推送下去,在數(shù)據(jù)推送的過程中,如果有其它客戶端請(qǐng)求 下栽的是同一數(shù)據(jù),在條件允許范圍內(nèi),客戶端502 —方面加入組播組接收組 播數(shù)據(jù),另一方面,向其它客戶端請(qǐng)求獲取錯(cuò)過、丟失或者損壞的下載數(shù)據(jù), 被請(qǐng)求的客戶端若含有所述請(qǐng)求的數(shù)據(jù),則發(fā)送給請(qǐng)求的客戶端502。客戶端 502會(huì)向服務(wù)端501匯報(bào)數(shù)據(jù)接收情況,服務(wù)端501根據(jù)所有客戶端數(shù)據(jù)接收 情況進(jìn)行統(tǒng)計(jì),并在一次組播完成后,組播所有客戶端未成功接收到的數(shù)據(jù)。 此時(shí)服務(wù)端501可以通過原有組播地址組播數(shù)據(jù),也可以通過新建的組播地址 組播數(shù)據(jù),若新建組播地址,則客戶端502需要加入到新組播組,通過新的組 播地址接收服務(wù)端501下發(fā)的數(shù)據(jù)。請(qǐng)參閱圖6,是本發(fā)明中服務(wù)端501結(jié)構(gòu)示意圖。服務(wù)端501包括數(shù)據(jù)單 元601、第一打包單元602、第一數(shù)據(jù)下載處理單元603和第一網(wǎng)絡(luò)收發(fā)單元 604。數(shù)據(jù)單元601,用于存儲(chǔ)下發(fā)的數(shù)據(jù),將下發(fā)數(shù)據(jù)傳遞給第一打包單元602 進(jìn)行打包;第一打包單元602,用于將數(shù)據(jù)進(jìn)行打包和注明標(biāo)識(shí);第一數(shù)據(jù)下 栽處理單元603,用于控制數(shù)據(jù)的下發(fā)流程,例如控制是否采用FEC處理,采 用什么打包方式,何時(shí)打包,采用什么打包格式,處理數(shù)據(jù)下載請(qǐng)求,以及網(wǎng) 絡(luò)數(shù)據(jù)發(fā)送/接收控制等;第一網(wǎng)絡(luò)收發(fā)單元604,用于接收和下發(fā)數(shù)據(jù),向客 戶端502下發(fā)數(shù)據(jù),接收客戶端502返回的關(guān)于接收情況的信息。服務(wù)端501進(jìn)一步包括第一前向糾錯(cuò)FEC處理單元605,用于將數(shù)據(jù)單元 601傳遞的數(shù)據(jù)進(jìn)行前向糾錯(cuò)處理,并傳遞給第一打包單元602進(jìn)行打包。第 一前向糾錯(cuò)處理單元605在服務(wù)端501中為可選單元。如果有第一前向糾錯(cuò) FEC處理單元605,則數(shù)據(jù)先送給第一前向糾錯(cuò)FEC處理單元605處理,否 則,直接送給第一打包單元602打包。前向糾錯(cuò)FEC處理,是將原始數(shù)據(jù)通 過FEC算法獲得FEC包,而通過FEC包可以還原數(shù)據(jù),即如果原始數(shù)據(jù)包丟 失,通過該包的FEC數(shù)據(jù)包,可以重新生成原始數(shù)據(jù)。 請(qǐng)參閱圖7,是本發(fā)明中客戶端502結(jié)構(gòu)示意圖??蛻舳税ǖ诙W(wǎng)絡(luò)收 發(fā)單元701、第二數(shù)據(jù)下載處理單元702、解包單元703和本地存儲(chǔ)系統(tǒng)單元 704。第二網(wǎng)絡(luò)收發(fā)單元701,用于下載和發(fā)送數(shù)據(jù),從服務(wù)端501下載數(shù)據(jù), 向服務(wù)端501返回關(guān)于數(shù)據(jù)接收情況的信息,向其他客戶端發(fā)送獲取未成功接 收到的數(shù)據(jù)的請(qǐng)求或向其他請(qǐng)求獲取未成功接收到的數(shù)據(jù)的客戶端發(fā)送請(qǐng)求 的數(shù)據(jù);第二數(shù)據(jù)下載處理單元702,用于控制客戶端502的數(shù)據(jù)下栽過程; 解包單元703,用于將第二網(wǎng)絡(luò)收發(fā)單元701下載的數(shù)據(jù)包解包后傳遞到本地 存儲(chǔ)系統(tǒng)單元704進(jìn)行存儲(chǔ),即將網(wǎng)絡(luò)上接收到的數(shù)據(jù)包去掉網(wǎng)絡(luò)封裝的包 頭,并保存在本地存儲(chǔ)系統(tǒng)單元704;本地存儲(chǔ)系統(tǒng)單元704,用于存儲(chǔ)解包 單元703傳遞的數(shù)據(jù)??蛻舳?02進(jìn)一步包括第二前向糾錯(cuò)FEC處理單元705和第二打包單元 706;第二前向糾錯(cuò)FEC處理單元705,用于將解包單元703傳遞的數(shù)據(jù)進(jìn)行 前向糾錯(cuò)恢復(fù)處理,并傳遞到本地存儲(chǔ)系統(tǒng)單元704進(jìn)行存儲(chǔ),還包括用于將 本地存儲(chǔ)系統(tǒng)單元704存儲(chǔ)的其他客戶端請(qǐng)求獲取的未成功接收到的數(shù)據(jù)進(jìn) 行前向糾錯(cuò)處理,并傳遞給第二打包單元706進(jìn)行打包。也就是說,如果有數(shù) 據(jù)包丟失并且接收到該數(shù)據(jù)包對(duì)應(yīng)的FEC數(shù)據(jù)包,則第二前向糾錯(cuò)FEC處理 單元705將解包單元703解出來的FEC數(shù)據(jù)包還原數(shù)據(jù),并保存到本地存儲(chǔ) 系統(tǒng)單元704;或者直接利用本地?cái)?shù)據(jù)重新生成FEC數(shù)據(jù)包,送給第二打包單 元706,發(fā)送到對(duì)應(yīng)的網(wǎng)絡(luò)。第二打包單元706,用于將經(jīng)過或未經(jīng)過第二前 向糾錯(cuò)FEC處理單元705進(jìn)行前向糾錯(cuò)處理的本地存儲(chǔ)系統(tǒng)單元704存儲(chǔ)的 其他客戶端請(qǐng)求獲取的未成功接收到的數(shù)據(jù)進(jìn)行打包,封裝為網(wǎng)絡(luò)上發(fā)送的數(shù) 據(jù)包格式,并通過第二網(wǎng)絡(luò)收發(fā)單元701發(fā)送給請(qǐng)求的其他客戶端。第二前向 糾錯(cuò)FEC處理單元705和第二打包單元706在客戶端中為可選單元。本發(fā)明中客戶端502的第二網(wǎng)絡(luò)收發(fā)單元701 —方面接受下栽的數(shù)據(jù),另 一方面也給其它客戶端提供數(shù)據(jù)。當(dāng)向其它客戶端提供數(shù)據(jù)時(shí),如果其它客戶 端請(qǐng)求的數(shù)據(jù)在緩沖區(qū)內(nèi),則可以直接轉(zhuǎn)發(fā),如果當(dāng)前緩沖區(qū)內(nèi)沒有所需要的 數(shù)據(jù)包,則需要判斷所請(qǐng)求的客戶端是否支持傳輸數(shù)據(jù)打包,如果支持,則從 本地存儲(chǔ)系統(tǒng)單元704獲取數(shù)據(jù)打包發(fā)送給請(qǐng)求的客戶端,如果所請(qǐng)求的客戶 端是支持FEC編碼,也可以重新生成FEC包發(fā)送。以上對(duì)本發(fā)明所提供的一種數(shù)據(jù)下載方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中 應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只 是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人 員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上 所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1、一種數(shù)據(jù)下載方法,其特征在于,包括服務(wù)端向客戶端下發(fā)組播地址及客戶信息列表;客戶端通過組播地址從服務(wù)端下載數(shù)據(jù);客戶端向客戶信息列表內(nèi)的其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù),被請(qǐng)求的客戶端若含有所述請(qǐng)求的數(shù)據(jù),則發(fā)送給請(qǐng)求的客戶端。
2、 根據(jù)權(quán)利要求1所述的數(shù)據(jù)下載方法,其特征在于還包括客戶端向服務(wù)端匯報(bào)數(shù)據(jù)接收情況,服務(wù)端根據(jù)所述數(shù)據(jù)接收情 況向客戶端下發(fā)未成功接收到的數(shù)據(jù)。
3、 根據(jù)權(quán)利要求2所述的數(shù)據(jù)下載方法,其特征在于所述服務(wù)端向客戶端下發(fā)未成功接收到的數(shù)據(jù)通過原有組播地址或新 建的組播地址下發(fā)。
4、 根據(jù)權(quán)利要求l、 2或3所述的數(shù)據(jù)下載方法,其特征在于客戶端從服務(wù)端下栽數(shù)據(jù)過程中正常或異常退出后,服務(wù)端從客戶信息 列表刪除所述客戶端的信息,并將更新后的客戶信息列表下發(fā)給其他客戶 端。
5、 根據(jù)權(quán)利要求1所述的數(shù)據(jù)下載方法,其特征在于 服務(wù)端接收到客戶端的數(shù)據(jù)下載請(qǐng)求后,將客戶端信息加入客戶信息列表。
6、 根據(jù)權(quán)利要求5所述的數(shù)據(jù)下載方法,其特征在于服務(wù)端確認(rèn)客戶端屬授權(quán)用戶后將客戶端信息加入客戶信息列表,以 及,客戶端確認(rèn)其他請(qǐng)求獲取未成功接收到的數(shù)據(jù)的客戶端在客戶信息列表 內(nèi)再發(fā)送請(qǐng)求的數(shù)據(jù)到請(qǐng)求的客戶端。
7、 根據(jù)權(quán)利要求1所述的數(shù)據(jù)下載方法,其特征在于客戶端從服務(wù)端下載數(shù)據(jù)前,服務(wù)端將客戶端請(qǐng)求下載的數(shù)據(jù)分塊和打 包,并注明標(biāo)識(shí)后發(fā)送,以及,客戶端從服務(wù)端下載數(shù)據(jù)過程中,客戶端根 據(jù)所述標(biāo)識(shí)向其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù)或向其他請(qǐng)求獲取 未成功接收到的數(shù)據(jù)的客戶端發(fā)送請(qǐng)求的數(shù)據(jù)。
8、 根據(jù)權(quán)利要求7所迷的數(shù)據(jù)下載方法,其特征在于 所述發(fā)送的數(shù)據(jù)包括經(jīng)過前向糾錯(cuò)處理的數(shù)據(jù)。
9、 一種數(shù)據(jù)下載系統(tǒng),其特征在于 包括服務(wù)端和客戶端;服務(wù)端,用于向客戶端下發(fā)組播地址及客戶信息列表,并向客戶端下發(fā) 數(shù)據(jù);客戶端,用于接收服務(wù)端下發(fā)的組播地址及客戶信息列表,通過組播地 址從服務(wù)端下載數(shù)據(jù),向客戶信息列表內(nèi)的其他客戶端請(qǐng)求獲取未成功接收 到的數(shù)據(jù)或向其他請(qǐng)求獲取未成功接收到的數(shù)據(jù)的客戶端發(fā)送請(qǐng)求的數(shù)據(jù)。
10、 根據(jù)權(quán)利要求9所述的數(shù)據(jù)下載系統(tǒng),其特征在于 客戶端進(jìn)一步包括用于向服務(wù)端匯報(bào)數(shù)據(jù)接收情況;以及,服務(wù)端進(jìn)一步包括用于根據(jù)所述數(shù)據(jù)接收情況向客戶端下發(fā)未成功接收到的數(shù)據(jù)。
11、 一種用于數(shù)據(jù)下載的服務(wù)端,其特征在于包括數(shù)據(jù)單元、第一打包單元、第一數(shù)據(jù)下載處理單元和第一網(wǎng)絡(luò)收發(fā)單元;數(shù)據(jù)單元,用于存儲(chǔ)下發(fā)的數(shù)據(jù),將數(shù)據(jù)傳遞給第一打包單元進(jìn)行打包; 第一打包單元,用于將數(shù)據(jù)進(jìn)行打包和注明標(biāo)識(shí); 第一數(shù)據(jù)下載處理單元,用于控制數(shù)據(jù)的下發(fā)流程; 第一網(wǎng)絡(luò)收發(fā)單元,用于接收和下發(fā)數(shù)據(jù),向客戶端下發(fā)數(shù)據(jù),接收客 戶端返回的關(guān)于數(shù)據(jù)接收情況的信息。
12、 根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)下載的服務(wù)端,其特征在于服務(wù)端進(jìn)一步包括第一前向糾錯(cuò)處理單元,用于將數(shù)據(jù)單元傳遞的數(shù)據(jù) 進(jìn)行前向糾錯(cuò)處理,并傳遞給第一打包單元進(jìn)行打包。
13、 一種用于數(shù)據(jù)下載的客戶端,其特征在于包括第二網(wǎng)絡(luò)收發(fā)單元、第二數(shù)據(jù)下栽處理單元、解包單元和本地存儲(chǔ) 系統(tǒng)單元;第二網(wǎng)絡(luò)收發(fā)單元,用于下載和發(fā)送數(shù)據(jù),從服務(wù)端下栽數(shù)據(jù),向服務(wù) 端返回關(guān)于數(shù)據(jù)接收情況的信息,向其他客戶端發(fā)送獲取未成功接收到的數(shù) 據(jù)的請(qǐng)求或向其他請(qǐng)求獲取未成功接收到的數(shù)據(jù)的客戶端發(fā)送請(qǐng)求的數(shù)據(jù);第二數(shù)據(jù)下載處理單元,用于控制客戶端的數(shù)據(jù)下載過程;解包單元,用于將第二網(wǎng)絡(luò)收發(fā)單元下載的數(shù)據(jù)包解包后傳遞到本地存 儲(chǔ)系統(tǒng)單元進(jìn)行存儲(chǔ);本地存儲(chǔ)系統(tǒng)單元,用于存儲(chǔ)解包單元傳遞的數(shù)據(jù)。
14、 根據(jù)權(quán)利要求13所述的用于數(shù)據(jù)下載的客戶端,其特征在于客戶端進(jìn)一步包括第二打包單元,用于將本地存儲(chǔ)系統(tǒng)單元存儲(chǔ)的其他 客戶端請(qǐng)求獲取的未成功接收到的數(shù)據(jù)進(jìn)行打包,并通過第二網(wǎng)絡(luò)收發(fā)單元 發(fā)送給請(qǐng)求的其他客戶端。
15、 根據(jù)權(quán)利要求14所述的用于數(shù)據(jù)下載的客戶端,其特征在于客戶端進(jìn)一步包括第二前向糾錯(cuò)處理單元,用于將解包單元傳遞的數(shù)據(jù) 進(jìn)行前向糾錯(cuò)恢復(fù)處理,并傳遞到本地存儲(chǔ)系統(tǒng)單元進(jìn)行存儲(chǔ),還包括用于 將本地存儲(chǔ)系統(tǒng)單元存儲(chǔ)的其他客戶端請(qǐng)求獲取的未成功接收到的數(shù)據(jù)進(jìn) 行前向糾錯(cuò)處理,并傳遞給第二打包單元進(jìn)行打包。
全文摘要
本發(fā)明公開一種數(shù)據(jù)下載方法及系統(tǒng)。所述方法為服務(wù)端向客戶端下發(fā)組播地址及客戶信息列表;客戶端通過組播地址從服務(wù)端下載數(shù)據(jù);客戶端向客戶信息列表內(nèi)的其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù),被請(qǐng)求的客戶端若含有所述請(qǐng)求的數(shù)據(jù),則發(fā)送給請(qǐng)求的客戶端。所述系統(tǒng)包括服務(wù)端,用于向客戶端下發(fā)組播地址及客戶信息列表,向客戶端下發(fā)數(shù)據(jù);客戶端,用于接收服務(wù)端下發(fā)的組播地址及客戶信息列表,通過組播地址從服務(wù)端下載數(shù)據(jù),向客戶信息列表內(nèi)的其他客戶端請(qǐng)求獲取未成功接收到的數(shù)據(jù)或向其他請(qǐng)求獲取數(shù)據(jù)的客戶端發(fā)送請(qǐng)求的數(shù)據(jù)。本發(fā)明能增強(qiáng)數(shù)據(jù)下載的可靠性和解決數(shù)據(jù)下載過程中的網(wǎng)絡(luò)帶寬浪費(fèi)問題。
文檔編號(hào)H04L12/28GK101119249SQ20061010950
公開日2008年2月6日 申請(qǐng)日期2006年8月2日 優(yōu)先權(quán)日2006年8月2日
發(fā)明者商飛鵬 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1