1. 程式人生 > >瀏覽器中輸入URL到頁面返回的全過程

瀏覽器中輸入URL到頁面返回的全過程

第一步、瀏覽器中輸入域名www.baidu.com
第二步、域名解析

瀏覽器會把輸入的域名解析成對應的IP,過程如下:

1.      瀏覽器查詢瀏覽器快取,如果有域名對應的IP地址則返回,如果沒有繼續查詢。

2.      瀏覽器檢視本機的host檔案,如果有域名對應的IP地址則返回,如果沒有繼續查詢。

3.      然後是路由器快取,路由器一般有自己的快取,如果有域名對應的IP地址則返回,如果沒有繼續查詢。

4.      接著是對本地DNS伺服器進行遞迴查詢,看是否有域名對應的IP。主機向本地域名伺服器的查詢一般都是採用遞迴查詢。所謂遞迴查詢就是如果主機所詢問的本地域名伺服器不知道被查詢域名的IP地址,那麼本地域名伺服器就以DNS客戶的身份,向其他根域名伺服器繼續發出查詢請求報文,而不是讓該主機自己進行下一步查詢。(本地域名伺服器地址是通過DHPC協議獲取地址,DHPC是負責分配IP地址的)

5.      本地域名伺服器採用迭代查詢,它先向一個根域名伺服器查詢。本地域名伺服器向根域名伺服器的查詢一般都是採用迭代查詢。所謂迭代查詢就是當根域名伺服器收到本地域名伺服器發出的查詢請求報文後,要麼告訴本地域名伺服器下一步應該查詢哪一個域名伺服器,然後本地伺服器自己進行後續的查詢。(而不是替代本地伺服器進行後續查詢)。

6.      根域名伺服器告訴本地域名伺服器,下一次應查詢的頂級域名伺服器dns.com的IP地址。

7.      本地域名伺服器向頂級域名伺服器dns.com進行查詢。

8.      頂級域名伺服器dns.com告訴本地域名伺服器,下一次應查詢的許可權域名伺服器dns.baidu.com的IP地址。

9.      本地域名伺服器向許可權域名伺服器dns.baidu.com進行查詢。

10.   許可權域名伺服器dns.baidu.com告訴本地域名伺服器,所查詢的主機www.baidu.com的IP地址。

本地域名伺服器最後把查詢結果告訴主機。

第三步、瀏覽器與目標伺服器建立TCP連線

1.      主機瀏覽器通過DNS解析得到了目標伺服器的IP地址後,與伺服器建立TCP連線。

2.      TCP3次握手連線:瀏覽器所在的客戶機向伺服器發出連線請求報文;伺服器接收報文後,同意建立連線,向客戶機發出確認報文;客戶機接收到確認報文後,再次向伺服器發出報文,確認已接收到確認報文;此處客戶機與伺服器之間的TCP連線建立完成,開始通訊。

第四步、瀏覽器通過http協議向目標伺服器傳送請求

請求行,請求頭,請求實體內容。瀏覽器向主機發起一個HTTP-GET方法報文請求。請求中包含訪問的URL,也就是http://www.baidu.com/ ,KeepAlive,長連線,還有User-Agent使用者瀏覽器作業系統資訊,編碼等。值得一提的是Accep-Encoding和Cookies項。Accept-Encoding一般採用gzip,壓縮之後傳輸html檔案。Cookies如果是首次訪問,會提示伺服器建立使用者快取資訊,如果不是,可以利用Cookies對應鍵值,找到相應快取,快取裡面存放著使用者名稱,密碼和一些使用者設定項。

第五步、伺服器給出響應,將指定檔案傳送給瀏覽器

狀態行,響應頭,響應實體內容,返回狀態碼200 OK,表示伺服器可以響應請求,返回報文,由於在報頭中Content-type為“text/html”,瀏覽器以HTML形式呈現,而不是下載檔案。

注意:但是,對於大型網站存在多個主機站點,往往不會直接返回請求頁面,而是重定向。返回的狀態碼就不是200OK,而是301,302以3開頭的重定向碼,瀏覽器在獲取了重定向響應後,在響應報文中Location項找到重定向地址,瀏覽器重新第一步訪問即可。

補充一點的就是,重定向是為了負載均衡或者匯入流量,提高SEO排名。利用一個前端伺服器接受請求,然後負載到不同的主機上,可以大大提高站點的業務併發處理能力;重定向也可將多個域名的訪問,集中到一個站點;由於baidu.com,www.baidu.com會被搜尋引擎認為是兩個網站,照成每個的連結數都會減少從而降低排名,永久重定向會將兩個地址關聯起來,搜尋引擎會認為是同一個網站,從而提高排名。

第六步、TCP釋放連結

1.     瀏覽器所在主機向伺服器發出連線釋放報文,然後停止傳送資料;

2.     伺服器接收到釋放報文後發出確認報文,然後將伺服器上未傳送完的資料傳送完;

3.     伺服器資料傳輸完畢後,向客戶機發送連線釋放報文;

4.     客戶機接收到報文後,發出確認,然後等待一段時間後,釋放TCP連線;

第七步、瀏覽器顯示頁面中所有文字。

瀏覽器接收到返回的資料包,根據瀏覽器的渲染機制對相應的資料進行渲染。渲染後的資料,進行相應的頁面呈現和腳步的互動。

以上就是全部過程,僅供參考,謝謝。

作者:種向日葵的小仙女
來源:CSDN
原文:https://blog.csdn.net/qiuchaoxi/article/details/79415400
版權宣告:本文為博主原創文章,轉載請附上博文連結!