HTTP請求流程基礎知識

HTTP協議解析

HTTP即超文本傳輸協議,是一種詳細規定了瀏覽器和萬維網服務器之間互相通信的規則,它是萬維網交換信息的基礎,它允許將HTML文檔從WEB服務器傳輸到WEB瀏覽器。

 

URL(統一資源定位符)也被稱爲網頁地址,是互聯網標準的地址。

URL的標準格式如下:

    協議://服務器IP【:端口】/路徑/【?查詢】

瀏覽器可以發起HTTP請求,也可以藉助其他工具發起HTTP請求,例如,linux系統的curl命令

 

HTTP協議目前最新版本是1.1,HTTP是一種無狀態的協議。無狀態是指WEB瀏覽器與WEB服務器之間不需要建立持久的連接,這意味着當一個客戶端向服務器發出請求,然後WEB服務器返回響應(Response),連接就被關閉了,在服務器端不保留連接的有關信息。也就是說,HTTP請求只能由客戶端發起,而服務器不能主動向客戶端發送數據。

1.HTTP請求

HTTP請求包括三部分,分別是請求行(請求方法)、請求頭(消息報頭)和請求正文。

POST/login.php HTTP/1.1      //請求行

HOST:www.test.com        //請求頭

User-Agent:Mozilla/5.0(windows NT6.1;rv:15.0)Gecko/20100101 firefox/15.0

                  //空白行,代表請求頭結束

Username=admin&password=admin  //請求正文

2.HTTP響應

與HTTP請求對應的是HTTP響應,HTTP響應也由三部分內容組成,分別是響應行、響應頭(消息報頭)和響應正文(消息主題)。

HTTP/1.1 200 OK            //響應行

Date:Thu,28Feb 2018 01:23:37 GMT //響應頭

                    //空白行,代表響應頭結束

<html>                 //響應正文或者叫消息主題

 

請求方法(所有方法全爲大寫)有多種,各個方法的解釋如下:

GET :請求Request-URL所標識的資源

POST:在Request-URL所標識的資源後附加新的數據

HEAD:請求獲取由Request-URL所標識的資源的響應消息報頭

PUT:請求服務器存儲一個資源,並用Request-URL作爲其標識

DELETE:請求服務器刪除Request-URL所標識的資源

TRACE:請求服務器回送收到的請求信息,主要用於測試或診斷

CONNECT:保留將來使用

OPTIONS:請求查詢服務器的性能,或者查詢與資源相關的選項和需求

 

HTTP狀態碼:

當客戶端發起HTTP請求,服務器端接收後,會向客戶端發送響應信息,其中,HTTP響應中的第一行中,最重要的一點就是HTTP狀態碼。

1xx:指示信息--表示請求已接收,繼續處理

2xx:成功--表示請求已被成功接收、理解、接受

3xx:重定向--要完成請求必須進行更進一步的操作

4xx:客戶端錯誤--請求有語法錯誤或請求無法實現

5xx:服務器端錯誤--服務器未能實現合法的請求

常見狀態碼、狀態描述、說明:

200 OK  //客戶端請求成功

400 Bad Request  //客戶端請求有語法錯誤,不能被服務器所理解

401 Unauthorized  //請求未經授權,這個狀態碼必須和WWW-Authenticate報頭域一起使用

403 Forbidden   //服務器收到請求,但是拒絕提供服務

404 Not Found  //請求資源不存在,eg:輸入了錯誤的URL

500 Internal Server Error  //服務器發生不可預期的錯誤

503 Server Unavailable  //服務器當前不能處理客戶端的請求,一段時間後可能恢復正常

 

HTTP消息

HTTP消息又稱HTTP頭(HTTP header),由四部分組成,分別是請求頭、響應頭、普通頭和實體頭。

1>請求頭

請求頭只出現在HTTP請求中,請求報頭允許客戶端向服務器端傳遞請求的附加信息和客戶端自身 的信息。常用的HTTP請求頭如下:

HOST:主要用於指定被請求資源的Internet主機和端口號,例如:host:www.test.com:8080

