http 浅谈

172 阅读2分钟

http

  • 是什么?

    • 网络通信协议
      • Hyper Text Transfer Protocol --> 超文本传输协议
      • 可扩展
        • 可扩展性表现在:传输内容,从起初的文本,到布局描述,图片,视频,脚本等等
        • 另一层面的可扩展性:链接,可以是普通连接,也可以是加密连接
  • 作用:

    • 用于 Web 浏览器与 Web 服务器之间的通信
  • 特点:

    • 典型的 客户端 - 服务端 模型

      • client - server 协议 <客户端 - 服务端>
      • 客户端打开一个链接以发出请求,然后等待直到收到服务器端响应
    • 无状态协议

      • 无状态不是指 服务端响应的状态码,是两次请求之间不保留任何数据
      • 服务器不会在两个请求之间保留任何数据<状态>

http组件

  • client - proxy - caches - server
  • 客户端
    • user-agent 就是任何能够为用户发起行为的工具,主要是指浏览器
    • 发起请求 request
  • Web服务端
    • 响应请求 response
  • 代理 Proxies
    • 缓存 <公开的,私有的>
    • 过滤 <反病毒扫描, 家长控制>
    • 负载均衡 <让多个服务器服务不同请求>
    • 认证 <对不同资源进行权限管理>
    • 日志记录 <允许存储历史信息>

http的基本性质

  • 简单的
    • 报文易懂,允许简单测试
  • 可扩展的
    • http 1.0 中出现的 http headers 可设置,服务端和客户端 headers 一致,就可以扩展新功能
  • 无状态,有会话
    • 两次请求是无关联的,可以通过 http 头部扩展,把上一次请求信息以 cookie 添加到 http header 中,创建一个有状态的会话
  • 每次 http 请求都会建立 TCP 连接<因此耗时,占带宽,浪费资源>
    • http 1.1 可以设置 connection 把连接改为长连接,改变连接方式
    • http 2.0 通过复用连接消息,改连接为暖连接

http 能控制什么

可以被HTTP控制的常见特性

  • 缓存
    • 可以通过 http 设置文档的缓存方式
    • 服务端可以告知客户端缓存的文件,缓存的时长
    • 客户端也可以命令中间代理层缓存的文档
  • 认证
    • 可以设置页面的访问权限
    • 通过 http cookies 设置指定的会话
  • 开放同源限制
  • 代理和隧道
  • 会话

http 流

前后端发起通讯<信息交互>的流程

  • 打开 < 复用 > 一个TCP连接
  • 发送一个 http 报文
    • http 2 之前 ,报文是语义可读的
    • http 2 报文被压缩,不能直接读取,但原理相同
  • 读取服务端返回的报文信息
  • 关闭连接,或者为后续服务重用连接

http 报文

不管是请求,还是响应,格式几乎一样

请求:

  • method ----> GET
  • path ----> /
  • vsersion of the protocol ----> HTTP/1.1 <现在大部分 http 版本,都是 1.1>
  • Headers ----> 其余的都是 Headers,请求头包裹的信息

响应:

  • vsersion of the protocol ----> HTTP/1.1
  • status code ----> 一般成功的请求都是 200
  • status message ----> OK
  • Headers ----> 其余的都是 Headers,响应头包裹的信息