HTTP协议中的Range和Content-Range

 琢磨HTTP协议的每一个细节。


HTTP协议博大精深,每一个细节都应细细体会。


否则,在协议还原的过程中,你会遇到各种问题。


今天,本文中将对HTTP协议的Range和Content-Range进行分析。


Range和Content-Range是 HTTP/1.1中新增的HTTP头字段。它用于从服务器中获取一个大文件的某一部分内容,这极大地提高了HTTP的运行效率,很适合下载软件进行多线程下载和断点续传。


一个典型使用Range字段的HTTP会话如下:

640?wx_fmt=jpeg


在请求头部,使用“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的还原,如果有一些心得体会,请联系我分享哦。

640?wx_fmt=jpeg

长按进行关注。





原文地址:https://www.cnblogs.com/protosec/p/11673325.html