HTTP协议中的Range和Content-Range
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HTTP协议中的Range和Content-Range
“琢磨HTTP协议的每⼀个细节。
”
HTTP协议博⼤精深,每⼀个细节都应细细体会。
否则,在协议还原的过程中,你会遇到各种问题。
今天,本⽂中将对HTTP协议的Range和Content-Range进⾏分析。
Range和Content-Range是 HTTP/1.1中新增的HTTP头字段。
它⽤于从服务器中获取⼀个⼤⽂件的某⼀部分内容,这极⼤地提⾼了HTTP的运⾏效率,很适合下载软件进⾏多线程下载和断点续传。
⼀个典型使⽤Range字段的HTTP会话如下:
在请求头部,使⽤“Range”字段描述了需要请求的内容起⽌:
Range: bytes=0-204799
可以看出,对数据内容,它是以字节来计数的,并且其字节的序号是以0开始的。
在响应头部,使⽤“Content-Range”字段描述了返回的数据内容的起⽌位置以及整个需要请求的内容的长度:
Content-Range: bytes 0-169704/169705
在字段中,以“/”为分隔,前半部分描述的是当前传输的内容的起⽌,后半部分为整个需要请求的内容的长度。
本⽂的例⼦中,整个需要请求内容长度为169705字节,因此返回的数据要⽐请求头部描述的数据要少。
对含“Range”字段的HTTP数据,其响应码并⾮通常的200等,⽽是206和416。
206的含义是“Partial Content”,即服务器发回的是请求的那⼀部分内容。
416的含义是“Range Not Satisfiable”,表明客户端请求的数据范围不合法。
在协议还原中,对HTTP协议本⾝⽽⾔,处理Range并不复杂。
复杂的是如果需要还原的是⼀个⽂件,会涉及到多个HTTP会话间的同步和协作,这需要⼤家谨慎处理。
对HTTP的还原,如果有⼀些⼼得体会,请联系我分享哦。
长按进⾏关注。