Bootstrap

HTTP协议概述

声明:本人的所有博客皆为个人笔记,作为个人知识索引使用,因此在叙述上存在逻辑不通顺、跨度大等问题,希望理解。分享出来仅供大家学习翻阅,若有错误希望指出,感谢!

HTTP概述

客户端与服务器通信

应用HTTP协议时必须是一端担任客户端角色,另一端担任服务器角色

实际情况下,两台计算机作为客户端与服务器的角色有可能会互换,HTTP协议能够明确区分哪端是客户端,哪端是服务器

HTTP规定,请求从客户端发出,服务器端响应该请求并返回

请求与响应报文的构成

请求报文

响应报文

在这里插入图片描述

HTTP是不保存状态的协议

HTTP是无状态协议,不对请求和响应之间的通信状态进行保存

既,HTTP不具备保存之前发送过的请求和响应的功能

HTTP/1.1虽然是无状态协议,但为通过引入cookie实现了状态保存

请求URI定位资源

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

  1. URI为完整的请求URI
  2. 在首部字段Host中写明网络域名或IP地址

如果不是访问特定资源而是对服务器本身发起的请求,可以用一个*来代替请求URI

告知服务器意图的HTTP方法

GET:获取资源

  • GET方法用来请求已被URI识别的资源,指定的资源经服务器解析后返回响应内容
  • 如果请求的是文本,就原样返回;如果是像CGI那样的程序,则返回经过执行后的输出结果

POST:传输实体主体

  • 虽然GET方法也能够传输实体主体,但一般不用GET方法进行传输
  • POST的主要目的不是获取响应的主体内容

PUT:传输文件

  • PUT方法用来传输文件,要求在请求报文的主体中包含文件内容,然后保存到请求URI的指定位置
  • 由于HTTP/1.1 自身没有验证机制,任何人都可以上传文件,存在严重安全问题,因此一般web服务器不支持该方法

HEAD:获得报文首部

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

DELETE:删除文件

  • 与PUT相反的方法,DELETE方法按请求URI删除指定的资源
  • 由于HTTP/1.1 自身没有验证机制,因此一般web服务器不支持该方法

OPTIONS:询问支持方法

  • OPTIONS方法用来查询针对请求URI指定的资源支持的方法(如GET、POST等)

TRACE:追踪路径

  • 发送请求时,在首部字段Max-Forwards中填入数值,每经过一个服务器就让该值-1,当数值减到0时停止继续传输,最后接收到请求的服务器返回状态吗200 OK 的响应
  • 客户端通过TRACE方法可以查询发送出去的请求是怎样被加工修改或篡改的
  • 该方法一般用不到

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

  • CONNECT方法要求在代理服务器通信时建立隧道,实现用隧道协议进行TCP通信,主要使用SSL(安全套接层)和TLS(传输层安全)协议将通信内容加密后经网络隧道传输

  • 格式如下:

    CONNECT 代理服务器名:端口号 HTTP版本
    

持久连接

HTTP/1.1实现了持久连接,也称HTTP keep-alive,在HTTP/1.1中所有链接默认持久连接

持久连接的特点是:只要任一端没有明确提出断开连接,则保持TCP连接

持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器负载

持久连接使管线化得以实现,客户端不用等待服务器响应就能连续发送请求

cookie

cookie技术通过在请求和响应报文中写入cookie信息来控制客户端状态

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

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