4·8HTTP内容协商机制|4·9HTTP的断电续传与多线程下载

内容协商机制

  指定客户端和服务端就响应的资源内容进行交涉,然后提供给客户端最为合适的资源。

    内容协商会以响应资源的语言,字符集,编码方式等作为判断的基准。

  客户端驱动

    客户端发起请求,服务器发送可选项列表,客户端做出选择后在发送第二次请求

  服务器驱动

    服务器检测客户端的请求头部集并决定提供那个版本的页面

  透明协商

    某个中间设备(通常是缓存代理)代表客户端进行协商

服务器驱动内容协商-请求首部集

  Accept:告知服务器发送何种媒体类型

  Accept-Language:告知服务器发送何种语言  

  Accept-Charset:告知服务器发送何种字符集

  Accept-Encoding:告知服务器采用何种编码

断电续传和多线程下载

  端点续传?多线程下载?

    HTTP是通过在Header里面两个参数实现的,客户端发送请求时对应的时Range,服务端响应时对应的是Content-Range。

  Range

    用于请求头中,指定第一个字节的位置和最后一个字节的位置

    一般格式:

      Range:(unit = first  byte  pos)- 【last byte pos】

    Range

      Range:bytes=0-499

      Range:bytes=500-999

      Range:bytes= -500

      Range:bytes=500-

      Rangebytes=500-600,601-999

  Content-Range

    用于响应头中,在发出带 Range的请求后,服务器会在Content- Range头部返回当前接受的范围和文件总大小。

    一般格式:

      Content-Range:bytes(unit first byte pos)-【last byte pos】/【entity legth】

      Content-Range

      而在响应完后,返回的响应头内容也不同:

      Http/1,1 200 Ok(不使用端点续传方式)

      Http/1.1 206 Partial Contenet(使用端点续传方式)

  端点续传的过程

    客户端下载一个1024K的文件,已经下载了其中512K。

    网络中断,客户端请求续传,因此需要在HTTP头中申明本次需要续传的片段:  Range: bytes=512000这个头通知服务端从文件的512K位置开始传输文件

    服务端收到断点续传请求,从文件的512K位置开始传输,并且在HTTP头中增加:

      Content-range: bytes 512000-/1024000

      并且此时服务端返回的HTTP状态码应该是206,而不是200。

posted @ 2023-04-05 10:23  ja不会va  阅读(11)  评论(0编辑  收藏  举报