图解HTTP第二章

简单的 HTTP 协议

1》HTTP 协议用于客户端和服务器端之间的通信

HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端

 

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

 

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

 

 

响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

 

PS:区分首部字段跟主体(内容实体),是通过空行来分隔开来的(请求跟响应都是这样来区分的)

 

3》HTTP 是不保存状态的协议(即无状态)

 HTTP 协议自身不对请求和响应之间的通信状态进行保存。也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理。优点:减少服务器的 CPU 及内存资源的消耗

 

 

使用 Cookie 的状态管理,解决HTTP这个无状态缺陷

Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。

服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

Cookie 交互的情景如下图:

 

 

 

 HTTP 请求报文和响应报文的内容如下:

 

4》求 URI 定位资源

 

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

 

 5》告知服务器意图的 HTTP 方法(HTTP/1.1 中可使用的方法)

GET :获取资源

GET 方法用来请求访问已被 URI 识别的资源

POST:传输实体主体

虽然用 GET 方法也可以传输实体的主体,但一般不用 GET 方法进行传输,而是用 POST 方法。虽说 POST 的功能与 GET 很相似,但POST 的主要目的并不是获取响应的主体内容

 PUT:传输文件

像 FTP 协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置,但是,鉴于 HTTP/1.1 的 PUT 方法自身不带验证机制,任何人都可以上传文件 , 存在安全性问题,因此一般的 Web 网站不使用该方法

HEAD:获得报文首部

HEAD 方法和 GET 方法一样,只是不返回报文主体部分。用于确认URI 的有效性及资源更新的日期时间等。

DELETE:删除文件

DELETE 方法用来删除文件,是与 PUT 相反的方法。DELETE 方法按请求 URI 删除指定的资源。HTTP/1.1 的 DELETE 方法本身和 PUT 方法一样不带验证机制,所以一般的 Web 网站也不使用 DELETE 方法

OPTIONS:询问支持的方法

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

 

 

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

CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。主要使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容

加 密后经网络隧道传输。

 

6》使用方法下达命令

向请求 URI 指定的资源发送请求报文时,采用称为方法的命令

 

 

 7》持久连接节省通信量

HTTP 协议的初始版本中(HTTP0.9和HTTP1.0),每进行一次 HTTP 通信就要断开一次 TCP连接。

 

 实现持久连接?

为解决上述 TCP 连接的问题,HTTP/1.1 想出了持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或HTTP connection reuse)的方法。

持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。在 HTTP/1.1 中,所有的连接默认都是持久连接

持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载,Web 页面的显示速度也就相应提高了

 

7》管线化

持久连接使得多数请求以管线化(pipelining)方式发送成为可能。从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。线化技术则比持久连接还要快!

 

posted on 2018-08-03 16:44  福气满满好运连连  阅读(132)  评论(0编辑  收藏  举报