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功能很強大,大家可以自行研究下。