Mar 02, 2022
网络知识学习笔记-HTTPS
HTTP
HTTP协议(HyperText Transfer Protocol)全称是超文本传输协议,是属于应用层的协议。
版本及差异
到目前为止,主要有三个版本:
1.0:第一个在通讯中指定了版本号的版本
- 比起0.9版本仅支持GET请求方式新增了POST,DELETE,PUT,HEAD等方式;
- 增添了请求头和响应头的概念,在通信中指定了 HTTP 协议版本号,以及其他的一些元信息 (比如: 状态码、权限、缓存、内容编码);
- 扩充了传输内容格式,图片、音视频资源、二进制等都可以进行传输;
1.1:默认采用持续连接(Connection: keep-alive),能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。
HTTP/1.1相较于HTTP/1.0协议的区别主要体现在:
- 缓存处理
- 带宽优化及网络连接的使用
- 错误通知的管理
- 消息在网络中的发送
- 互联网地址的维护
- 安全性及完整性
- 断点传输
2.0:
- 二进制分帧:HTTP 1.x 的解析是基于文本,HTTP 2之后将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码,提高传输效率;
- 多路复用:在共享TCP链接的基础上同时发送请求和响应,基于二进制分帧,在同一域名下所有访问都是从同一个tcp连接中走,http消息被分解为独立的帧,乱序发送,服务端根据标识符和首部将消息重新组装起来;
- 头部压缩:由于 HTTP 是无状态的,每一个请求都需要头部信息标识这次请求相关信息,所以会造成传输很多重复的信息,当请求数量增大的时候,消耗的资源就会慢慢积累上去。所以 HTTP 2 可以维护一个头部信息字典,差量进行更新头信息,减少头部信息传输占用的资源;
组成格式
请求报文
其组成格式如上图,在请求行中,首先是方法,这里对应的就是GET、POST等,其次空格隔开,然后是请求的地址,对应的是服务端的文件路径或者路由,然后是HTTP的协议版本,最后是换行符。
接下来的部分是HEADER的内容,是一个一个的键值对;
然后是消息体,这里的内容会使用HEADER中定义的Content-Type来描述,还会根据方法来决定是否使用消息体,如GET方法一般不会使用到消息体
响应报文
响应报文的格式如上图,从整体的格式上和请求报文是差不多的,从上至下依次是状态行、HEADER和消息体。
状态行中主要的信息是包含了对状态的描述,如状态码和状态描述,并带有HTTP版本,响应的HEADER和消息体与请求报文没有太大的区别。
请求方法
HEADER说明
HEADER里的数据被称为**元数据(用于描述数据的数据)**,主要的一些HEADER说明
Field Name | 说明 |
---|---|
Content-Type | 内容的格式, |
状态码
状态码对应的一系列的状态响应,可以根据状态码大致判断是什么范围的问题
- 1XX:1开头的状态码主要是消息响应,比如服务端收到了客户端的请求,返回102告诉客户端正在处理;
- 2XX:2开头的响应代表成功,最常见的是200,服务端响应成功了;
- 3XX:重定向响应,如301代表访问的URL已经修改,需要重定向到其他的URL去;
- 4XX:客户端错误,这个也比较常见,一般指的是客户端发出的请求存在服务端解析错误,比如请求一个不存在的地址,就是404;
- 5XX:服务端错误,返回这个代表服务端出现了问题,如500,代表服务端接受到请求后,服务端因为某种原因无法处理该请求,但是请求是合法的,可能是服务端内部出现了连接错误的问题。
更多细致的状态码查看HTTP状态码