一、HTTP協議解析
1. 原理
HTTP(HyperText Transfer Protocal),超文本傳輸協議,屬於TCP/IP協議族中的應用層協議,端口號80,用於保證B/S架構中瀏覽器與萬維網服務器交換信息的統一性。其遵循的模型是請求/響應模型。
2. 抓包深入理解Request和Response
POST /dvwa/login.php HTTP/1.1 //請求行
Host: 172.16.128.5 //請求頭
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://172.16.128.5/dvwa/login.php
Cookie: security=high; PHPSESSID=42646081f74eb6fc613b3314ef5d61b7
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 41
//空白行
username=12345&password=12345&Login=Login //請求正文
1. 請求行
(1)請求方法
GET:獲取請求頁面的指定信息(以實體的格式)
HEAD:獲取請求頁面的響應頭,效率比GET高,多用於掃描工具中用於探測資源的存在性
POST:類似於GET,但可以向服務器發送不受長度限制的數據,不顯示到瀏覽器上,安全性比GET高
PUT:創建或替換資源,大部分情況被禁用
DELETE:刪除資源,大部分情況被禁用
TRACE:回顯服務器收到的請求
CONNECT:動態切換到隧道的代理
OPTIONS:請求資源的可選項,或瞭解服務器性能
(2)請求的資源
(3)HTTP版本
HTTP目前最新版本是1.1,是一種無狀態的協議,即每次瀏覽器發起請求,服務器響應後就斷開連接,對服務器的性能和安全性有直接關係。
2. 請求頭
(1)Host:指定被請求資源的主機和端口號
(2)User-Agent:客戶端瀏覽器信息,操作系統信息及其他屬性信息
(3)Accept:客戶端指定接收哪些MIME類型的信息
(4)Cookie:非常重要的請求信息,標識請求者身份
(5)Referer:代表當前訪問的URL的上一個URL
(6)Range:表示可以請求實體的部分內容,用於多線程下載
(7)x-forward-for:多個請求端IP,中間以逗號隔開
3. 請求正文
HTTP/1.1 200 OK //響應行
Date: Thu, 27 Feb 2020 06:35:06 GMT //響應頭
Server: Apache/2.2.8 (Ubuntu) DAV/2
X-Powered-By: PHP/5.2.4-2ubuntu5.10
Pragma: no-cache
Cache-Control: no-cache, must-revalidate
Expires: Tue, 23 Jun 2009 12:00:00 GMT
Content-Length: 1328
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html;charset=utf-8
//空白行
<html> //響應正文
...
</html>
1. 響應行
(1)HTTP版本
(2)狀態碼
1xx 成功接收,繼續處理
2xx 成功(常見200)
3xx 重定向(302)
4xx 客戶端錯誤(400語法錯誤 401請求未經授權 403收到請求,拒絕服務 404請求資源不存在)
5xx 服務器錯誤(500服務器內部錯誤 503服務器當前不能處理請求,一段時間後可能恢復)
2. 響應頭
(1)Server:服務器信息
(2)Set-Cookie:向客戶端設置Cookie
(3)Last-Modified:資源的最後修改時間
(4)Location:服務器告訴瀏覽器去訪問哪個頁面,一般見於302
(5)Refresh:告訴瀏覽器定時刷新
3. 響應正文
請求的資源的HTML源代碼
二、HTTP協議與HTTPS協議區別與聯繫
1. HTTPS(HTTP over Secure Socket Layer)是在HTTP下加入SSL層,即安全傳輸機制,相對於HTTP明文傳輸,HTTPS進行了數據的加密,對數據的隱祕性和完整性發揮了作用
2. HTTPS協議需要到CA申請證書
3. HTTP端口號80,HTTPS端口號443