HTTP協議學習(四) Web伺服器

2021-07-07 07:50:43 字數 1876 閱讀 9674

本篇疑惑:http伺服器如何處理http請求的?

首先介紹一下什麼是web伺服器,我個人理解就是能支撐web應用正常工作的軟硬體結合的乙個玩意兒。web伺服器可以是一套軟體,一台小型機等。但最終提供支援的都是軟體。硬體只是作為乙個載體用於支撐web伺服器軟體的執行。

接收客戶端請求——接收請求——處理請求——訪問資源——構建響應——傳送響應——記錄事物日誌。這7個步驟。

一、接收客戶端請求(建立連線)

嚴格說來應該是建立連線,此時伺服器與客戶端會通過tcp建立底層通訊連線,這個過程伺服器是可以拒絕的,如果不建立,則伺服器會忽視請求。如果接收請求則伺服器還會通過反向dns去解析主機名以及以及確定客戶端使用者用於下面最後一條的日誌記錄,但是反向dns會花費更多時間(增加處理時間)的時間它也不是必須的。這些都可以通過控制管理來配置。

二、接收請求

解析客戶端請求的報文資訊(

從網路中讀取請求報文),為解析報文做準備。在接收請求過程中伺服器會有以下行為:

1、解析請求行:查詢請求方法、指定資源識別符號uri、版本號、他們之間以空格符分開以回車換行crlf作為結束行。

2、讀取報文首部,同樣以crlf結尾、如果首部有結束的空行也會檢測

3、如果content-length有效,則會繼續讀取請求主體 如圖

三、處理請求

根據第二步解析出的報文處理該報文請求,這個處理主要包括對請求方法,資源,首部以及可用主題進行分類,將他們分給不同的處理單元。

四、訪問資源

對請求的資源做對映。web伺服器是乙個資源伺服器,它負責傳送預先建立好的內容(

html頁面,js,等)或根據請求內容構建出動態的內容(

比如查詢統計時統計**資料)。在web伺服器將響應內容回送給客戶端之前都需要將uri對映成預先建立好或新動態生成的資源上。最簡單的則是通過請求uri作為資源,web伺服器中每個單獨的web應用會有單獨的乙個根目錄,通常在根目錄後加上uri就可以定位到請求的資源。這裡就會存在乙個安全性的問題。如果伺服器配置不當訪問者就可以通過目錄列表的方式訪問不該看見的東西暴露該站點的其它隱秘資訊。

如果訪問的是動態資源,那麼伺服器會將訪問對映到其它後端處理程式上去。伺服器還可以針對特定的資源進行訪問控制要求訪問者提供訪問密碼等。

五、構建響應

當伺服器識別了訪問資源、則會執行請求方法的描述動作並產生響應報文(

如果還產生了響應實體,那麼就將實體包含在了響應報文中。

六、傳送響應

傳送響應內容和接收響應一樣,如果是持久鏈結伺服器則應該特別注意釋放空閒鏈結以減少資源浪費。而如果是非持久鏈結則在傳送響應之後立即關閉掉連線。

七、記錄事物日誌

當以上所有事物完成之後伺服器就會在日誌中新增一條描述用於記錄。

自此、伺服器是如何處理一條求情,以及處理過程是怎麼樣的就闡述完畢了。

我們不妨總結一下:

客戶端請求伺服器時伺服器首先會判斷是否接收連線、如果不接受則終止、如果接收則建立通訊連線、接著開始分析請求報文對報文內容進行解析、然後處理解析出的報文內容、將請求的uri做定位、其中還會協調其它程式協作。完成之後就進行構建響應,將響應內容,型別等放入響應報文中、然後傳送回客戶端、最後在日誌中記錄該次事物

http協議(五)web伺服器

1 http1.1規範允許一台http伺服器搭建多個web站點。比如提供web託管服務的 商,可以用一台伺服器為多為客戶服務,也可以以每位客戶持有的網域名稱執行各自不同的 這裡利用了虛擬伺服器的功能。客戶端使用http協議訪問伺服器時,會經常採用類似www.baidu.con這樣的主機名和網域名稱 ...

web伺服器 HTTP協議基礎

1.http協議 一種規範和約定,實現客戶端和伺服器的通訊 2.http請求格式 請求行 請求頭 請求體 請求行 method request uri http version 方法 請求的資源位址 http版本 請求頭 accept 指瀏覽器或其他客戶可以接愛的mime檔案格式。servlet可以...

http協議(五)web伺服器

1 http1.1規範允許一台http伺服器搭建多個web站點。比如提供web託管服務的 商,可以用一台伺服器為多為客戶服務,也可以以每位客戶持有的網域名稱執行各自不同的 這裡利用了虛擬伺服器的功能。客戶端使用http協議訪問伺服器時,會經常採用類似www.baidu.con這樣的主機名和網域名稱 ...