WolfcsTech


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 公益 404

HTTP/2规范:5. 流和多路复用

发表于 2016-10-29 | 分类于 网络协议 | | 阅读次数:

“流”是一个HTTP/2连接内在客户端和服务器间独立的双向的交换的帧序列。流具有一些重要的特性:

  • 单个的HTTP/2连接可以包含多个并发打开的流,各个终端多个流的帧可以交叉。
  • 流可以单方面地建立和使用,或由客户端或服务器共享。
  • 流可以被任何一端关闭。
  • 流中帧的发送顺序是值得注意的。接收者以它们收到帧的顺序处理。特别的,HEADERS帧和DATA帧在语义上是非常重要的。
  • 流由一个整数标识。流标识符由发起流的一端来赋值。
阅读全文 »

HTTP/2规范:4. HTTP帧

发表于 2016-10-29 | 分类于 网络协议 | | 阅读次数:

建立了HTTP/2连接之后,端点间就可以开始进行帧的交换了。

阅读全文 »

HTTP/2规范:3. 启动 HTTP/2

发表于 2016-10-29 | 分类于 网络协议 | | 阅读次数:

一个HTTP/2连接是一个运行于一个TCP连接([TCP] )之上的应用层协议。客户端是TCP连接的发起者。

HTTP/2使用了与HTTP/1.1所使用的相同的”http”和”https” URI schemes。HTTP/2共享了相同的默认端口号:”http” URIs的是80,”https” URIs的是443。作为结果,HTTP/2的实现在为处理诸如 http://example.org/foo 或 https://example.com/bar 这样的URIs的目标资源的请求时,需要首先发现upstream server(客户端希望建立连接的中间对端)是支持HTTP/2的。

阅读全文 »

HTTP/2规范:2. HTTP/2 协议总览

发表于 2016-10-29 | 分类于 网络协议 | | 阅读次数:

HTTP/2为HTTP语义提供了一个优化的传输方式。HTTP/2支持HTTP/1.1所有的核心功能,但在一些方面又更加高效。

HTTP/2中基本的协议单元是一个帧(Section4.1)。每一个帧类型服务于一个不通的目的。比如,HEADERS和DATA帧构成了HTTP请求和响应的基础(Section8.1);其它的帧类型,比如SETTINGS,WINDOW_UPDATE,和PUSH_PROMISE被用于支持其它的HTTP/2功能。

阅读全文 »

HTTP/2规范:1. 简介

发表于 2016-10-29 | 分类于 网络协议 | | 阅读次数:

摘要

这份规范描述了一种超文本传输协议(HTTP)语义的优化表示,被称为HTTP 版本 2(HTTP/2)。HTTP/2通过引入首部字段压缩,及允许在相同的连接上并发的进行多个数据交换,而使得更高效地使用网络资源,且获得可感知的延迟降低成为可能。它还引入了服务器向客户端未经请求的推送语义。

这份规范对于HTTP/1.1消息语法是一个可供选择的替代品,而不是废弃后者。HTTP既有的语义保持不变。

阅读全文 »

OkHttp3连接建立过程分析

发表于 2016-10-27 | 分类于 网络协议 | | 阅读次数:

如我们前面在 OkHttp3 HTTP请求执行流程分析 中的分析,OkHttp3通过Interceptor链来执行HTTP请求,整体的执行过程大体如下:

阅读全文 »

chromium net到android平台的移植

发表于 2016-10-18 | 分类于 Android开发 | | 阅读次数:

Chromium net是chromium浏览器及ChromeOS中,用于从网络获取资源的模块。这个网络库是用C++编写的,且用了大量的C++11特性。它广泛地支持当前互联网环境中用到的大量的网络协议,如HTTP/1.1,SPDY,HTTP/2,FTP,QUIC,WebSockets等;在安全性方面也有良好的支持,如SSL等;同时,针对性能,它也有诸多的优化,如引入libevent的基于事件驱动的设计。从而,将chromium net库移植到android平台上并用起来,以提升我们的APP的网络访问性能成为了一件非常有价值的事情。

阅读全文 »

Chromium Android编译指南

发表于 2016-10-16 | 分类于 Android开发 | | 阅读次数:

先决条件

需要有一台装有Linux操作系统环境的主机来做编译,这个环境的搭建配置方法可以参考Linux-specific build instructions。目前还不支持在其它(Mac/Windows)平台上来为Android编译Chromium。

阅读全文 »

OkHttp3中的代理与路由

发表于 2016-10-14 | 分类于 网络协议 | | 阅读次数:

HTTP请求的整体处理过程大体可以理解为,

  1. 建立TCP连接。
  2. 如果是HTTPS的话,完成SSL/TLS的协商。
  3. 发送请求。
  4. 获取响应。
  5. 结束请求,关闭连接。
阅读全文 »

Chromium net design

发表于 2016-10-11 | 分类于 网络协议 | | 阅读次数:

总览

网络栈主要地是一个单线程跨平台的库,主要负责资源获取。它的主要接口是URLRequest和URLRequestContext。URLRequest,
正如它的名字所表明的那样,表示一个URL的请求。URLRequestContext包含实现URL请求所需的所有相关上下文,比如cookies,主机解析器,代理解析器,cache,等等。多个URLRequest对象可以共享相同的URLRequestContext。大多数的net对象不是线程安全的,尽管磁盘缓存可以使用一个专门的线程,而一些组件(主机解析,证书验证等等)可以使用unjoined worker线程。由于它主要运行于一个单独的网络线程上,因而在网络线程上的操作都不允许阻塞。所以我们通过异步的回调(典型的是CompletionCallback)来使用非阻塞操作。网络栈的代码也会把大多数操作记录到NetLog,它允许消费者把表示操作的说明记录到内存中,并以用户友好的格式用于调试中。

阅读全文 »
1…18192021
Han Pengfei

Han Pengfei

207 日志
19 分类
30 标签
GitHub 豆瓣 知乎 E-Mail
Links
  • Android Developers
  • Android Open Source Project
  • 蚂蚁网
© 2016.09.16 — 2020 Han Pengfei
由 Hexo 强力驱动
|
主题 — NexT.Mist v6.0.3