HTTP協議分析
一、HTTP簡介
Hyper Text Transfer Protocol
1、什麼是超文本(HyperText)?
包含有超鏈接(Link)和各種多媒體元素標記(Markup)的文本。這些超文本文件彼此鏈接,形成網狀(Web),因此又被稱爲網頁(Web Page)。這些鏈接使用URL表示。最常見的超文本格式是超文本標記語言HTML。
2、什麼是URL?
URL即統一資源定位符(Uniform Resource Locator),用來唯一的標識萬維網中的某一個文檔。URL由 協議、主機和端口(默認爲80)以及文件名三部分構成。
3、什麼是超文本傳輸協議HTTP?
- HTTP協議,即超文本傳輸協議(Hypertext transfer protocol)。是一種詳細規定了瀏覽器和萬維網(WWW = World Wide Web)服務器之間互相通信的規則,通過因特網傳送萬維網文檔的數據傳送協議。
- HTTP是無狀態協議,工作在TCP/IP模型中應用層的協議。HTTP協議通常承載於TCP協議之上,如果在TCP和http之間加入SSL或者TLS就是我們說的HTTPS。
- HTTP默認的端口號爲80,HTTPS的端口號爲443,
- HTTP無連接無狀態,這裏用Cookie解決了這個問題(另一種解決方案是Session)
二、HTTP工作原理
1.工作流程
點擊URL http://blog.tianyao.site/ 到顯示頁面的過程
1.DNS 解析:將URL域名解析成 IP 地址
2.TCP 連接:TCP 三次握手,建立TPC連接(80端口)
3.發送 HTTP 請求:瀏覽器通過GET請求 / index.html
4.服務器處理請求,發回瀏覽器請求的index文檔,
5.斷開連接:TCP 四次揮手
6.瀏覽器解析顯示index.html中的內容。
2.連接方式和無狀態性
- 非持久連接:
瀏覽器在每請求一個web文檔,就立即創建一個新連接,文檔傳輸完畢,立即釋放連接,http1.0和http0.9常使用這種方式 - 持久連接:
- 服務器發送完響應後 不立即釋放連接,瀏覽器可以使用連接繼續訪問其他文檔,連接保留時間由雙方協商確定
- 無狀態性:
服務端不記錄客戶端是否訪問過,HTTP無狀態性簡化了服務器的設計,更容易支持高併發
3.抓包分析
1.DNS 解析:將URL域名解析成 IP 地址
2.TCP 連接:TCP 三次握手,建立TPC連接(80端口)
3.發送 HTTP 請求:瀏覽器通過GET請求 / index.html
4.服務器處理請求,發回瀏覽器請求的index文檔,
5.斷開連接:TCP 四次揮手
6.瀏覽器解析顯示index.html中的內容。
三、HTTP報文結構
1.HTTP請求方法
方法 | 含義 |
---|---|
GET | 請求指定頁面信息 |
HEAD | 類似於 GET 請求,但返回的響應中沒有具體的內容,用於獲取報頭 |
POST | 向指定資源提交數據進行處理請求,數據被包含在請求體中。 |
PUT | 從客戶端向服務端傳輸數據,替換指定文檔 |
DELETE | 刪除服務器指定頁面 |
CONNECT | 代理服務 |
OPTION | 允許查看服務器的性能 |
TRACE | 用於測試,要求服務器返回收到的請求 |
PATCH | 對PUT方法的補充,對已知資源局部更新 |
2.HTTP狀態碼
分類 | 分類描述 | 實例 |
---|---|---|
1** | 通知信息 | 100=服務器正在處理請求 |
2** | 操作成功 | 200=請求成功 |
3** | 重定向 | 301=頁面位置永久改變;302=頁面位置暫時改變 |
4** | 客戶錯誤 | 403=禁止的頁面;404=頁面未找到 |
5** | 服務器錯誤 | 500=服務器內部錯誤;503=以後再試 |
3.HTTP頭部
四、HTTP頭部關鍵字段
1.User-Agent字段
瀏覽器標識(操作系統標識;加密等級標識;瀏覽器語言渲染引擎標識 版本信息
2.Server字段
包含請求服務器的Web服務軟件版本,一般正常的這個字段是隱藏的
3.Referer字段
瀏覽器向WEB服務器表明自己是從哪個網頁/URL獲得/點擊當前請求中的網址/URL。
4.cookie字段
將在web安全,cookie利用中,集中講解
5 .location字段
服務器告訴瀏覽器,試圖訪問的對象已經被移到別的位置了,到該頭部指定的位置去取。常用與將http強制轉換成https,