[toc]
# HTTP簡介
HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是因特網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)傳輸協(xié)議,它基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù)(HTML 文件, 圖片文件, 查詢結(jié)果等)。
# HTTP 工作原理
HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)上。
![](/upload/attach/202011/202011231723_M6DXK82G8KDWHAN.jpg)
## HTTP信息處理過程:
**此為典型案例:**
(1)客戶與服務(wù)器建立連接;
(2)客戶向服務(wù)器提出請求;
(3)服務(wù)器接受請求,并根據(jù)請求返回相應(yīng)的文件作為應(yīng)答;
(4)客戶與服務(wù)器關(guān)閉連接。
**宏觀工作方式:**
* 客戶端(UA)直接連接到Web服務(wù)器的通訊路徑如圖所示,客戶端與Web服務(wù)器之間的通訊不需要任何的中介服務(wù)器,這是最簡單的情況。
![](/upload/attach/202011/202011241037_EXTQ9AVDXDZ5ZG6.jpg)
* 客戶端(UA)通過中介服務(wù)器連接到Web服務(wù)器的通訊路徑如圖所示,客戶端與Web服務(wù)器之間的通訊通過中介服務(wù)器進行轉(zhuǎn)發(fā),中介服務(wù)器可能有1個,也可能有多個。
![](/upload/attach/202011/202011241037_BJ7S452FJXZAYKX.jpg)
* 客戶端(UA)到中介服務(wù)器的通訊路徑如圖所示,客戶端將請求發(fā)送給中介服務(wù)器1,中介服務(wù)器1將其發(fā)送中介服務(wù)器2,中介服務(wù)器2再發(fā)給Web服務(wù)器,最后客戶端收到的內(nèi)容由中介服務(wù)器1發(fā)送給它,而不是Web服務(wù)器。
![](/upload/attach/202011/202011241037_HCVB68MD2FSUXZK.jpg)
**內(nèi)部操作過程:**
如圖所示,它分為四個步驟:建立連接、發(fā)出請求信息、發(fā)出響應(yīng)信息、關(guān)閉連接。
![](/upload/attach/202011/202011241037_DHPS2AKFWF4W5J3.jpg)
## 小知識:
HTTP默認端口號為80,但是也可以改為8080或者其他端口。
## HTTP傳輸展示
![](/upload/attach/202011/202011231653_NP4DVBYRBSBRHGU.png)
## HTTP注意事項:
* HTTP是無連接:無連接的含義是限制每次連接只處理一個請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式主要考慮到WWW服務(wù)器面向的是Internet中成干上萬個用戶,且只能提供有限個連接,故服務(wù)器不會讓一個連接處于等待狀態(tài),及時地釋放連接可以大大提高服務(wù)器的執(zhí)行效率。
* HTTP是一種面向?qū)ο蟮膮f(xié)議:允許傳送任意類型的數(shù)據(jù)對象。它通過數(shù)據(jù)類型和長度來標(biāo)識所傳送的數(shù)據(jù)內(nèi)容和大小,并允許對數(shù)據(jù)進行壓縮傳送。
* HTTP是無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。
# HTTP隱患
因HTTP在設(shè)計之初未深入考慮安全問題,它只是未解決數(shù)據(jù)傳輸和共享問題而設(shè)計。但被有心人惡意利用后就發(fā)現(xiàn)了一些安全隱患,部分隱患展示:
* 明文傳輸隱患
因HTTP傳遞的數(shù)據(jù)是不經(jīng)過處理的,也就是常說的明文傳輸,不會加密這些信息,并因HTTP是基于TCP/IP的,TCP/IP的特點也決定了HTTP數(shù)據(jù)很容易被截獲,只要攻擊者能夠捕獲這些信息,用戶的隱私就暴露在攻擊者眼中(在不違法Web標(biāo)準(zhǔn)的情況下)。
![](/upload/attach/202011/202011231719_JAU7V6XFG3BVGCQ.png)
* 身份驗證隱患
因在HTTP標(biāo)準(zhǔn)中,沒有校驗對方身份的標(biāo)準(zhǔn),無法有效的驗證雙方是本人故易被攻擊者偽造進行惡意攻擊。
![](/upload/attach/202011/202011231718_U736TUXKCGJ42UE.png)
* 數(shù)據(jù)完整性隱患
因HTTP數(shù)據(jù)在傳輸過程中,會經(jīng)過很多節(jié)點,這些節(jié)點都可以修改原始數(shù)據(jù),而對于客戶端和服務(wù)器來說,沒有任何技術(shù)來確保接收的數(shù)據(jù)就是發(fā)送者發(fā)送的原始數(shù)據(jù),這樣就存在了被篡改的隱患。
![](/upload/attach/202011/202011231710_8QUQB2KPN5TBF7R.png)
# 參考資料
* 《HTTP百度百科》
* 《HTTPS教程》
* 《深入淺出HTTPS:從原理到實戰(zhàn)》
* 《HTTP網(wǎng)頁訪問應(yīng)用分析》