💪
AndroidCollect
  • 写在前面
  • 计算机基础
    • 计算机组成原理
    • 算法
      • 查找
        • 二分查找
      • 排序
        • 简单排序
        • 高级排序
        • 特殊排序
      • 海量数据
      • 思想
        • 贪心
        • 分治
        • 动态规划
        • 回溯
      • 哈希算法
    • 数据结构
      • 队列
        • 知识点
        • 相关题目
          • 用两个栈实现队列
          • 实现循环队列
          • 用链表实现队列
          • 用数组实现队列
      • 栈
        • 相关算法题目
          • 用链表实现栈
          • 用数组实现栈
      • 链表
        • 知识点梳理
        • 相关算法题目
          • 删除倒数第n个结点
          • 合并两个有序链表
          • 检测单链表是否有环
          • 获取中间结点
          • 反转链表
      • 跳表
      • 哈希表
      • 树
        • 二叉树
        • 二叉查找树
        • AVL 树
        • Trie 树
        • 红黑树
      • 堆
        • 存储
        • 堆的应用
      • 图
    • 网络
      • 应用层协议
        • DNS
        • HTTP
        • HTTPS
      • 传输层协议
        • TCP
        • UDP
      • 输入网址后发生了什么
    • 操作系统
      • 内存
    • 数据库
  • 软件工程
    • 编程思想
    • 设计模式
      • 状态模式
      • 装饰器模式
      • 代理模式
      • 责任链模式
      • 建造者模式
      • 单例模式
      • 观察者模式
  • Java
    • 基础
    • 异常
    • 并发编程
      • ThreadLocal
      • 线程池
      • 理解 volatile
      • AbstractQueuedSynchronizer
    • 集合
      • LinkedHashMap 源码
      • HashMap 源码
    • 注解
    • 反射
      • JDK 动态代理
    • JVM
      • 自动内存管理机制
      • Class 文件格式
      • 类加载机制
      • Java 内存模型(JMM)
      • 字节码指令
      • HotSpot 虚拟机实现细节
    • 源码与原理
    • 各版本主要特性
  • Android
    • 基础组件
      • Context
      • Activity
        • 生命周期
        • 启动模式与任务栈
        • 启动流程
      • Service
      • ContentProvider
      • BroadcastReceiver
      • Fragment
      • View
        • 常用控件问题总结
          • RecyclerView
          • ViewPager2
        • CoordinatorLayout
        • SurfaceView
        • 事件分发
        • 绘制流程
        • 自定义 View
        • Window
    • 数据存储
      • 存储结构
      • Sqlite
      • 序列化
      • SharedPreferences
    • 资源
      • 图片加载
    • 动画
      • 属性动画
    • 线程和进程
      • Binder 机制
      • 跨进程通信
        • AIDL
    • 内部原理
      • 消息循环机制
      • Binder
      • Window
      • SparseArray
      • ArrayMap
      • RecyclerView
      • App 启动流程
    • 性能优化
      • 内存
        • 内存使用优化
        • 内存泄漏
      • 启动优化
      • 缩减包大小
      • 布局优化
      • ANR
    • 打包构建
      • dex 文件
      • APK 打包流程
      • APK 签名流程
    • 架构
      • 运行时
      • Android 系统架构
      • 应用项目架构
    • 开源框架源码或原理
      • RxJava
        • 使用笔记
        • 源码解析
      • Retrofit
      • ButterKnife
      • BlockCanary
      • LeakCanary
      • OkHttp
      • 图片加载
        • Glide
        • Picasso
    • 碎片化处理
      • 屏幕适配
    • 黑科技
      • 热修复
    • Jetpack
      • Lifecycle
      • Room
      • WorkManager
    • 新动态
      • AndroidX
      • 各系统版本特性
  • 开发工具
    • 正则表达式
    • ADB
    • Git
  • Kotlin
  • Flutter
  • 关于作者
  • 致谢
由 GitBook 提供支持
在本页
  • 相关题目
  • 响应状态码?
  • get 和 post 的区别?
  • HTTP 和 Socket 的区别?
  • Http1.1
  • 持久连接
  • 增加 host 请求头
  • 新增状态码
  • 缓存处理
  • HTTP 2.0
  • 使用二进制帧
  • 连接复用
  • Header 压缩
  • ServerPush
  • 相关链接

这有帮助吗?

  1. 计算机基础
  2. 网络
  3. 应用层协议

HTTP

相关题目

响应状态码?

200 400 403 404 500 304(not modify)

get 和 post 的区别?

get 会把数据直接放到url中,一般用于获取数据;

post 把数据放到请求体中,一般用于上传数据,避免直接通过url获取请求参数。

HTTP 和 Socket 的区别?

socket 是长连接,http 会主动关闭连接。

Http1.1

持久连接

header connection 默认是 keep-alive,可以实现多个请求可以复用一个TCP连接,避免每次请求都创建TCP链接带了的时延。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。

增加 host 请求头

HTTP 1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。

新增状态码

缓存处理

HTTP 2.0

使用二进制帧

将原有的文本格式改为二进制帧的形式,每个帧有一个stream id标识,每个请求都对应一个stream id。

连接复用

旧版协议中针对每个域名有连接数限制。在一个连接中,如果有很多请求,在前面的请求响应未返回之前,后面的请求就只能等待。而且新建连接三次握手也会增加时延。

HTTP 2.0 由于将数据组织成帧,所以可以同时发送数据帧,收到响应后根据stream id 区分请求,大大减少了时延。同时也能减少服务端链接压力,降低网络拥塞。

另外,还可以给 stream 设置优先级,可以使重要的请求优先被发送。 也可以设置请求之间的依赖。

Header 压缩

ServerPush

在HTTP/2中,服务器可以对客户端的一个请求发送多个响应,可以先把内容推送给客户端。

相关链接

上一页DNS下一页HTTPS

最后更新于5年前

这有帮助吗?

将 header 信息压缩,减少数据量,使用了 算法。

HPACK
HTTP/2 相比 1.0 有哪些重大改进? - victor yu的回答 - 知乎
http2讲解-gitbook
http/2