HTTP基础02--HTTP协议简介

时间:2021-03-25 05:01:53

客户端和服务器端:

  • 仅从一条通信路线来说,服务器端和客户端是确定的;
  • HTTP协议规定,通信一定是先从客户端开始建立,服务器端在没有接受到请求之前不会发送响应;

不保存状态:

  • HTTP是无状态协议,对发送过的请求和响应都不做持久化处理,即不会根据之前的请求和响应的状态进行本次请求处理;
  • 这是为了更快地处理大量事务;
  • 使用cookie技术可以进行弥补;

请求/响应报文:

  • 请求报文     //请求方法、请求URL、协议版本、可选请求首部字、内容实体
GET    /index.html    HTTP/1.1
Host: hackr.jp

------------------------------------
POST  /form/enrty   HTTP/1.1

Host: hackr.jp
Connection: keep-alive
Connection-Type: application/x-www-form-urlencoded
Content-Length: 16

name=ueno&age=37
  • 响应报文   //协议版本、状态码、解释状态码的原因短语、可选的响应首部字段、响应主体
HTTP/1.1    200   OK 

Date: Tie, 10 Jul 2012 06:50:15 GMT
Content-Length: 362
Content-Type: text/html

<html>
......................
  • 请求方法:HTTP/1.1
    • GET:用来请求访问已被URI识别的资源;指定的资源经服务器端解析后返回响应内容;即:
      • 请求文本,直接返回;
      • 请求CGI(通过网关接口)那样的程序,则返回执行后输出的结果;
    • POST:用来传输实体的主体;
    • HEAD:和GET方法一样,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间;
    • OPTIONS:用来查询针对请求URI指定资源支持的方法;
    • PUT:传输文件,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置;由于HTTP/1.1的PUT方法自身不带验证机制,因此一般不采用;
    • DELETE:删除文件,与PUT方法相反;但也不不带验证机制,一般不采用;
    • TRACE:让web服务器端将之前的请求通信返回给客户端;可以用来查询发送出去的请求是怎样被加工修改的;但不常用且易引发XST(跨站追击);
    • CONNECT:要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信;

持久连接:早期的HTTP协议中每进行一次通信就断开TCP连接;目前的HTTP协议已经实现了持久化连接;只要任意一端没有明确提出断开连接,则保持TCP连接状态;

管线化:从前发送请求后需等待并收到响应才能发送下一个请求;持久化连接实现之后,可以实现管线化技术,即同时并行发送多个请求;

Cookie的状态管理://Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态;

  • 客户端:cookie会根据从服务器端发送的响应报文内觉得Set-Cookie的首部字段信息通知客户端保存Cookie;当下次客户端往服务器端发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去;
  • 服务器端:发现客户端发送过来的Cookie之后,会去检查究竟是从哪一个客户端发出的连接请求,然后对比服务器上的记录,最后得到之前的状态信息;