《图解HTTP》-第二章-简单的HTTP协议

262 阅读4分钟

每天做个总结吧,坚持就是胜利!

    /**
        @date 2021-06-25
        @description 《图解HTTP》-第二章-简单的HTTP协议
    */

壹(以下基于HTTP/1.1)

  1. HTTP用于客户端与服务器端的通信,请求访问文本或图像等资源的一方称为客户端,提供资源响应的称为服务器端,应用HTTP协议通信的过程中,必定有一个客户端和一个服务器端
  2. HTTP通过请求和响应的交换达成通信,客户端先发送请求,服务器端才能响应请求并返回相应资源
  3. 请求报文由请求方法请求URI,协议版本,可选的请求首部字段和实体内容组成

HTTP请求结构.jpg 4. 响应报文由协议版本,状态码,用以解释状态码的原因字段,可选的响应首部字段和实体主体构成

HTTP响应报文结构.jpeg 5. HTTP是无状态协议,HTTP自身不会对请求和响应之前的通信状态进行保存,使用HTTP协议的时候,每次有新的请求,就会有新的响应产生,这是为了更快的处理大量事务,确保协议的可伸缩性,故意设计得如此简单;为了实现保持状态的功能,引入了Cookie 6. HTTP使用URI定位网络资源,所以请求访问资源发送请求时需要加上URI作为请求报文中的请求URI 7. 告知服务器意图的HTTP方法

a. GET:用于请求访问已被URI定位到的资源,相应的资源经过服务器的处理后返回响应内容
b. POST:用来传输实体的主体(GET方法也能传输实体主体,但是一般使用POST,因为安全性以及请求的限制问题)
c. PUT:用于传输文件,但是HTTP/1.1的PUT方法不带验证机制,所以存在安全性问题,一般在配合Web应用程序的验证机制或采用REST标准的同类网站,才使用PUT
d. HEAD:与GET方法一样,获取资源,但是不会返回报文主体部分,只返回响应首部字段,用于确认URI的有效性和资源更新日期等
e. DELETE:删除文件,同PUT一样,HTTP/1.1DELETE方法不带验证机制
f. OPTIONS:用于查询针对请求URI指定的资源支持的方法
g. TRACE:让服务器端将之前的请求通信环回给客户端的方法
h. CONNECTCONNECT要求在于代理服务器进行通信时建立隧道,实现用隧道协议进行通信,主要是使用SSL(Secure Sockets Layer-安全套接层)和TLS(Transport Layer Security-传输层安全)将通信内容加密后经网络隧道传输
  1. 在向请求URI指定的资源发送请求报文时,需要使用以上方法命令,作用在于可以指定请求的资源按期望产生某种行为

HTTP方法.jpg 9. 持久连接及管线化

持久连接

在HTTP最初的版本中,每次进行HTTP通信都会断开一次TCP连接,在请求资源较多的情况下,这样是很消耗性能的
所以HTTP/1.1及部分HTTP/1.0提出了持久连接的方法,只要任意一端没有明确提出断开连接,则保持TCP连接状态
持久连接减少了TCP的重复断开与连接,减少了额外开销,使得页面显示速度更快
HTTP/1.1中所有连接默认都是持久连接

持久连接.jpg 管线化

以前需要等待上一次请求完成才能发送下一个请求,管线化之后可以不用等待上一个请求响应直接发送下一个请求

管线化.jpg 10. 使用Cookie进行状态管理

HTTP是无状态的协议,好处在于不需要保存状态,可以减少服务器内存及CPU消耗,但是再需要保存状态的场景下,就必须每次在请求报文中添加额外参数管理状态
所以引入Cookie,通过在请求和响应报文中写入Cookie来管理状态
客户端会根据服务器返回的响应报文首部字段中的Set-Cookie去保存Cookie,而且在之后的每一次对该服务器发送请求时自动在请求报文中加入Cookie
服务器在接收到客户端发送来的Cookie后,会检查是从哪个客户端发送来的,然后比对服务器上的记录,得到之前的状态信息