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

2022-06-10 05:24:07 字數 1664 閱讀 6097

【問題描述】

【第一步,解析網域名稱,找到主機】

正常情況下,瀏覽器會快取dns一段時間,一般2分鐘到30分鐘不等。如果有快取,直接返回ip。

快取中如果沒有查到ip,瀏覽器會做系統呼叫,讀取主機的hosts檔案,如果找到,直接返回ip。

hosts檔案裡面還是沒有找到,則直接去路由器中尋找dns快取,一般這個時候都能找到對應的ip。

如果還是沒有找到,isp的dns伺服器就開始從根網域名稱伺服器開始遞迴搜尋,從.com頂級網域名稱伺服器開始,一直到baidu的網域名稱伺服器。

這個時候,瀏覽器就獲取到了對應的ip。在解析的過程中,常常會解析出不通的ip,這是根據不同的使用者,不同的網路**商,所在的地域,等等等等進行計算給出的最優的ip位址。

劫持dns,可以遮蔽掉很多網點的訪問。

【第二步,瀏覽器與**建立tcp連線】

瀏覽器利用ip直接與**主機通訊。

瀏覽器發出tcp(syn=1,ack=0)連線請求,主機返回tcp(syn=1,ack=1)應答報文,瀏覽器收到應答報文發現ack標誌位為1,表示連線請求確認。

瀏覽器返回tcp(ack=1)確認報文,主機收到確認報文,三次握手,tcp鏈結建立完成。

【第三步,瀏覽器發起get請求】

瀏覽器向主機發起乙個http-get方法報文請求。

請求中包含訪問的url,也就是 ,還有user-agent使用者瀏覽器作業系統資訊,編碼等。

值得一提的是accep-encoding和cookies項。

accept-encoding一般採用gzip,壓縮之後傳輸html檔案。

cookies如果是首次訪問,會提示伺服器建立使用者快取資訊,如果不是,可以利用cookies對應鍵值,找到相應快取,快取裡面存放著使用者名稱,密碼和一些使用者設定項。

【最後一步,顯示頁面】

返回狀態碼,表示伺服器已經成功響應後正常返回。

在報文頭裡面content-type為"test/html",瀏覽器以html形式呈現。

不過,對於大型**,一般都存在兩個乃至上百個主機站點,往往都不會直接返回請求頁面,而是重定向。

這時候,返回的狀態碼就不再是200,而是"301,302"等以3開頭的重定向碼。

瀏覽器在獲取了重定向響應後,在響應報文中location項找到重定向位址,瀏覽器重新第一步訪問即可。

最後再補充一點。

重定向是為了負載均衡或者匯入流量提高seo排名

利用乙個前端伺服器接受請求,然後負載到不同的主機上,可以大大提高站點的業務併發處理能力;

重定向也可將多個網域名稱的訪問,集中到乙個站點,

由於baidu.com,www.baidu.com會被搜尋引擎認為是兩個**,造成每個的鏈結數都會減少從而降低排名,永久重定向會將兩個位址關聯起來,搜尋引擎會認為是同乙個**,從而提高排名。

瀏覽器輸入url 到返回頁面全流程

使用者從輸入 url 到瀏覽器響應,呈現給使用者的具體過程 1 使用者在輸入欄輸入位址 1 如果有 beforeunload 事件會先執行判斷繼續還是跳出操作 2 瀏覽器程序識別是 位址還是關鍵字檢索 3 將正確的 url 位址傳送給網路程序 2 網路程序檢視有沒有快取 1 有快取直接返回資料 2 ...

瀏覽器輸入URL到返回頁面的整個過程

自己總結分析。1.根據網域名稱,進行dns網域名稱解析,獲得ip位址。2.根據ip位址,建立tcp連線 3.建立tcp連線後,向ip位址傳送http請求 4服務端處理請求 5服務端返回響應結果 6 關閉tcp連線 7瀏覽器解析html 8瀏覽器渲染資料展示 q1 現代瀏覽器在與伺服器建立了乙個 tc...

瀏覽器輸入URL到響應頁面的全過程

瀏覽器輸入url到響應頁面的全過程 b s網路架構從前端到後端都得到了簡化,都基於統一的應用層協議http來互動資料,http協議採用無狀態的短鏈結的通訊方式,通常情況下,一次請求就完成了一次資料互動,通常也對應乙個業務邏輯,然後這次通訊連線就斷開了。採用這種方式是為了能夠同時服務更多的使用者,因為...