亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

HTTP 協議通信基原理

HTTP 是我們進行爬蟲的一個基礎之一,我們通過 HTTT 協議才能順利爬取到 HTML 里面的內容,HTTP 相當于是一條道路,HTML 等網頁是道路的終點,我們必須遵守 HTTP 的交通規則,才能高效的在這條道路上運輸數據。

1. HTTP 的基本概念

Http(超文本傳輸協議) 是一種客戶端-服務端模型,使用超媒體文檔進行傳輸的,簡單的,無狀態的,無連接的,可擴展的應用層協議。

下面,我們一一來分析上述定義的幾個概念。

1.1 客戶端-服務端模型:

客戶端,是指發起請求的一方。也就是瀏覽器,或者指爬蟲程序。通過發起請求,來獲取想要的網頁。

服務端,請求的響應端,是 web 服務端。web 服務,是一個虛擬意思上的機器的概念。可以是一個計算機集群,也可以是一個軟件或者程序。

客戶端,通過發送一個請求給服務端,然后進行等待。服務端按照客戶端的請求,返回客戶端需要的數據。這個過程,我們稱之為經典的客戶端——服務端模型。

1.2 超文本文檔:

一個網頁,其實就是一個超文本文檔。里面不僅包含了基本的文本信息和圖片視頻信息,也包含了豐富的超鏈接,用戶可以通過點擊超鏈接,來進行互聯網的沖浪。

1.3 簡單

指的是 HTTP 報文設計的簡單易懂,對新手很友好,很容易上手,降低了學習門檻。

1.4 無狀態

是指在同一個連接中,不同的請求之間是沒有聯系的,這次的請求無法知道上次請求的上下文信息。但是,HTTP 又是有會話的,也就是說,我們可以通過 Cookies 來解決不同請求的上下文信息共享。Cookie 的具體內容,我們會在后面的章節進行描述。

1.5 無連接

連接是又控制層控制的,無連接并不是指 HTTP 不需要控制層的連接,而是指每次連接指處理一次請求,請求結束,即端口連接。這樣設計的目的,是減少開銷,提高效率。因為,TCP 控制層的連接會消耗大量的系統資源。

1.6 可擴展

指的是 HTTP 的 Headers 部分比較容易擴展。只需要在頭部中加入擴展的新功能,就可以很方便的實現擴展。

2. HTTP簡單的工程流程

假如我們在瀏覽器輸入慕課網地址:http://www.xianlaiwan.cn/

HTTP 的工作流程如下:

  1. 首先需要傳輸層建立連接,這個是 HTTP 的運作的基礎之一,因為 HTTP 是應用層,它是建立在傳輸層之上的。
  2. 然后發送一個 HTTP 的請求報文如下:
GET / HTTP/1.1
Host: www.xianlaiwan.cn
Connection: keep-alive
Cache-Control: max-age=0
...

  1. 服務端會返回一段報文信息如下:
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=UTF-8
Content-Length: 49930
Connection: keep-alive
...

  1. 瀏覽器渲染服務器返回的信息,并關閉連接或者重用之前的連接。

以上就是 HTTP 的基本工作原理。關于請求與響應的具體解釋,我們下一個小節會深入講解。

3. 小結

這一小節,我們講解了 HTTP 的基本概念,熟悉了 HTTP 簡單的工作流程。其實 HTTP 協議比較復雜,感興趣的讀者可以更加深入的去學習 HTTP 底層的原理,對以后開發爬蟲以及 WEB 應用都有很大的幫助。