第二章:简单的HTTP协议

2.1 HTTP协议用于客户端和服务器端的通信

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

  • 客户端发送给服务器端的请求报文
  • 请求方法
  • 请求URI
  • 协议版本
  • 可选的请求首部字段
  • 内容实体
  • 服务器端返回客户端的响应报文
  • 协议版本
  • 状态码(200,500,301,404)
  • 状态码解析语句
  • 可选的响应首部字段
  • 响应主体

2.3 HTTP是无状态协议

  • HTTP协议自身不对请求和响应之间的通信状态进行保存
  • 优点:
更快的处理大量事务,确保协议的可伸缩性。协议本身并不保留之前一切的请求和响应报文信息
  • 缺点:
无状态协议导致在很多业务场景下不能友好支持业务处理,登录状态、聊天室通信、直播平台等
  • 解决方法:
  • HTTP1.1虽然还是无状态协议,但为了保持状态引入了cookie
  • 第三方异步通信框架,支持TCP长连接,如PHP的Swoole,Java的netty,底层C,C++等方式

2.4 请求URI定位资源

  • HTTP协议使用URI定位互联网上的资源

2.5 告知服务器意图的HTTP方法

  • HTTP1.1 中可使用的方法
  • GET 获取资源
  • POST 传输实体主体
  • PUT 传输文本,类似FTP文本上传
  • HEAD 获取报文头部信息
  • DELETE 删除文件
  • OPTIONS 询问支持的方法
  • TRACE 追踪路径

2.6 持久连接 节省通讯量

  • 持久连接特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态
  • 在HTTP1.1中,所有的连接默认都是持久连接
  • 优点:
  • 减少了TCP连接的重复建立和断开造成的额外开销,减轻了服务器的负载
  • 可实现异步通信

2.7 使用cookie的状态管理

  • 概念:cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态
  • 步骤:
  • cookie会根据从服务器端发送的响应报文的Set-Cookie首部字段信息,通知客户端保存cookie。
  • 当下次客户端再次发送请求,自动在请求报文中添加cookie
  • 服务器端接收cookie值,检查从哪个客户端发送的请求,并对比服务器端session信息,最后得到之前状态信息

苏香门第
22 声望3 粉丝

个人网站:[链接]