[Android网络相关-3] https协议请求的理解

116 阅读1分钟

    上篇分析了http协议的请求流程,基于OKHttp框架。本篇主要分析一下https的请求。

    https相对http协议,多了一层tls认证,认证结束后,会协商出会话加密密钥,后续通信就会通过该密钥来对传输中的数据进行加密。

  • 如图

https协议请求原理 (1).png

对比之前的http请求流程,图中,https请求主要多了如下事情。

  1. socket建立连接后,并不会直接发送数据
  2. 对于https请求,RealConnection对象会调用connectTls方法
  3. 方法中创建SSLSocket对象,复用socket连接。
  4. 和服务端进行相关验证。
  5. 对于X509对象证书,验证其地址和证书有效性。
  6. 重新生成BufferSource和BufferSink。

关于超时时间

    我们直接使用http请求时候,一般会设置3个时间,connectTime,ReadTime和WriteTime.

  • connectTime

建立Socket后,socket和服务端进行tcp连接时候使用的连接超时时间,超时则会抛异常。

  • ReadTime

使用https中才会有效,当请求需要建立隧道时候,会给BufferSource设置一个读超时

  • WriteTime

使用https中才会有效,当请求需要建立隧道时候,会给BufferSink建立一个写入超时。