超文本傳輸協議HTTP基礎


HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫。它的發展是萬維網協會(WorldWide Web Consortium)和Internet工作小組IETF(Internet Engineering TaskForce)合作的結果,(他們)最終發布了一系列的RFC,RFC 1945定義了HTTP/1.0版本。其中最著名的就是RFC2616。RFC 2616定義了今天普遍使用的一個版本——HTTP 1.1。

HTTP協議(HyperText TransferProtocol,超文本傳輸協議)是用於從WWW伺服器傳輸超文本到本地瀏覽器的傳送協議。它可以使瀏覽器更加高效,使網路傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。

Advertisements

HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端伺服器模型。HTTP是一個無狀態的協議。

HTTP協議通常承載於TCP協議之上,有時也承載於TLS或SSL協議層之上,這個時候,就成了我們常說的HTTPS。

默認HTTP的埠號為80,HTTPS的埠號為443。

HTTP協議永遠都是客戶端發起請求,伺服器回送響應。

這樣就限制了使用HTTP協議,無法實現在客戶端沒有發起請求的時候,伺服器將消息推送給客戶端。

HTTP協議是一個無狀態的協議,同一個客戶端的這次請求和上次請求是沒有對應關係。

一次HTTP操作稱為一個事務,其工作過程可分為四步:

1)首先客戶機與伺服器需要建立連接。只要單擊某個超級鏈接,HTTP的工作開始。

Advertisements

2)建立連接后,客戶機發送一個請求給伺服器,請求方式的格式為:統一資源標識符(URL)、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。

3)伺服器接到請求后,給予相應的響應信息,其格式為一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括伺服器信息、實體信息和可能的內容。

4)客戶端接收伺服器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然後客戶機與伺服器斷開連接。

如果在以上過程中的某一步出現錯誤,那麼產生錯誤的信息將返回到客戶端,有顯示屏輸出。對於用戶來說,這些過程是由HTTP自己完成的,用戶只要用滑鼠點擊,等待信息顯示就可以了。

使用Wireshark抓TCP、http包

打開Wireshark,選擇工具欄上的「Capture」->「Options」,界面選擇如圖1所示:

一般讀者只需要選擇最上邊的下拉框,選擇合適的Device,而後點擊「Capture Filter」,此處選擇的是「HTTPTCP port(80)」,選擇後點擊上圖的「Start」開始抓包。

例如在瀏覽器中打開http://image.baidu.com/,抓包如圖所示:http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-3.jpg

可清晰的看到客戶端瀏覽器(ip為192.168.2.33)與伺服器的交互過程:

1)No1:瀏覽器(192.168.2.33)向伺服器(220.181.50.118)發出連接請求。此為TCP三次握手第一步,此時從圖中可以看出,為SYN,seq:X(x=0)

2)No2:伺服器(220.181.50.118)回應了瀏覽器(192.168.2.33)的請求,並要求確認,此時為:SYN,ACK,此時seq:y(y為0),ACK:x+1(為1)。此為三次握手的第二步;

3)No3:瀏覽器(192.168.2.33)回應了伺服器(220.181.50.118)的確認,連接成功。為:ACK,此時seq:x+1(為1),ACK:y+1(為1)。此為三次握手的第三步;

4)No4:瀏覽器(192.168.2.33)發出一個頁面HTTP請求;

5)No5:伺服器(220.181.50.118)確認;

6)No6:伺服器(220.181.50.118)發送數據;

7)No7:客戶端瀏覽器(192.168.2.33)確認;

8)No14:客戶端(192.168.2.33)發出一個圖片HTTP請求;

9)No15:伺服器(220.181.50.118)發送狀態響應碼200 OK。

版權所有權歸卿萃科技,轉載請註明出處

作者:卿萃科技ALIFPGA

原文地址:卿萃科技FPGA極客空間 微信公眾號

Advertisements

你可能會喜歡