網(wǎng)絡模型:應用層,表示層,會話層,傳輸層,網(wǎng)絡層,數(shù)據(jù)鏈路層,物理層。
網(wǎng)絡的通訊其實就是socket間的通訊(通訊的兩端都是socket),通過IO傳輸。需要IP,Port
Socket:位于傳輸層,有兩個傳輸協(xié)議
- TCP:傳輸控制協(xié)議。通過3次握手來建立連接(創(chuàng)建socket,connect建立連接,write發(fā)送,請求數(shù)據(jù),read讀取返回的信息,讀取完畢的close,結束循環(huán)),可大數(shù)據(jù)傳輸。案例:下載,保持文件傳輸?shù)耐暾浴?/li>
- UDP:用戶數(shù)據(jù)協(xié)議,不需要握手操作,有大小限制。不可靠協(xié)議。一般流媒體,游戲等,如果網(wǎng)絡不好出現(xiàn)卡幀等之類情況就可能使用的UDP。
http,https協(xié)議:是建立socket基礎之上的。處于應用層。
- http:超文本傳輸協(xié)議,明文傳輸。
- https:安全的ssl加密傳輸協(xié)議。
https流程:
客戶端將與服務端協(xié)商的數(shù)據(jù)傳遞給服務端,服務端進行校驗,校驗通過,會將數(shù)字證書(向CA機構申請,審核通過,發(fā)放數(shù)字證書,包含公鑰,簽名等公司信息),公鑰傳遞給客戶端,客戶端驗證證書的有效性。驗證通過,將公鑰處理成前主秘鑰進行非對稱加密傳輸給服務端,自己形成會話秘鑰。服務端通過私鑰解密獲取主秘鑰,同樣形成會話秘鑰。進行數(shù)據(jù)加密傳輸。
Charles作為中間人,對客戶端偽裝成服務端,對服務端偽裝成客戶端。簡單來說:
1:截獲客戶端的HTTPS請求,偽裝成中間人客戶端去向服務端發(fā)送HTTPS請求
2:接受服務端返回,用自己的證書偽裝成中間人服務端向客戶端發(fā)送數(shù)據(jù)內(nèi)容。
網(wǎng)絡請求:常用Get,Post方式的區(qū)別
- Get :參數(shù)包含在url中,參數(shù)有長度限制。
- Post:有請求體,通過request Body傳遞參數(shù),參數(shù)沒有長度限制。請求頭要添加字段content-type:application/json來獲取請求中消息主體的編碼方式。