HTTP請求報(bào)文格式:
HTTP請求報(bào)文主要由請求行、請求頭部、請求正文3部分組成

1、請求行
由3部分組成,分別為:請求方法、URL以及協(xié)議版本,之間由空格分隔
請求方法:
GET POST DELETE TRACE HEAD
2、請求頭
請求頭部由關(guān)鍵字/值對組成,每行一對,關(guān)鍵字和值用英文冒號“:”分隔。請求頭部通知服務(wù)器有關(guān)于客戶端請求的信息,典型的請求頭有:
Usr-Agent:產(chǎn)生請求的的瀏覽器類型
Accept:客戶端可識別的內(nèi)容類型列表
Host:請求的主機(jī)名
其他sever client 約定的信息,如token ,deviceId等信息,以下是實(shí)際項(xiàng)目中用到的請求頭部,大部分都是自定義,各個請求都需要攜帶的頭信息


3、請求體
- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method
URLString:(NSString *)URLString
parameters:(NSDictionary *)parameters
constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block
error:(NSError *__autoreleasing *)error
以上parametes參數(shù),通過請求體傳的?還是請求頭傳的?
請求體

問題二:
cookie是請求的哪一部分
如上圖所示,請求頭
form表單是請求的那一部分?
請求體
HTTP響應(yīng)體可以是json也可以是html
HTTP策略鑒權(quán)分類
1、HTTP Basic Authentication
2、session-cookie
3、token驗(yàn)證
4、OAuth(開放授權(quán))
參考鏈接:https://blog.csdn.net/wang839305939/article/details/78713124
HTTP常見請求方法

狀態(tài)碼說明
| 狀態(tài)碼 | 說明 |
|---|---|
| 1xx | (臨時響應(yīng))表示臨時響應(yīng)并需要請求這繼續(xù)執(zhí)行操作的狀態(tài)碼 |
| 2xx | (成功)服務(wù)器已經(jīng)成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁 |
| 3xx | (重定向)表示要完成請求,需要進(jìn)一步操作。通常這些狀態(tài)碼用來重定向 |
| 4xx | (請求錯誤)這些狀態(tài)碼表示請求可能出錯,一般為客戶端錯誤,妨礙了服務(wù)器的處理 |
| 5xx | (服務(wù)器錯誤)表示服務(wù)器在嘗試處理請求時發(fā)生內(nèi)部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯 |
問題:和誰通信
URL決定和誰通信

算法題:判斷一個IP是否是合法IP?
思路:先了解IP的格式,形式為(1255).(1255).(1255).(1255) 有兩種方法實(shí)現(xiàn),一種基于對字符串的處理;另一種通過強(qiáng)大的正則表達(dá)式判斷。
HTTP && HTTPS
HTTP全稱 hyper Text Transfer Protocol
HTTPS全稱 hyper Text Transfer Protocol OverSecure Socket Layer,HTTPS是以安全為目標(biāo)的HTTP通道,簡單將是HTTP的安全版 HTTPS = HTTP +SSL(安全套接字)
SSL:Secure Sockets Layer 安全套接層
TLS:Transport Layer Security 傳輸層安全,SSL繼任者
TLS與SSL在傳輸層之上對網(wǎng)絡(luò)連接進(jìn)行加密,為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性。

HTTP&HTTPS區(qū)別
1、HTTPS協(xié)議需要到CA申請證書,需要交費(fèi)
2、HTTP是明文傳輸,HTTPS則是具有安全性的SSL加密傳輸
3、HTTP和HTTPS使用的端口不一樣,前者是80,后者是443
4、HTTPS可進(jìn)行加密傳輸,身份認(rèn)證,比HTTP安全
問題:
實(shí)際開發(fā)中HTTPS可設(shè)置不驗(yàn)證證書,直接傳輸么?
具體參見:https://lvwenhan.com/autolayout-club/478.html,了解iOS設(shè)置驗(yàn)證機(jī)制的API
IP協(xié)議是網(wǎng)絡(luò)七層協(xié)議的哪一層?
網(wǎng)絡(luò)層,如下圖所示


-
TCP連接建立的三次握手與四次揮手

-
SSL連接建立過程

SSL連接建立說明
1、驗(yàn)證服務(wù)端證書數(shù)字摘要和服務(wù)證書解密之后的內(nèi)容是否一致 篡改
2、證書鏈 根證書---》瀏覽器&操作系統(tǒng)可信任證書列表中
3、建立之初采用非對稱加密保證安全 建立之后采用對稱加密傳遞數(shù)據(jù)
問題:TCP連接建立的三次握手與SSL連接建立的過程有啥關(guān)系?
https和http都是在tcp層之上的,需要tcp三次握手之后才會開始,https是又包裝了一個建立加密層的過程,建立完畢后,加密層里面跑的是http
HTTPS中的對稱加密

HTTPS中的非對稱加密

iOS客戶端中證書設(shè)置
實(shí)現(xiàn)NSURLSessionDelegate中如下代理
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler {
}
相關(guān)問題
1、http性能優(yōu)化
http://www.itdecent.cn/p/54e93303f0d7
2、iOS網(wǎng)絡(luò)緩存優(yōu)化
https://github.com/ChenYilong/ParseSourceCodeStudy/blob/master/02_Parse%E7%9A%84%E7%BD%91%E7%BB%9C%E7%BC%93%E5%AD%98%E4%B8%8E%E7%A6%BB%E7%BA%BF%E5%AD%98%E5%82%A8/iOS%E7%BD%91%E7%BB%9C%E7%BC%93%E5%AD%98%E6%89%AB%E7%9B%B2%E7%AF%87.md
參考鏈接:
https://my.oschina.net/u/2340880/blog/807358
https://my.oschina.net/u/2340880/blog/807863
https://www.imooc.com/learn/969