超文本傳輸協議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極客空間 微信公眾號