抓取網際網路報文資訊 HTTP 協議報文結構及示例

2021-10-25 12:38:34 字數 1729 閱讀 7453

下面我們用一張簡單的流程圖來展示 http 協議基本架構,以便大家先有個基本的了解

web client 可以是瀏覽器、搜尋引擎、機械人等等一切基於http 協議發起 http 請求的工具。web server 可以是任何的能解析 http 請求,並返回給web client 可識別的響應的服務,常見的有 apache、nginx、iis 等等 web 伺服器

濃縮就是精華,看下最簡潔的 http 互動圖:

請求報文:http 請求報文由請求行、請求頭、空行和請求內容 4 個部分構成。如下圖所示:

下面對上圖進行簡單的分析:請求行:由請求方法字段、url 字段、協議版本欄位三部分構成,它們之間由空格隔開。常用的請求方法有:get、post、head、put、delete、options、trace、connect。請求頭:請求頭由 key/value 對組成,每行為一對,key 和 value 之間通過冒號(:)分割。請求頭的作用主要用於通知服務端有關於客戶端的請求資訊。

典型的請求頭有:

空行:最後乙個請求頭之後就是空行,用於告訴服務端以下內容不再是請求頭的內容了。

請求內容:請求內容主要用於 post 請求,與 post 請求方法配套的請求頭一般有 content-type(標識請求內容的型別)和 content-length(標識請求內容的長度)

下面對響應報文格式進行簡要的分析說明:狀態行:由 http 協議版本、狀態碼、狀態碼描述三部分構成,它們之間由空格隔開。狀態碼:由 3 位數字組成,第一位標識響應的型別,常用的 5 大類狀態碼如下:

常見狀態碼說明:

一般情況下,響應頭會包含以下,甚至更多的資訊。

對於==請求端==來講:close 是告訴服務端,斷開連線,不用等待後續的求請了。keeplive 則是告訴服務端,在完成本次請求的響應後,保持連線,等待本次連線後的後續請求。對於==響應端==來講:close 表示連線已經關閉。keeplive 則表示連線保持中,可以繼續處理後續請求。keep-alive 表示如果請求端保持連線,則該請求頭部資訊表明期望服務端保持連線多長時間(秒),例如 300 秒,應該這樣寫 keep-alive: 300

空行:最後乙個響應頭之後就是空行,用於告訴請求端以下內容不再是響應頭的內容了。響應內容:服務端返回給請求端的文字資訊。

總結

對於 http 協議的互動過程這裡就不再進行說明了,大家可以搜尋下相關的資料進行學習,上述的內容請務必熟練掌握、深刻了解。更詳細的內容推薦大家學習 rfc 2616(http 協議 1.1 版本,有中文版本)

mysql 網際網路 MySQL網際網路業務使用建議

一 基礎規範 表儲存引擎必須使用innodb 表字符集預設使用utf8,必要時候使用utf8mb4 解讀 1 通用,無亂碼風險,漢字3位元組,英文1位元組 2 utf8mb4是utf8的超集,有儲存4位元組例如表情符號時,使用它 禁止使用儲存過程,檢視,觸發器,event 解讀 1 對資料庫效能影響...

網際網路與網際網路的區別

網際網路的英文單詞是 internet,網際網路的英文單詞是 internet。在英語中,專有名詞首字母都是大寫,用於特指某一事物。大寫的 internet 是作為乙個專有名詞出現的,所指的是由阿帕網發展而來的現如今全球最大的計算機網路,稱之為網際網路。小寫 internet 是作為乙個普通單詞出現...

Nutch 使用入門 二) 網際網路抓取

本人亦初學者,如有不正確的地方請多多指教。謝謝!nutch 網際網路抓取 bin nutch org.apache.tools.domzpraser content.rdf.u8 subset 3000 domzurls.txt另外一種辦法是查詢國內比較大的互聯 點。這些站點的 url 是通過分析 ...