https 和okhttp

5G时代手把手实战网络请求原理及手写okhttp网络框架_哔哩哔哩_bilibili

http 在应用层  底层是tcp/ip

三次握手 四次挥手

5G时代手把手实战网络请求原理及手写okhttp网络框架_哔哩哔哩_bilibili

详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

http三次握手_HTTP三次握手,四次挥手。_weixin_39993454的博客-CSDN博客

三次握手  

1.客户端 发送SYN 标识到服务端,等待服务端确认

2.服务端收到请求后确认联机(可以接受数据)发送一个ACK=(A的Seq+1)、SYN

3.客户端收到后检查ACK是否正确,若正确,A会在发送确认包ACK到服务器

这样就建立了连接

0002149b47d590a50ae7babbcbc41bd7.png

四次挥手:

1.第一次挥手:TCP客户端发送一个FIN(结束)标识,用来关闭客户到服务端的连接。

2.第二次挥手:服务端收到这个FIN标识,他发回一个ACK(确认)标识,确认收到序号为收到序号+1,和SYN一样,一个FIN将占用一个序号。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。(服务器端继续发送未发送完的数据)


3.第三次挥手:服务端发送一个FIN(结束)标识到客户端,服务端关闭客户端的连接。


4.第四次挥手:客户端发送ACK(确认)标识报文确认,并将确认的序号+1,这样关闭

1c12b7f086f38073d6ce74b5c4081e74.png

https就是在https层上加入了 ssl 安全套接层

加密有 非对称加密和 对称加密两个阶段

非对称加密 :客户端请求,服务端有公钥和秘钥  服务端把证书的发给客户端

客户端验证证书,客户端生成随机数,用公钥对随机数加密 传给服务器,服务器用私钥对随机数解密。。  随机数的加密解密用的不是用一个钥匙

 随机数有3个

 对称加密:数据传输阶段是用随机进行加密和解密  

你知道,HTTPS用的是对称加密还是非对称加密? - 知乎

okhttp

分发器

Dispatcher  用了线程池和三个队列 Deque来管理调配请求  
readyAsyncCalls 
runningAsyncCalls
runningSyncCalls

异步请求最大数默认64   同一个域名异步请求最大数默认5

,异步任务执行时,会判断running队列是不是满了64 和 5,如果是则把任务放到准备队列

如果不是,则放到runningAsyncCalls队列   任何一个  runningAsyncCalls任务执行完一个就会回调检查  runningAsyncCalls队列是不是满了。如果没满 从 准备队列readyAsyncCalls移动一个过来

拦截器:完成整个请求过程  其实很简单

OkHttp 精讲:拦截器执行原理 - 简书

RealCall

excute的时候

添加拦截器,然后反复递归

RealInterceptorChain

RetryAndFollowUpInterceptor

就是这两处在递归调用 process

然后拦截器

intercept(Chain chain) 方法又调用了

RealInterceptorChain 第一次调用 RealInterceptorChain 的

proceed方法  反复递归   在proceed中有index+1去拿到不同的拦截器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值