HTTP3, 2, 1

主要观点:

  • HTTP1 简单易操作,可手动打开 TCP 连接并编写 HTTP 请求获取响应。
  • HTTP2 更复杂,可在单个连接上复用多个双向请求,可用于提高网页加载速度等。
  • HTTP3 基于 UDP 实现,可打开连接、在连接上打开流并提供不同类型的排序和交付保证。作者通过实验将 HTTP1 封装在 HTTP2 中,再将 HTTP2 封装在 HTTP3 中,实现了奇特的网络操作。

关键信息:

  • 介绍了 HTTP1、HTTP2、HTTP3 的特点和差异。
  • 给出了实现 HTTP3+2(在 HTTP3 中实现 HTTP2)和 HTTP3+2+1(在 HTTP3+2 中实现 HTTP1)的代码示例,包括各种监听、连接、封装等操作的函数实现。
  • 提到在实现 HTTP1 时遇到了一些问题,如某些情况下会失败等。

重要细节:

  • 详细说明了在不同协议之间转换时的具体代码逻辑,如创建各种连接、监听、处理请求等的步骤和函数。
  • 指出在实现 HTTP1 时通过使用sync.Once、管道io.Pipe等技术来处理请求和响应的转换。
  • 提到在某些实现中存在不可靠的情况,如time.Sleep用于防止死锁等。
阅读 8
0 条评论