HTTP:超文本傳輸協(xié)議;
主要內(nèi)容:包含請求/響應(yīng)報文,連接建立流程,http特點(diǎn)
請求報文:請求行(方法字段(get、post等)、URL(請求地址)、協(xié)議版本(一般是1.1版本))
請求頭部字段(以key value的形式組合在一起)
實體主體(get不帶實體主體,post 帶有)
響應(yīng)報文:響應(yīng)行(版本、狀態(tài)碼,描述(狀態(tài)碼的描述))
首部字段名區(qū)域
實體主體(響應(yīng)實體主體)
常見問題1、HTTP的請求方式有哪些?
get post head options put delete
常見問題2、Get、Post方式對區(qū)別
Get以?分割拼接在URL后面,有長度限制,是明文顯示
Post請求參數(shù)放在Body里面,一般沒有長度顯示,不是明文顯示,略微安全
語義:從協(xié)議的定義規(guī)范
Get是獲取資源的,是安全的(不引起server端的變化)、冪等的(同一請求方法執(zhí)行一次和執(zhí)行多次效果相同),可緩存的
Post是處理資源,是不安全的,非冪等的,不可緩存的
狀態(tài)碼
1XX
200 響應(yīng)成功
3XX 301/302 發(fā)生網(wǎng)絡(luò)重定向
4XX 401/404 客戶端發(fā)起的本身存在問題
5XX 501/502 server端有異常
http鏈接過程:TCP三次握手建立連接,http響應(yīng)報文,TCP四次揮手釋放連接
常見問題3、
為什么要三次握手?四次揮手為什么要建立兩方面的斷開?
http特點(diǎn)
1、無連接(連接有建立和釋放的過程),解決方法:建立http的持久連接(提升了網(wǎng)絡(luò)請求的效率,減少TCP連接建立的數(shù)量,減少握手揮手的過程,頭部字段connection:keep alive,time:20,max:10)
2、無狀態(tài)(多次發(fā)送請求,server端不知道是否是同一用戶),解決方法:cookie/session
常見問題3、
怎樣判斷一個請求是否結(jié)束?
響應(yīng)報文頭部字段connect-length:1024,sever端會攜帶響應(yīng)數(shù)據(jù)的大小,可以根據(jù)接手的響應(yīng)字段是否和sever端提供的一致
Post請求時,server端是經(jīng)過多次響應(yīng)數(shù)據(jù)的,那么有個字段chunked ,最后會有一個空的chunked,為空就代表結(jié)束
Charles抓包原理,就是中間人攻擊漏洞,中間人其實就是代理服務(wù)器,我們不是直接發(fā)給服務(wù)器,而是發(fā)給了代理服務(wù)器,這個中間人都可能會篡改我們的數(shù)據(jù)。
HTTPS與網(wǎng)絡(luò)安全
https = http + ssl/TLS
客戶端發(fā)送版本號,支持的加密算法,隨機(jī)數(shù)C,服務(wù)器端接收后,返回選擇的加密算法,隨機(jī)數(shù)S,服務(wù)器端證書,客戶端驗證服務(wù)器證書,驗證合法性,驗證公鑰,客戶端將隨機(jī)數(shù)C,隨機(jī)數(shù)S,預(yù)主密鑰組合起來形成會話密鑰,客戶端通過服務(wù)端的公鑰對預(yù)主密鑰進(jìn)行加密傳輸,服務(wù)端通過私有密鑰解密得到預(yù)主密鑰,組裝會話密鑰,通過發(fā)送加密的握手信息建立連接,驗證通道是否完成
TCP/UDP
TCP:傳輸控制協(xié)議
特點(diǎn):面向連接:數(shù)據(jù)開始之前,需要建立連接,結(jié)束之后,釋放連接
可靠傳輸(無差錯,不丟失,不重復(fù),按序到達(dá))通過停止等待協(xié)議,無差錯,每一個發(fā)送到達(dá)確認(rèn)之后,才能發(fā)送下一個;超時重傳,會被丟棄掉;確認(rèn)丟失(丟棄重傳報文,然后重傳),確認(rèn)遲到(重傳,丟棄)
面向字節(jié)流:不管發(fā)送方一次傳遞多少,要根據(jù)tcp實際情況來控制傳遞多少
流量控制:滑動窗口協(xié)議:客戶端要發(fā)送數(shù)據(jù)時,服務(wù)端接收窗口沒那么大,那么客戶端要根據(jù)接收字段去更改窗口值去調(diào)整接受發(fā)送速率
擁塞控制:慢開始(指數(shù)增長),擁塞避免(加法增大);快開始快重傳
三次握手:預(yù)防出錯超時等
四次揮手:關(guān)閉雙向鏈接
UDP:用戶數(shù)據(jù)報協(xié)議
特點(diǎn):無連接(不需要事先建立好連接),盡最大努力交付,面向報文(記不合并也不拆分)
功能:復(fù)用(建立傳輸過程中,是要有IP地址和端口號的組成,同一IP地址的電腦可能會有不同的應(yīng)用,應(yīng)用又對應(yīng)不同協(xié)議,端口號可能不同,不管是哪個端口傳遞出去,都可以復(fù)用udp傳輸層的協(xié)議),分用,差錯檢測(12字節(jié)偽首部,8字節(jié)UDP首部,7字節(jié)數(shù)據(jù))
DNS解析
域名到ip地址的映射,DNS解析請求采用UDP數(shù)據(jù)報,且明文
遞歸查詢/迭代查詢
存在哪些常見問題?DNS劫持/DNS解析轉(zhuǎn)發(fā)問題
DNS劫持:明文傳輸,可能會被劫持,
DNS解析轉(zhuǎn)發(fā):可能會被移動轉(zhuǎn)發(fā)給電信,權(quán)威DNS解析又會根據(jù)運(yùn)營商來返回,導(dǎo)致跨網(wǎng)訪問請求緩慢的問題
DNS劫持解決:用httpDNS,(正常DNS是使用DNS協(xié)議向DNS服務(wù)器53端口進(jìn)行請求,httpDNS使用HTTP協(xié)議向DNS服務(wù)器80端口進(jìn)行請求,直接跨過)
通過長連接server,通過內(nèi)網(wǎng)專線等進(jìn)行解析,避免公網(wǎng)解析被劫持的問題
cookie/session
對http無狀態(tài)協(xié)議的補(bǔ)償
Cookie是用來記錄用戶狀態(tài),區(qū)分用戶,狀態(tài)保存在客戶端