OkHttp 文档翻译之 Connections

Connections

虽然您只提供URL,但OkHttp使用三种类型计划其与您的Web服务器的连接:URL,地址和路由。

URLs

除了作为Web上所有内容的通用,分散的命名方案之外,它们还指定了如何访问Web资源。

URLs 是抽象的:

  • 它们指定呼叫可以是明文(http)或加密(https),但没有指定使用哪种加密算法。它们也没有指定如何验证对等方的证书(HostnameVerifier)或可以信任哪些证书(SSLSocketFactory)。
  • 它们不指定是否应使用特定代理服务器或如何使用该代理服务器进行身份验证。

它们也具体:每个URL标识一个特定的路径(如/ square / okhttp)和查询(如?q = sharks&lang = en)。每个Web服务器都托管许多URL。

Addresses

地址指定Web服务器(如github.com)以及连接到该服务器所需的所有静态配置:端口号,HTTPS设置和首选网络协议(如HTTP / 2或SPDY)。

URLs 共享相同地址也可以共享相同的底层TCP套接字连接。共享连接具有显着的性能优势:更低的延迟,更高的吞吐量(由于TCP慢启动)和节省的电池。OkHttp使用连接池,它自动重用HTTP / 1.x连接并多路复用HTTP / 2和SPDY连接。

在OkHttp中,地址的某些字段来自URL(方案,主机名,端口),其余字段来自OkHttpClient。

Routes

Routes 提供实际连接到Web服务器所需的动态信息 。特定IP地址(由DNS查询发现),确切的代理服务器(如果正在使用ProxySelector),具体版本的TLS协议(用于HTTPS连接)。

单个地址可能有很多路由。例如,托管在多个数据中心中的Web服务器可能会在其DNS响应中生成多个IP地址。

Connections

当您使用OkHttp请求 URL 时,这是 Connections 的作用:

  1. Connection 使用 URL 和配置的 OkHttpClient 来创建 address。address 指定我们将如何连接到Web服务器。
  2. Connection 尝试从连接池中取出具有该地址的连接。
  3. 如果在池中找不到连接,则会路由。这通常意味着发出 DNS 请求,获取服务器的IP地址。然后,如有必要,它会选择 TLS 版本和代理服务器。
  4. 如果 Connection 是新路由,则通过构建直接套接字连接,TLS 隧道连接(通过HTTP代理的HTTPS)或直接 TLS 连接。需要时,它会进行 TLS 握手。
  5. 发送HTTP请求并读取响应。

如果连接出现问题,OkHttp 将选择另一条路线并再尝试。这允许 OkHttp 在服务器地址子集的一条地址无法访问时,使用另一条进行恢复。当连接池的连接过时或者不支持当前的TLS版本时,它也非常有用。

收到响应后,连接将存储到连接池中,以便可以将其重新用于将来的请求。一段时间不活动后,该连接将被连接池去除。

Word List

  • URLs (like https://github.com/square/okhttp) are fundamental to HTTP and the Internet.
  • In addition to being a universal, decentralized naming scheme for everything on the web, they also specify how to access web resources.
  • They specify that the call may be plaintext (http) or encrypted (https), but not which cryptographic algorithms should be used.
  • They're also concrete: each URL identifies a specific path (like /square/okhttp) and query (like ?q=sharks&lang=en). Each webserver hosts many URLs.
  • URLs that share the same address may also share the same underlying TCP socket connection.
  • Sharing a connection has substantial performance benefits
  • lower latency, higher throughput (due to TCP slow start) and conserved battery.
  • OkHttp uses a ConnectionPool that automatically reuses HTTP/1.x connections and multiplexes HTTP/2 and SPDY connections.
  • Routes supply the dynamic information necessary to actually connect to a webserver
  • This is the specific IP address to attempt (as discovered by a DNS query), the exact proxy server to use (if a ProxySelector is in use), and which version of TLS to negotiate (for HTTPS connections).
  • If it's a new route, it connects by building either a direct socket connection, a TLS tunnel (for HTTPS over an HTTP proxy), or a direct TLS connection. It does TLS handshakes as necessary.
  • This allows OkHttp to recover when a subset of a server's addresses are unreachable.
  • Connections are evicted from the pool after a period of inactivity.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容