博客
关于我
瞎掰HTTP
阅读量:314 次
发布时间:2019-03-03

本文共 1012 字,大约阅读时间需要 3 分钟。

瞎掰HTTP

简单聊聊HTTP历程

HTTP(HyperText Transfer Protocol)是一种应用层协议,定义了客户端和服务端之间的请求-响应方式。它最初并未有一个正式的版本号,后来被人为划分为HTTP 0.9用于区别其后续版本。

HTTP 0.9

HTTP 0.9的特点:

  • 请求方式为GET
  • 响应简陋,仅包含文本内容
  • 示例:
    GET /hello.html

    响应:

    你好,世界!

HTTP 1.0

1996年,HTTP 1.0诞生,引入了请求和响应头、内容类型(Content-Type),并支持非纯文本文件传输。其主要缺陷是每次请求都需新建TCP连接,导致效率低下。

HTTP 1.1

1997年,HTTP 1.1正式标准化,主要改进:

  • TCP连接复用
  • 管线化技术
  • 响应分块(Transfer-Encoding)
  • 服务器推送
  • Host头支持多域名配置
  • 内容协商

管线化技术:

  • 客户端可同时发送多个请求,但服务器需按顺序响应
  • 浏览器默认关闭管线化

响应分块:

  • 使用Content-Length传输整包数据
  • Transfer-Encoding: chunked实现分块传输
  • 服务器发送多个数据块,最后以大小为0的块结束

HTTP 2.0

HTTP 2.0基于二进制协议,实现了同一连接内的多路复用,解除了HTTP 1.x的队头阻塞:

  • 消除了文本协议的限制
  • 带来二进制消息头压缩
  • 服务器推送机制
  • 多路复用允许并行下载

HTTP 3.0

尚未正式应用,基于QUIC协议:

  • 运用UDP传输
  • 支持多路复用、0-RTT、TLS加密等

从HTTP到HTTPS

HTTPS通过TLS加密HTTP通信。其加密机制结合对称加密和非对称加密:

  • 对称加密用于内容加密,需共享密钥
  • 非对称加密用于密钥协商

非对称加密的局限性

  • 公钥加密安全,但私钥解密受限

对称加密的挑战

  • 密钥分发问题,难以管理大量密钥

HTTPS加密方案

  • 客户端请求服务端证书
  • 通过非对称加密协商对称密钥
  • 使用对称加密进行通信
  • CA机构的作用

    CA(证书颁发机构)解决中间人问题:

    • 提供可信公钥
    • 绑定身份信息签字
    • 防止中间人伪造

    中间人问题

    中间人伪造公钥:

    • 客户端获取伪造公钥
    • 内容传输不安全
    • CA机构验证解决问题

    参考

    HTTP的发展历程从0.9到3.0,经历了从简单到复杂的演变。HTTPS通过TLS加密实现安全通信,结合CA机构解决中间人威胁,确保传输安全。

    转载地址:http://flxm.baihongyu.com/

    你可能感兴趣的文章
    Podman核心技术详解
    查看>>
    pods 终端安装 第三方框架的一些命令
    查看>>
    Podzielno
    查看>>
    PoE、PoE+、PoE++ 三款交换机如何选择?一文带你了解
    查看>>
    PoE三种标准:标准 PoE、PoE+、PoE++,网络工程师必知!
    查看>>
    POI 的使用
    查看>>
    poi 读取单元格为null者空字符串
    查看>>
    poi-tl简介与文本/表格和图片渲染
    查看>>
    pointnet分割自己的点云数据_PointNet解析
    查看>>
    POI实现Excel导入Cannot get a text value from a numeric cell
    查看>>
    POI实现Excel导入时提示NoSuchMethodError: org.apache.poi.util.POILogger.log
    查看>>
    POI实现Excel导出时常用方法说明
    查看>>
    POI导出Excel2003
    查看>>
    POI数据获取及坐标纠偏
    查看>>
    Quartz入门看这一篇文章就够了
    查看>>
    POI解析Excel【poi的坑——空行处理】
    查看>>
    POI:POI+JXL实现xls文件添加水印
    查看>>
    POI:POI实现docx文件添加水印
    查看>>
    POJ 1006
    查看>>
    Quartz中时间表达式的设置-----corn表达式
    查看>>