HTTP協議詳解


1、HTTP是一個應用層協議,由請求和相應構成,是一個標准的客戶端服務器模型。HTTP通常承載與TCP協議之上,有時也承載於TLS或SSL協議層之上,這個時候,就成了常說的HTTPS。默認HTTP端口為80,HTTPS的端口號是443

  HTTP在OSI模型中的位置如下圖:

 

2、HTTP協議的模型客戶端發起請求,服務器回送相應。HTTP協議是一個無狀態的協議,同一個客戶端的這次請求和上次請求沒有對應的關系。

3、HTTP協議是如何工作的

  首先,客戶端發送一個請求給服務器,服務器接收到這個請求后將生成一個相應返回給客戶端。一次HTTP操作成為一個事務。

  其工作過程分為四步:

  (1)、客戶機與服務器建立連接。點擊某個鏈接,HTTP協議的工作開始;

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

  (3)、服務器街道請求后,給予相應的信息相應。格式為:首先是一個狀態行(包括信息的協議版本號、一個成功或錯誤的代碼),然后是MIME信息(包括服務器信息,實體信息和可能內容);

  (4)、客戶端接收到服務器返回的信息並顯示在用戶的顯示屏上,然后客戶機與服務器斷開連接。

4、下面簡單介紹下HTTP協議中的一些主要的概念

(1)、請求

  請求由三部分組成:請求行、消息報頭、請求正文;

    <1>請求行包括請求方法、請求URI、協議版本

      請求方法有get、post、head等

    <2>報頭格式:名字+:+空格+值

      Host:頭域指定請求資源的Internet主機和端口號

      User-Agent:包含瀏覽者的信息,主要是瀏覽器的名稱版本和所用的操作系統

      Accept:告訴服務器可以接受的文件格式

      Cookie:用來標志一些信息

      Cache-Control:指定請求和響應遵循的緩存機制

      Referer:指定請求URI的源資源地址

      Content-Length:內容長度

      Content-Range:響應資源的范圍。可以實現斷點續傳,迅雷就是基於這個原理,使用多線程分段讀取網絡上的資源,最后在合並

      Accept-Enconding:指定所能接受的編碼方式

       ......

      <3>、請求正文,可以沒有

  (2)、響應

  

      狀態嗎由三位數組成,第一個數字定義了響應的類別,有五種可能取值:

      1XX:指示信息——請求已接收,繼續處理

      2XX:成功——請求已被成功接收、理解、接受

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

      4XX:客戶端錯誤——請求由語法錯誤或請求無法實現

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

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

      200 OK:客戶端請求成功

      400 Bad Request:客戶端請求由語法錯誤、不能被服務器所理解

      401 Unauthorize:請求未經授權

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

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

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

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

5、抓包工具

  分兩類:

  (1)、常規抓包工具:已IRIS、Wireshark為代表,這類軟件可以抓取到整個局域網內所有的數據包,主要工作在數據傳輸層

  (2)、專用抓包工具:只抓取某一協議,通常工作在應用層,最常見的就是對HTTP協議的抓取,如Fiddler、HttpWatch等

 

下面介紹一下Fiddler這款抓包軟件的工作原理:

  Fiddler是以代理服務器的方式監聽系統的網絡數據流動。運行軟件后,就會在本地打開8888端口,網絡數據流通過Fiddler進行中轉時,可以監視HTTP/HTTPS數據流的記錄並加以分析,甚至可以修改發送和接收的數據。

  其工作原理是在瀏覽器(或者其他使用HTTP協議的進程)和服務器之間扮演代理的角色,這樣所有的通信都要經過它。

  其最大的一個特點就是可以中途修改HTTP通信內容。

  工作原理如圖:

  

  Fiddler功能很強大,大家可以自行研究下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM