斷點續傳的理解能夠分爲兩部分:一部分是斷點,一部分是續傳。斷點的由來是在下載過程當中,將一個下載文件分紅了多個部分,同時進行多個部分一塊兒 的下載,當某個時間點,任務被暫停了,此時下載暫停的位置就是斷點了。續傳就是當一個未完成的下載任務再次開始時,會從上次的斷點繼續傳送。數據庫
使用多線程斷點續傳下載的時候,將下載或上傳任務(一個文件或一個壓縮包)人爲的劃分爲幾個部分,每個部分採用一個線程進行上傳或下載,多個線程併發能夠佔用服務器端更多資源,從而加快下載速度。瀏覽器
在下載(或上傳)過程當中,若是網絡故障、電量不足等緣由致使下載中斷,這就須要使用到斷點續傳功能。下次啓動時,能夠從記錄位置(已經下載的部分)開始,繼續下載之後未下載的部分,避免重複部分的下載。斷點續傳實質就是能記錄上一次已下載完成的位置。服務器
斷點續傳的過程網絡
①斷點續傳須要在下載過程當中記錄每條線程的下載進度;多線程
②每次下載開始以前先讀取數據庫,查詢是否有未完成的記錄,有就繼續下載,沒有則建立新記錄插入數據庫;併發
③在每次向文件中寫入數據以後,在數據庫中更新下載進度;工具
④下載完成以後刪除數據庫中下載記錄。線程
斷點續傳在HTTP請求上和通常的下載有所不一樣,客戶端瀏覽器傳給Web服務器的時候要多加一條信息——從哪裏開始(HTTP請求變量)。要實現HTTP斷點續傳,Web服務器必須支持HTTP/1.1(相對於HTTP/1.0老版本)。資源
HTTP請求是有一個Header的,裏面有個Range屬性是定義下載區域的,它接收的值是一個區間範圍,比 如:Range:bytes=0-10000。這樣咱們就能夠按照必定的規則,將一個大文件拆分爲若干很小的部分,而後分批次的下載,每一個小塊下載完成之 後,再合併到文件中;這樣即便下載中斷了,從新下載時,也能夠經過文件的字節長度來判斷下載的起始點,而後重啓斷點續傳的過程,直到最後完成下載過程。get
FTP實現斷點續傳
FTP協議也能夠支持斷點續傳下載數據,基本原理是用get命令拿數據的時候在文件名後面加上要獲取的起始位置。FTP實現斷點續傳有三個條件:
①斷點續傳須要服務器的支持,FTP服務器必須能提供斷點續傳的功能。
傳統的FTP Server是不支持斷點續傳的,由於它不支持REST指令;目前包括IIS和大部分的FTP架設軟件都有了這個功能。用Serv-U架設FTP服務器就能支持斷點續傳。
②支持斷點續傳的下載工具軟件
QQ旋風、迅雷、影音傳送帶等大多下載軟件都支持斷點續傳;IE瀏覽器5.0之前的版本默認的自帶下載方式不支持斷點續傳。在手機上,UC瀏覽器支持斷點續傳,可以自動存儲已下載的部分,從新打開以後能夠繼續在已下載部分的基礎上繼續下載。
③FTP服務器上的文件要與下載到硬盤中的文件名相同。
在使用IE下載文件時,遇到網絡中斷,不須要從新啓動機器,也可實現斷點續傳。前提是,在恢復下載、開始斷點續傳並提示再次保存文件時,要使用和第一次下載時相同的路徑和文件名。