斷點續傳功能原理

     斷點續傳可以分爲兩部分:一部分是斷點,一部分是續傳。斷點的由來是在下載過程中,將一個下載文件分成了多個部分,同時進行多個部分一起下載,當某個時間點,任務被暫停了,此時下載暫停的位置就是斷點了。續傳就是當一個未完成的下載任務再次開始時,會從上次的斷點繼續傳送。

    使用多線程斷點續傳下載的時候,將下載或上傳任務(一個文件或一個壓縮包)人爲的劃分爲幾個部分,每一個部分採用一個線程進行上傳或下載,多個線程併發可以佔用服務器端更多資源,從而加快下載速度。

    在下載(或上傳)過程中,如果網絡故障、電量不足等原因導致下載中斷,這就需要使用到斷點續傳功能。下次啓動時,可以從記錄位置(已經下載的部分)開始,繼續下載以後未下載的部分,避免重複部分的下載。斷點續傳實質就是能記錄上一次已下載完成的位置。

      過程可以描述成這樣:

   ①斷點續傳需要在下載過程中記錄每條線程的下載進度;

 ②每次下載開始之前先讀取數據庫,查詢是否有未完成的記錄,有就繼續下載,沒有則創建新記錄插入數據庫;

③在每次向文件中寫入數據之後,在數據庫中更新下載進度;

④下載完成之後刪除數據庫中下載記錄。

斷點續傳在HTTP請求上和一般的下載有所不同,客戶端瀏覽器傳給Web服務器的時候要多加一條信息——從哪裏開始(HTTP請求變量)。要實現HTTP斷點續傳,Web服務器必須支持HTTP/1.1(相對於HTTP/1.0老版本)。

 HTTP請求是有一個Header的,裏面有個Range屬性是定義下載區域的,它接收的值是一個區間範圍,比如:Range:bytes=0-10000。這樣我們就可以按照一定的規則,將一個大文件拆分爲若干很小的部分,然後分批次的下載,每個小塊下載完成之後,再合併到文件中;這樣即使下載中斷了,重新下載時,也可以通過文件的字節長度來判斷下載的起始點,然後重啓斷點續傳的過程,直到最後完成下載過程。
 

ftp實現斷點續傳

FTP協議也可以支持斷點續傳下載數據,基本原理是用get命令拿數據的時候在文件名後面加上要獲取的起始位置。FTP實現斷點續傳有三個條件:
①斷點續傳需要服務器的支持,FTP服務器必須能提供斷點續傳的功能。

 傳統的FTP Server是不支持斷點續傳的,因爲它不支持REST指令;目前包括IIS和大部分的FTP架設軟件都有了這個功能。用Serv-U架設FTP服務器就能支持斷點續傳。
 

②支持斷點續傳的下載工具軟件

③FTP服務器上的文件要與下載到硬盤中的文件名相同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章