斷點續傳中斷點續傳是如何實現的?

斷點續傳主要原理是是HTTP1.1(RFC2616)中定義header中定義的Range和contentRange字段

Range
用於請求頭中,指定第一個字節的位置和最後一個字節的位置,一般格式:

Range:(unit=first byte pos)-[last byte pos] 

Content-Range
用於響應頭,指定整個實體中的一部分的插入位置,他也指示了整個實體的長度。在服務器向客戶返回一個部分響應,它必須描述響應覆蓋的範圍和整個實體長度。

可以通過使用HTTP報文首部字段Range實現範圍請求

對一份10000字節大小的資源,如果使用範圍請求,可只請求5001~10000字節內的資源。
執行範圍請求時,會用到HTTP首部字段Range來指定資源的byte範圍。形式如下:
5001~10000字節

Range:bytes=5001-10000

從5001字節之後全部的

Range:bytes=5001-

從1開始到3000字節和從5000開始到7000字節的多重範圍

Range:bytes=-3000,5000-7000

針對範圍請求,通過HTTP響應返回狀態碼爲206 Partial Content 的響應報文。另外,對於多重範圍的範圍請求,響應會在首部字段Content-Type標明multipart/byteranges後返回響應報文。
如果服務器無法響應範圍請求,則會返回狀態碼200 OK和完整的實體內容。
因此,在進行斷點續傳時,只需使用範圍請求,通過指定HTTP請求報文首部字段Range來請求尚未收到的資源。

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