HTTP超文本傳輸協議分析

簡介

        HTTP(HyperText Transfer Protocol)即超文本傳輸協議。是互聯網上應用最爲廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是爲了提供一種發佈和接收HTML頁面的方法。1960年美國人Ted Nelson構思了一種通過計算機處理文本信息的方法,並稱之爲超文本,這成爲了HTTP超文本傳輸協議標準架構的發展根基。Ted Nelson組織協調萬維網協會和互聯網工程工作小組共同合作研究,最終發佈了一系列的RFC,其中著名的RFC 2616定義了HTTP 1.1。

封包格式及各字段分析

封包格式

字段分析

請求部分
請求頭>

請求方法:


URL:統一資源標識符
版本:基本都是HTTP/1.1
首部行>
Host:請求的web服務器域名地址
User-Agent:HTTP客戶端運行的瀏覽器類型的詳細信息。通過該頭部信息,web服務器可以判斷到當前HTTP請求的客戶端瀏覽器類別。
Accept:指定客戶端能夠接收的內容類型,內容類型中的先後次序表示客戶端接收的先後次序。
Accept-Language:指定HTTP客戶端瀏覽器用來展示返回信息所優先選擇的語言。
Accept-Encoding:指定客戶端瀏覽器可以支持的web服務器返回內容壓縮編碼類型。表示允許服務器在將輸出內容發送到客戶端以前進行壓縮,以節約帶寬。而這裏設置的就是客戶端瀏覽器所能夠支持的返回壓縮格式。
Accept-Charset:瀏覽器可以接受的字符編碼集。
Content-Type:顯示此HTTP請求提交的內容類型。一般只有post提交時才需要設置該屬性。
有關Content-Type屬性值可以如下兩種編碼類型:
(1)“application/x-www-form-urlencoded”: 表單數據向服務器提交時所採用的編碼類型,默認的缺省值就是“application/x-www-form-urlencoded”。 然而,在向服務器發送大量的文本、包含非ASCII字符的文本或二進制數據時這種編碼方式效率很低。
(2)“multipart/form-data”: 在文件上載時,所使用的編碼類型應當是“multipart/form-data”,它既可以發送文本數據,也支持二進制數據上載。
Connection:表示是否需要持久連接。如果web服務器端看到這裏的值爲“Keep-Alive”,或者看到請求使用的是HTTP 1.1(HTTP 1.1默認進行持久連接),它就可以利用持久連接的優點,當頁面包含多個元素時(例如Applet,圖片),顯著地減少下載所需要的時間。要實現這一點, web服務器需要在返回給客戶端HTTP頭信息中發送一個Content-Length(返回信息正文的長度)頭,最簡單的實現方法是:先把內容寫入ByteArrayOutputStream,然 後在正式寫出內容之前計算它的大小。
Keep-Alive:顯示此HTTP連接的Keep-Alive時間。使客戶端到服務器端的連接持續有效,當出現對服務器的後繼請求時,Keep-Alive功能避免了建立或者重新建立連接。
cookie:HTTP請求發送時,會把保存在該請求域名下的所有cookie值一起發送給web服務器。
Referer:包含一個URL,用戶從該URL代表的頁面出發訪問當前請求的頁面

響應部分
狀態行>

版本:基本都是HTTP/1.1
狀態碼:有五大類狀態碼
1xx表示通知信息,如請求收到了或正在進行處理。
2xx表示成功,如接受或知道了。
3xx表示重定向,如要完成請求還必須進一步的行動。
4xx表示客戶的差錯,如請求中有錯誤語法或不能完成請求。
5xx表示服務器的差錯,如服務器器失效無法完成請求。
短語:對狀態碼的一個描述
首部行>

數據包分析

其他

        HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)即基於安全套接字層的超文本傳輸協議 ,是以安全爲目標的HTTP通道,簡單講就是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http體系。用於安全的HTTP數據傳輸。但HTTPS存在不同於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司(Netscape)進行,並內置於其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法。現在它被廣泛用於萬維網上安全敏感的通訊,例如交易支付方面。當接獲HTTP的報文時,通過追蹤數據流可以將數據還原出來,當使用HTTP傳輸密碼時那麼密碼將以明文呈現出來,但是如果使用HTTPS,所有數據都將會加密後傳輸。

SSL:https://blog.csdn.net/qq_42196196/article/details/84310667

HTTP和HTTPS區別:
1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。
4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

客戶端在使用HTTPS方式與Web服務器通信時有以下幾個步驟:
1、客戶使用https的URL訪問服務器,請求建立SSL連接。
2、服務器收到客戶端請求後,會將網站的證書信息(證書中包含公鑰)傳送一份給客戶端。
3、客戶端的瀏覽器與Web服務器開始協商SSL連接的安全等級。
4、客戶端的瀏覽器根據雙方同意的安全等級,建立會話密鑰,然後利用網站的公鑰將會話密鑰加密,並傳送給網站。
5、服務器利用自己的私鑰解密出會話密鑰。
6、服務器利用會話密鑰加密與客戶端之間的通信。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章