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

2. 简单的HTTP协议

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

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

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

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

2.2.1 请求报文

这里写图片描述

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

2.2.2 响应报文

这里写图片描述

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

2.3 HTTP是不保存状态的协议

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

这里写图片描述

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

2.4 请求URI定位资源

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

这里写图片描述

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

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

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

2.5.1 GET: 获取资源

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

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

这里写图片描述

2.5.2 POST: 传输实体主体

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

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

这里写图片描述
这里写图片描述

2.5.3 PUT: 传输文件

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

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

这里写图片描述

什么是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方法.

这里写图片描述
这里写图片描述

2.5.5 HEAD: 获取首部资源

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

这里写图片描述

2.5.6 OPTIONS: 询问支持的方法

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

这里写图片描述

2.5.7 TRACE: 追踪路径

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

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

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

这里写图片描述

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

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

这里写图片描述

2.6 持久连接节省通信量

2.6.0 原始的HTTP版本

一次TCP连接

这里写图片描述

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

这里写图片描述

2.6.1 持久连接

这里写图片描述

2.6.2 管线化

这里写图片描述

2.7 使用Cookie的状态管理

相关阅读

猜你喜欢

转载自blog.csdn.net/jingangxin666/article/details/80029860