OkHttp系列文章(一) - Java网络编程基础
前言
OkHttp系列文章
OkHttp系列文章(一) - Java网络编程基础
OkHttp系列文章(二) - Http与Https
OkHttp系列文章(三) - OkHttp
OkHttp系列文章(四) - OkHttp拦截器原理
OkHttp系列文章(五) - OkHttp的5个拦截器作用
OkHttp系列文章(六) - OkHttp的5个拦截器图解分析
OkHttp系列文章(七) - 文件更新下载
1. TCP/IP协议家族
1>:推荐相关书籍:
《图解Http》、《Http权威指南》、《Java网络编程基础》
2>:常用的协议有:
Http(底层是socket)、DNS、TCP、UDP、IP等等;
辉煌FTP:用于传输文件;
3>:OSI七层协议:
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层;
4>:TCP三次握手(建立连接)和四次挥手(断开连接)
三次握手:保证数据传输的可靠性,详情可以参照,TCP三次握手简介
你能听到吗?
我能听到,你能听到吗?
我能听到,两人开始对话。
四次挥手:保证客户端、服务端都挂掉,否则可能浪费资源
我想挂断电话了。
好,稍等下,我还有句话没说完,
说完话之后,挂了。
对方也挂了。
2. Http请求:他们之间通信是以报文的形式
1>:客户端请求(Request):请求报文 = 请求头 + 空行 + 请求数据
Accept:客户端可以处理的数据格式;
Cookie:服务端之前给我们的Cookie;
2>:服务端响应(Response):请求报文 = 请求头 + 空行 + 请求数据
Status Code:响应状态码:200、404、500等;
Content-Type:响应返回类型:文本(utf-8)、图片等等;
Set-Cookie:服务端给我们的Cookie,要保存起来,下次带过去;
3. Cookie、Session、Token
共同点:
都是用来做持久化处理的,目的就是让客户端和服务端相互认识的。Http请求默认是不持久的,通俗的讲,就是谁也不认识谁;
不同点:
1>:Cookie:是存放在客户端的信息,这个信息来自于服务器返回的信息,下次请求带过去:
如果用户离开网站,并且Cookie已过期,那么该Cookie一般是会被清除的;
如果Cookie没有过期下次访问网站还是会带过去,相对比较危险;
2>:Session:是存放在服务器上边的客户端临时信息,用户离开网站时,Session会被清除,相对安全,但是比较耗费资源;
3>:Token,用于App,令牌的意思:用于用户身份的验证,有点类似于 Cookie,相对来说更安全,一般流程如下:
a:客户端向服务端申请 token;
b:服务端收到请求,会去验证用户信息,签发一个 token给客户端,然后服务端自己保存token;
c:客户端收到 token 保存起来,每次请求带上 token;
e:服务器收到其他请求时,会去验证客户端的 token,如果成功返回数据,不成功啥都不给;
4. Http缓存
1>:Cache-Control(缓存策略):Public、private、no-cache、max-age、no-store(不缓存);
2>:Expires(缓存的过期策略):指明缓存数据有效的绝对时间,告诉客户端到了这个时间点(比照客户端时间点)后本地缓存就作废了,在这个时间点内客户端可以认为缓存数据有效,可以直接从缓存中加载显示;
如果app端有缓存并且过期了,需要给服务器发起请求,这个时候服务端不一定会给返回数据:
如果服务器数据没有发生变动就不会给,服务器状态码会变为304,如果服务端开发人员考虑性能的话,会给客户端返回304,表示服务端数据没有变动,然后提示客户端自己去拿之前过期的缓存