图解HTTP-2-简单的HTTP协议

2. 简单的HTTP协议

2.1 HTTP协议用于客户端与服务端之间的连接

  • 客户端: 请求访问文本或图像等资源的一端
  • 服务端: 提供资源响应的一端

2.2 通过请求和响应的交换达成通信

请求必定由客户端发出, 而服务端回复响应

2.2.1 请求报文

图解HTTP-2-简单的HTTP协议

请求报文是由请求方法, 请求URI, 协议版本, 可选的首部字段和内容实体构成的.

2.2.2 响应报文

图解HTTP-2-简单的HTTP协议

响应报文基本上由协议版本, 状态码, 用以及时状态码的原因短语, 可选的响应首部字段以及实体主体构成.

2.3 HTTP是不保存状态的协议

HTTP是一种不保存状态, 即无状态协议. 协议对于发送过的请求或响应都不做持久化处理

图解HTTP-2-简单的HTTP协议

随着WEB的不断发展, 为了实现保持状态功能, 引入了Cookie技术.

2.4 请求URI定位资源

HTTP协议使用URI定位互联网上的资源.

图解HTTP-2-简单的HTTP协议

指定请求URI的方式有很多:

  • 完整的请求URI
  • 在首部资源Host中写明网络域名或IP地址
  • 可以用 *来代替请求URI, 例如查询HTTP服务端支持的HTTP方法种类: :
    • OPTIONS * HTTP/1.1

2.5 告知服务器意图的HTTP方法

2.5.1 GET: 获取资源

GET方法用来请求访问已被URI识别的资源. 指定的资源经服务端解析后返回响应内容.

  • 如果请求的资源是文本, 那就保持原样返回
  • 如果是像CGI(通用网关接口, 可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据)那样的程序, 则返回经过执行后的输出结果

图解HTTP-2-简单的HTTP协议

2.5.2 POST: 传输实体主体

虽然GET方法也可以用来传输实体的主体, 但是一般不用GET方法进行传输, 而是用POST方法.

post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?
刘典的回答 - 知乎https://www.zhihu.com/question/31640769/answer/52950543

图解HTTP-2-简单的HTTP协议
图解HTTP-2-简单的HTTP协议

2.5.3 PUT: 传输文件

PUT方法用来传输文件. 就像FTP协议上的文件上传一样, 要求在请求报文的主体中包含文件内容, 然后保存到请求URI指定的位置.

但是由于PUT不带验证机制,任何人都可以上传文件。这样就产生了安全问题,所以一般的网站不用这个方法,除非可以配合Web应用的验证机制(spring security)或架构设计采用REST标准的同类web网站,就可能会开放使用PUT方法。

图解HTTP-2-简单的HTTP协议

什么是REST标准?

  • REST(Representational State Transfer)描述了一个架构样式的网络系统,比如 web 应用程序。REST并没有一个明确的标准,而更像是一种设计的风格。
  • REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。
  • REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
  • 资源是由URI来指定。对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
  • 通过操作资源的表现形式来操作资源。
  • 资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。

POST和PUT的区别?

2.5.4 DELETE: 删除文件

DELETE是用来删除文件, 与PUT相反的方法. DELETE方法按请求URI删除指定的资源.

DELETE同样不带有验证机制, 所以一般的网站不用这个方法, 除非可以配合Web应用的验证机制(spring security)或架构设计采用REST标准的同类web网站, 就可能会开放使用DELETE方法.

图解HTTP-2-简单的HTTP协议
图解HTTP-2-简单的HTTP协议

2.5.5 HEAD: 获取首部资源

HEAD方法用于确认URI的有效性及资源更新时间等, 相当于不返回报文主体部分的GET方法.

图解HTTP-2-简单的HTTP协议

2.5.6 OPTIONS: 询问支持的方法

OPTIONS方法用来查询针对请求URI指定资源支持的方法

图解HTTP-2-简单的HTTP协议

2.5.7 TRACE: 追踪路径

TRACE方法是让Web服务器将之前的请求通信环回给客户端的方法.

客户端可以通过TRACE方法查询发送出去的请求是怎样被加工 / 篡改的. 因为,请求想要连接到源目标服务器可能会通过代理中转, TRACE方法就是用来确认链接过程中发生的一系列操作.

但是, TRACE方法本来就不怎么常用, 再加上它容易引发XST攻击, 通常就更不会用到了.

图解HTTP-2-简单的HTTP协议

2.5.8 CONNECT: 要求用隧道协议连接代理

CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要是用SSL和TLS协议把通信内容加密后经网络隧道传输。

图解HTTP-2-简单的HTTP协议

2.6 持久连接节省通信量

2.6.0 原始的HTTP版本

一次TCP连接

图解HTTP-2-简单的HTTP协议

当包含大量图片资源时, 会产生大量的通信开销

图解HTTP-2-简单的HTTP协议

2.6.1 持久连接

图解HTTP-2-简单的HTTP协议

2.6.2 管线化

图解HTTP-2-简单的HTTP协议

2.7 使用Cookie的状态管理

相关阅读