天天看點

一個HTTP請求的詳細過程

HTTP Process

我們來看當我們在浏覽器輸入http://www.mycompany.com:8080/mydir/index.html,幕後所發生的一切。

首先http是一個應用層的協定,在這個層的協定,隻是一種通訊規範,也就是因為雙方要進行通訊,大家要事先約定一個規範。

1.連接配接當我們輸入這樣一個請求時,首先要建立一個socket連接配接,因為socket是通過ip和端口建立的,是以之前還有一個DNS解析過程,把www.mycompany.com變成ip,如果url裡不包含端口号,則會使用該協定的預設端口号。

DNS的過程是這樣的:首先我們知道我們本地的機器上在配置網絡時都會填寫DNS,這樣本機就會把這個url發給這個配置的DNS伺服器,如果能夠找到相應的url則傳回其ip,否則該DNS将繼續将該解析請求發送給上級DNS,整個DNS可以看做是一個樹狀結構,該請求将一直發送到根直到得到結果。現在已經擁有了目标ip和端口号,這樣我們就可以打開socket連接配接了。

2.請求 連接配接成功建立後,開始向web伺服器發送請求,這個請求一般是GET或POST指令(POST用于FORM參數的傳遞)。GET指令的格式為: GET 路徑/檔案名 HTTP/1.0

檔案名指出所通路的檔案,HTTP/1.0指出Web浏覽器使用的HTTP版本。現在可以發送GET指令:

GET /mydir/index.html HTTP/1.0,

3.應答 web伺服器收到這個請求,進行處理。從它的文檔空間中搜尋子目錄mydir的檔案index.html。如果找到該檔案,Web伺服器把該檔案内容傳送給相應的Web浏覽器。

為了告知浏覽器,,Web伺服器首先傳送一些HTTP頭資訊,然後傳送具體内容(即HTTP體資訊),HTTP頭資訊和HTTP體資訊之間用一個空行分開。

常用的HTTP頭資訊有:

① HTTP 1.0 200 OK 這是Web伺服器應答的第一行,列出伺服器正在運作的HTTP版本号和應答代碼。代碼"200 OK"表示請求完成。

② MIME_Version:1.0 它訓示MIME類型的版本。

③ content_type:類型 這個頭資訊非常重要,它訓示HTTP體資訊的MIME類型。如:content_type:text/html訓示傳送的資料是HTML文檔。

④ content_length:長度值 它訓示HTTP體資訊的長度(位元組)。

4.關閉連接配接:當應答結束後,Web浏覽器與Web伺服器必須斷開,以保證其它Web浏覽器能夠與Web伺服器建立連接配接。

-----------------------------------------------------------------------------------------------------------------------------------------

繼續閱讀