网络基本功:http报文及TCP拥塞控制机制

Http报文HTTP请求报文由请求行、请求头部、空行和请求包体4个部分组成 , 如下图所示:

网络基本功:http报文及TCP拥塞控制机制

文章插图
 
1.1、通用报文
  • General: //通用报文
  • Request Method: GET
  • Status Code: 200 OK
  • Remote Address: 47.111.45.248:80
  • Referrer Policy: origin
1.2、请求报文
网络基本功:http报文及TCP拥塞控制机制

文章插图
 
  • Request Headers: //客户端请求头
  • Accept : image/webp,image/apng,image/*,*/*;q=0. //浏览器客户端告诉告诉服务端能接受什么样类型的数据
  • Accept-Encoding: gzip, deflate //浏览器客户端告诉服务器能接受什么编码格式 , 包括字符编码 , 压缩方式
  • Accept-Language: zh-CN,zh;q=0.9 //客户端告诉浏览器接受什么样的语言
  • Accept-Ranges: bytes //断点续传
  • ETag: "23411b8a827d31:0”. //304
  • Cache-Control : no-cache
  • Connection : keep-alive //客户端告诉服务端的连接方式: 长连接
  • X-UA-Compatible: IE=10
  • X-Frame-Options: SAMEORIGIN
  • Cookie: _ga=GA1.2.1796862747.1547952793; __gads=ID=60d16307ea494dae:T=1547952794:S=ALNI_MYsoIBtEfg7-PJNMTds68JgtxnQrw; UM_distinctid=168832d7c157de-0ad85a26ff65a-35617601-13c680-168832d7c168b3;
  • Host: www.cnblogs.com 。//要请求的主机及端口 目的地
  • Pragma: no-cache
  • Referer: http://www.cnblogs.com/ //客户端告诉浏览器这个请求是从哪里过来的 , 请求来源
  • User-Agent: Mozilla/5.0 (macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/73.0.3683.86 Safari/537.36 。//浏览器指定 , 告诉服务器 , 使用的浏览器的版本和名称自动发送
 
1.3、响应报文
网络基本功:http报文及TCP拥塞控制机制

文章插图
 
  • Response Headers: //服务器返回http头
  • HTTP/1.1 200 OK
  • Date: Tue, 16 Apr 2019 05:13:48 GMT //什么时候响应会浏览器
  • Content-Type : image/x-icon 。//响应的内容是什么类型 , 采用的是什么编码 ,  对应请求的accept设置内容
  • Content-Length : 1332 //服务端告诉浏览器相应实体的大小
  • Connection: keep-alive /close //服务端告诉浏览器连接的方式为长连接 ,  管道连接 , 异步响应http的请求 , http1.1 , 提高效率;
  • Cache-Control : max-age=120. //服务端告诉浏览器缓存的时间最长为120s
  • Last-Modified : Fri, 28 Jul 2017 09:18:56 GMT //服务器文本最后一次修改的时间. 304
ps:在实际情况中使用: response.setContentType("text/html;charset=UTF-8”); 来设置编码以解决中文的乱码问题 。
(0)、Connection: keep-alive /close 服务端告诉浏览器连接的方式为长连接 ,  管道连接 , 异步响应http的请求 , http1.1 , 提高效率;
(1)、MIME Type:是描述消息内容类型的因特网标准 ,  常见的数据几种类型
  • 文本文件:text/html,text/plain,text/css,application/xhtml+xml,application/xml
  • 图片文件:image/jpeg,image/gif,image/png.
  • 视频文件:video/mpeg,video/quicktime
我们可以通过两种方式来设置文件的渲染类型 , 
  • 第一种是 Accept-客户端
  • 第二种是 Content-Type-服务器
Accept : 表示 客户端希望接受的数据类型 , 即告诉服务器我需要什么媒体类型的数据 , 此时 服务器应该根据 Accept 请求头生产指定媒体类型的数据 。
Content-Type : 表示发送端发送的实体数据类型 , 比如我们应该写过类似的: resposne.setContentType(“application/json;charset=utf-8”)的代码 , 表示服务端返回的数据 格式是 json 。
如果 Accept 和 Content-Type 不一致 , 假如说 Accept 要接收的类型是 image/gif , 但是服务 端返回的数据是 text/html , 那么浏览器将会无法解析 。
(2) .Cache-Control 作用:
客户端浏览器用来判断是否需要用本地缓存 。默认值为private;常用值有private、no-cache、max-age、must-revalidate 。


推荐阅读