HTTP协议——超文本传送协议

HTTP的URL

一般格式:
http://<主机>:<端口>/<路径>,例如:https://www.baidu.com/
如果路径后缀有htm或者html表示这是一个用超文本标记语言HTML写出的文件。

HTTP的操作过程

超文本传送协议HTTP规定在HTTP客户和HTTP服务器之间的每次交互,都由一个ASCII码串构成的请求和一个类似的通用互联网扩充,即“类MIME(MIME-like)”的响应组成。HTTP报文通常都使用TCP连接传送。

HTTP/1.0版本中每一次请求一个文档都需要至少两倍的传送和返回时间,如下图所示,请求一个文档的时间是两倍往返时间加上文档传输的时间,HTTP请求报文在TCP连接的第三次握手的报文数据中。


HTTP/1.0版本请求流程——截图自《计算机网络(第7版)》

HTTP/1.1克服了HTTP/1.0两倍往返时间的缺点,使用持续连接。就是服务器发送响应后仍然在一段时间内保持这条连接,使同一个客户端和该服务器可以继续在这条连接上进行通信,传送后续的HTTP请求和相应报文。

HTTP/1.1持续连接有两种工作方式:

  1. 非流水线方式:客户端在收到前一个响应后才能发出下一个请求。因为在客户端发送完请求后等待,其TCP连接处于空闲状态,一定程度上浪费了服务器资源。
  2. 流水线方式:客户端收到HTTP响应报文之前就能够接着发送新的请求报文。这样服务器就可以连续发响应报文,使得服务器空闲时间减少,提高效率。

HTTP代理服务器

代理服务器又称为Web高速缓存,把最近的一些请求和响应暂时存储在本地磁盘中。当新的请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网上访问资源。

HTTP报文结构

HTTP报文分为两类,请求报文(从客户向服务器发送请求报文)和响应报文(从服务器到客户端的回答),两类报文都包括开始行、首部行和实体主体。这两种报文格式的区别就是开始行的不同。每一个首部行中都有首部字段名和它的值。实体主体在请求报文中一般不使用,响应报文中也可能没有这个字段。每一个字段都是一些ASCII码串。如下图,CR代表“回车”,LF代表“换行”。

HTTP报文结构——截图自《计算机网络(第7版)

HTTP请求报文

请求行的“方法”就是对所请求对象进行的操作,实际上就是一些命令,请求报文的类型是由它所采用的“方法”决定的。“方法”包括:

HTTP请求报文的一些方法——截图自《计算机网络(第7版)》

请求行的“URL”就是将要访问的网络地址,“版本”是HTTP的版本,例如HTTP/1.1。

HTTP响应报文

状态行的“版本”也是HTTP的版本,“状态码”都是三位数字的,“短语”就是携带的说明信息。例如比较典型的返回,如HTTP/1.1 404 Not Found。
状态码分为五大类,如下图:

状态码的五大类——截图自《计算机网络(第7版)》

Cookie

RFC 6265 规定站点可以使用Cookie来跟踪用户。Cookie只是一个小小的文本文件,用于跟踪和记录用户信息,这样服务器端上可以根据Cookie存放用户的信息。

你可能感兴趣的:(HTTP协议——超文本传送协议)