博客
关于我
瞎掰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/

    你可能感兴趣的文章
    Python函数之返回值、作用域和局部变量
    查看>>
    Python+统计学 | 探索常用的数据分析统计分布
    查看>>
    python, selenium中用于切换帧的函数
    查看>>
    python函数
    查看>>
    python----线程、进程、协程的区别及多线程详解
    查看>>
    python---5
    查看>>
    python---使用celery分布式系统异步发送短信(云通讯)来验证登录
    查看>>
    python--003--百分号字符串拼接、format
    查看>>
    Python--10、线程
    查看>>
    Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
    查看>>
    python--基本代码规范
    查看>>
    Python--抽象类接口类
    查看>>
    PYTHON--欧拉习题二
    查看>>
    python--高级应用总结
    查看>>
    python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
    查看>>
    Python-Asyncio TypeError:无法在‘;等待‘;表达式中使用对象DICT
    查看>>
    Python-AttributeError:‘;dict&39;对象没有属性‘;序列‘;
    查看>>
    Python-ldap:是否可以在不显式写入密码的情况下进行绑定?
    查看>>
    python出现 unknown encoding: idna 的处理方法
    查看>>
    Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
    查看>>