前言
OkHttp系列文章
OkHttp系列文章(一) - Java網(wǎng)絡(luò)編程基礎(chǔ)
OkHttp系列文章(二) - Http與Https
OkHttp系列文章(三) - OkHttp
OkHttp系列文章(四) - OkHttp攔截器原理
OkHttp系列文章(五) - OkHttp的5個攔截器作用
OkHttp系列文章(六) - OkHttp的5個攔截器圖解分析
OkHttp系列文章(七) - 文件更新下載
1. TCP/IP協(xié)議家族
1>:推薦相關(guān)書籍:
《圖解Http》范嘱、《Http權(quán)威指南》、《Java網(wǎng)絡(luò)編程基礎(chǔ)》
2>:常用的協(xié)議有:
Http(底層是socket)、DNS、TCP尊勿、UDP单匣、IP等等;
輝煌FTP:用于傳輸文件噪沙;
3>:OSI七層協(xié)議:
應(yīng)用層插爹、表示層哄辣、會話層、傳輸層赠尾、網(wǎng)絡(luò)層柔滔、數(shù)據(jù)鏈路層、物理層萍虽;
4>:TCP三次握手(建立連接)和四次揮手(斷開連接)
三次握手:保證數(shù)據(jù)傳輸?shù)目煽啃裕斍榭梢詤⒄眨?a href="http://www.reibang.com/p/f778f3e76432" target="_blank">TCP三次握手簡介
你能聽到嗎形真?
我能聽到杉编,你能聽到嗎?
我能聽到咆霜,兩人開始對話邓馒。
四次揮手:保證客戶端、服務(wù)端都掛掉蛾坯,否則可能浪費資源
我想掛斷電話了光酣。
好,稍等下脉课,我還有句話沒說完救军,
說完話之后,掛了倘零。
對方也掛了唱遭。
2. Http請求:他們之間通信是以報文的形式
1>:客戶端請求(Request):請求報文 = 請求頭 + 空行 + 請求數(shù)據(jù)
Accept:客戶端可以處理的數(shù)據(jù)格式;
Cookie:服務(wù)端之前給我們的Cookie呈驶;
2>:服務(wù)端響應(yīng)(Response):請求報文 = 請求頭 + 空行 + 請求數(shù)據(jù)
Status Code:響應(yīng)狀態(tài)碼:200拷泽、404、500等袖瞻;
Content-Type:響應(yīng)返回類型:文本(utf-8)司致、圖片等等;
Set-Cookie:服務(wù)端給我們的Cookie聋迎,要保存起來脂矫,下次帶過去;
3. Cookie砌庄、Session羹唠、Token
共同點:
都是用來做持久化處理的奕枢,目的就是讓客戶端和服務(wù)端相互認(rèn)識的。Http請求默認(rèn)是不持久的佩微,通俗的講缝彬,就是誰也不認(rèn)識誰;
不同點:
1>:Cookie:是存放在客戶端的信息哺眯,這個信息來自于服務(wù)器返回的信息谷浅,下次請求帶過去:
如果用戶離開網(wǎng)站,并且Cookie已過期奶卓,那么該Cookie一般是會被清除的一疯;
如果Cookie沒有過期下次訪問網(wǎng)站還是會帶過去,相對比較危險夺姑;
2>:Session:是存放在服務(wù)器上邊的客戶端臨時信息墩邀,用戶離開網(wǎng)站時,Session會被清除盏浙,相對安全眉睹,但是比較耗費資源;
3>:Token废膘,用于App竹海,令牌的意思:用于用戶身份的驗證,有點類似于 Cookie丐黄,相對來說更安全斋配,一般流程如下:
a:客戶端向服務(wù)端申請 token;
b:服務(wù)端收到請求灌闺,會去驗證用戶信息艰争,簽發(fā)一個 token給客戶端,然后服務(wù)端自己保存token菩鲜;
c:客戶端收到 token 保存起來园细,每次請求帶上 token;
e:服務(wù)器收到其他請求時接校,會去驗證客戶端的 token猛频,如果成功返回數(shù)據(jù),不成功啥都不給蛛勉;
4. Http緩存
1>:Cache-Control(緩存策略):Public鹿寻、private、no-cache诽凌、max-age毡熏、no-store(不緩存);
2>:Expires(緩存的過期策略):指明緩存數(shù)據(jù)有效的絕對時間侣诵,告訴客戶端到了這個時間點(比照客戶端時間點)后本地緩存就作廢了痢法,在這個時間點內(nèi)客戶端可以認(rèn)為緩存數(shù)據(jù)有效狱窘,可以直接從緩存中加載顯示;
如果app端有緩存并且過期了财搁,需要給服務(wù)器發(fā)起請求蘸炸,這個時候服務(wù)端不一定會給返回數(shù)據(jù):
如果服務(wù)器數(shù)據(jù)沒有發(fā)生變動就不會給,服務(wù)器狀態(tài)碼會變?yōu)?04尖奔,如果服務(wù)端開發(fā)人員考慮性能的話搭儒,會給客戶端返回304,表示服務(wù)端數(shù)據(jù)沒有變動提茁,然后提示客戶端自己去拿之前過期的緩存