《图解HTTP》第三章读书笔记——HTTP请求和响应的运作机制

HTTP报文

报文结构

HTTP 报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常,并不一定要有报文主体。
《图解HTTP》第三章读书笔记——HTTP请求和响应的运作机制_第1张图片

编码提升传输效率

编码格式

在传输过程中通过编码提升传输速率

分块传输编码

服务器端:分块传输编码会将实体主体分成多个部分(块)。每一块都会用十六进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标记。
客户端:使用分块传输编码的实体主体会由接收的客户端负责解码,恢复到编码前的实体主体。
《图解HTTP》第三章读书笔记——HTTP请求和响应的运作机制_第2张图片

多部分对象集合

获取部分内容的范围请求

下载一个大尺寸文件时,如果下载过程中遇到网络中断的情况,那就必须重头开始。为了解决上述问题,需要一种可恢复的机制。即能从之前下载中断处恢复下载。为了实现这种机制,就需要指定下载的实体范围。

执行范围请求时,会用到首部字段Range来指定资源的byte范围。byte指定形式如下:

Range: bytes = 5001-10000  //5001~10 000 字
Range: bytes = 5001-  //从 5001 字节之后全部的
Range: bytes = -3000,5000-7000  //从一开始到 3000 字节和 5000~7000 字节的多重范围

内容协商

客户端和服务器端就响应内容进行交涉,然后提供给客户端最为适合的资源。内容协商包括相应资源的语言、编码方式、字符集等。
举个例子:同一个Web网站可能存在着多份相同内容但语言不同的页面;当浏览器默认语言为中文/英文时,访问相同的URI页面时,则显示对应的中文/英文版web页面。

与内容协商相关的首部字段

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Content-Language

内容协商技术

  • 服务器驱动协商

服务器端以请求的首部字段为参考,在服务器端自动处理。

  • 客户端驱动协商

从浏览器显示的可选项中手动选择。

  • 透明协商

服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商。

你可能感兴趣的:(javahttp)