HTTP協(xié)議

HTTP請求報(bào)文格式:

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


HTTP報(bào)文格式.jpeg

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)目中用到的請求頭部,大部分都是自定義,各個請求都需要攜帶的頭信息

墨客的httpHeader.png

狐友的HttpHeader.png

3、請求體

- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method
                                              URLString:(NSString *)URLString
                                             parameters:(NSDictionary *)parameters
                              constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block
                                                  error:(NSError *__autoreleasing *)error

以上parametes參數(shù),通過請求體傳的?還是請求頭傳的?
請求體


oc post 傳參.png

問題二:
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常見請求方法

image.png

狀態(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決定和誰通信

URL構(gòu)成.png

算法題:判斷一個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.png

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ò)層,如下圖所示

OSI參考模型.png

網(wǎng)絡(luò)七層協(xié)議.png
  • TCP連接建立的三次握手與四次揮手
TCP連接建立.png
  • SSL連接建立過程
SSL連接建立過程.png

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中的對稱加密


對稱加密.png

HTTPS中的非對稱加密


非對稱加密.png

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容