HTTP协议下的消息分段 - Mr.Ding

HTTP协议下的消息分段

天天记事 1141 / 2020-04-23 15:46:16

HTTP协议下的消息分段,主要用涉及到“三头一码”。

三头:

1. Accept-Ranges

2. Range

3. Content-Range

一码:

HTTP消息代码:206

【流程注解】

1. 当用户(浏览器)请求网络HTTP资源时,服务器会给出响应,如果发现服务器响应头有如下内容,那说明服务器支持分段消息发送

Accept-Ranges: bytes

注:bytes,表示服务器可以按照字节(bytes)来分段发送数据,如果想做分段数据获取,那么客户端需以bytes发出请求。


2. 用户一旦发现有上述响应头时,根据场景需要就可以在HTTP请求头加入下面内容来请求部分内容

Range: bytes=0-

注:bytes=0-,表示客户端需要从头开始要全部数据,当然也可以要部分数据,关键点就在于等号(=)后面设置的值

Range: bytes=0-99,表示要前面100个字节,0和99是起始和结束的字节索引位置
Range: bytes=100-299,表示要索引位置从100到299的字节
Range: bytes=-100,表示要最后100个字节
Range: bytes=200-,表示从索引从200开始以后的全部数据
Range: bytes=0-99, -100,表示要开始100个字节和最后100个字节,中间的不要
Range: bytes=200-299,300-399,解释同上

3. 服务器收到有部分内容请求的消息头后,就在消息头里面加入下面内容告诉客户端,服务器支持并且是按照要求响应的

Content-Range: bytes 0-254/748
Content-Length: 255

注:服务器支持(或数据能满足)请求的数据范围,那么就会在响应的消息头,加入响应的标志内容,告诉客户端。上面的bytes 0-254/748,表示,服务器以bytes方式给了从索引位置从0到254的字节内容过来,总的内容有748个字节,当然,服务器还会在消息头增加一个Content-Length标志,进一步告诉客户端需要接收的bytes数。不过也可以通过 254 - 0 + 1 = 255 来运算获得。

注:现在的WEB服务器对静态资源一般都支持Range请求。



http