HTTP協議通訊過程
當我們在瀏覽器的地址欄輸入“www.baidu.com”然後按斷行符號,這之後發生了什麼事,我們直接看到的是開啟了對應的網頁,那麼內部用戶端和服務端是如何通訊的呢?
1、 1、URL自動解析
HTTP URL包含了用於尋找某個資源的足夠資訊,基本格式如下:HTTP://host[“:”port][abs_path],其中HTTP表示桶蓋HTTP協議來定位網路資源;host表示合法的主機網域名稱或IP地址,port指定一個連接埠號碼,預設80;abs_path指定請求資源的URI;如果URL中沒有給出abs_path,那麼當它作為請求URI時,必須以“/”的形式給出,通常這個工作瀏覽器自動幫我們完成。
例如:輸入www.163.com;瀏覽器會自動轉換成:HTTP://www.163.com/
2、擷取IP,建立TCP串連
瀏覽器地址欄中輸入"HTTP://www.xxx.com/"並提交之後,首先它會在DNS本機快取表中尋找,如果有則直接告訴IP地址。如果沒有則要求網關DNS進行尋找,如此下去,找到對應的IP後,則返回會給瀏覽器。
當擷取IP之後,就開始與所請求的Tcp建立三向交握串連,串連建立後,就向伺服器發出HTTP請求。
3、用戶端瀏覽器向伺服器發出HTTP請求
一旦建立了TCP串連,Web瀏覽器就會向Web伺服器發送請求命令,接著以頭資訊的形式向Web伺服器發送一些別的資訊,之後瀏覽器發送了一空白行來通知伺服器,它已經結束了該頭資訊的發送。
4、Web伺服器應答,並向瀏覽器發送資料
客戶機向伺服器發出請求後,伺服器會客戶機回送應答,
HTTP/1.1 200 OK
應答的第一部分是協議的版本號碼和應答狀態代碼,正如用戶端會隨同請求發送關於自身的資訊一樣,伺服器也會隨同應答向使用者發送關於它自己的資料及被請求的文檔。
Web伺服器向瀏覽器發送頭資訊後,它會發送一個空白行來表示頭資訊的發送到此為結束,接著,它就以Content-Type應答頭資訊所描述的格式發送使用者所請求的實際資料
5、Web伺服器關閉TCP串連
一般情況下,一旦Web伺服器向瀏覽器發送了請求資料,它就要關閉TCP串連,然後如果瀏覽器或者伺服器在其頭資訊加入了這行代碼
Connection:keep-alive
TCP串連在發送後將仍然保持開啟狀態,於是,瀏覽器可以繼續通過相同的串連發送請求。保持串連節省了為每個請求建立新串連所需的時間,還節約了網路頻寬。