User-agent:允許客戶端將它的操作系統、瀏覽器和其他屬性告訴服務器

Referer:代表當前訪問URL的上一個URL,簡單的說,用戶是從什麼地方來到本頁面

Cookie:它是一段文本,常用來表示請求者身份等

Range:多線程下載一定會用到此請求頭

X-forward-for:它代表請求端的IP,可以有多個,中間以逗號隔開

Accept:用於指定客戶端接收那些MIME類型的信息,如Accept:text/html,表明客戶端希望接收html文本

Accept-Charset:用於指定客戶端接收的字符集(告訴服務器能夠發送哪些字符集)

2>響應頭:是服務器根據請求向客戶端發送的HTTP頭

1.Server:服務器所使用的WEB服務器名稱。避免攻擊者探測可以修改此頭的信息

2.Set-Cookie:向客服端設置Cookie,通過查看此頭,可以清楚地看到服務器向客戶端發起的Cookie信息

3.Last-Modified:服務器通過這個頭告訴瀏覽器,資源的最後修改時間

4.Location:服務器通過這個頭告訴瀏覽器去訪問哪個頁面,瀏覽器接收到這個請求之後,通常會立刻訪問Location頭所指的頁面,這個頭通常配合302狀態碼使用

5.Refresh:服務器通過Refresh頭告訴瀏覽器定時刷新瀏覽器

3>普通頭

在普通報頭中,在少數報頭域用於所有的請求和響應消息,但並不用於被傳輸的實體,只用於傳輸的消息

4>實體頭

請求和響應消息都可以傳送一個實體。實體頭定義了關於實體正文和請求所標識的資源的元信息。元信息也就是實體內容的屬性,包括實體信息類型、長度、壓縮方法、最後一次修改時間等。常見的實體頭如下:

Content-Type:實體報頭域用於指明發送者的實體正文的媒體類型

Content-length:實體報頭域用於指明實體正文的長度,以字節方式存儲的十進制數字來表示

Last-Modified:實體報頭域用於指示資源的最後修改日期和時間

 

HTTP協議與HTTPS協議的區別:

HTTPS協議它是以安全爲目標的HTTP通道,其實就是HTTP的升級版本,只是它比單純的HTTP協議更加安全。

HTTPS的安全基礎是SSL,既在HTTP下加入SSL層。也就是HTTPS通過安全傳輸機制進行傳送數據,這種機制可保護網絡傳送的所有數據的隱祕性和完整性,可以降低非入侵性攔截攻擊的可能性。

HTTPS和HTTP的區別主要如下

1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用

2、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議

3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者80,後者443

4、http的連接很簡單,是無狀態的:HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全

HTTPS的優點

  儘管HTTPS並非並非絕對安全,掌握根證書的機構、掌握加密算法的組織同樣可以進行中間人形式的攻擊,但HTTPS仍是現行架構下最安全的解決方案,主要有以下幾個好處:

  1.使用HTTPS協議可認證用戶和服務器,確保數據發送到正確的客戶機和服務器

  2.HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全,可防止數據在傳輸過程中不被竊取、改變,確保數據的完整性

  3.HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了攻擊人的成本

  4.谷歌在2014年8月份調整搜索引擎算法,並稱“比起同等HTTP網站,採用HTTPS加密的網站在搜索結果中的排名將會更高”

HTTPS的缺點

  雖說HTTPS有很大的優勢,但其相對來說,還是存在不足之處的:

  1.HTTPS協議握手階段比較費時,會時頁面的加載時間延長近50%,增加10%到20%的耗電

  2.HTTPS連接緩存不如HTTP高效,會增加數據開銷和功耗,甚至已有的安全措施也會因此而受到影響

  3.SSL證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不用

  4.SSL證書通常需要綁定IP,不能在同一IP上綁定多個域名,IPv4資源不可能支撐這個消耗

  5.HTTPS協議的加密範圍也比較有限,在黑客攻擊、拒絕服務攻擊、服務器劫持等方面幾乎起不到什麼作用。最關鍵的,SSL證書的信用鏈體系並不安全,特別在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行

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