我們來看當我們在瀏覽器輸入幕後所發生的一切。
首先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命令:
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伺服器建立連線。
乙個HTTP請求詳細過程
http協議版本 請求頭部 空行 請求資料 完整的乙個請求報文 post index.php http 1.1 請求行 host localhost user agent mozilla 5.0 windows nt 5.1 rv 10.0.2 gecko 20100101 firefox 10.0...
乙個HTTP請求的詳細過程
1.乙個http請求的詳細過程 我們來看下當我們在瀏覽中輸入 背後發生的一切。首先http是乙個應用層的協議,因為雙方要通訊,所以事先約定乙個規範。當我們輸入這樣的乙個請求,首先要建立socket連線,因為socket是通過ip位址和埠建立的,所以之前還有乙個dns解析過程。把 www.mycomp...
請求乙個網頁的詳細過程
1 瀏覽器 瀏覽器輸入一段 例如 1 瀏覽器解析主機名,字串的擷取 www.sohu.com 解析過程是瀏覽器自己完成的 2 首先在本地查詢檔案hosts,3 注意 木馬攻擊,網域名稱重定向,修改hosts檔案,讓你訪問不到真正的網頁,有的瀏覽器會有提示 2 伺服器 伺服器接收到請求,進行解析 1 ...