在瀏覽器位址列輸入URL,按下回車後內部處理過程

2021-09-26 11:05:00 字數 2574 閱讀 6153

這是一道面試會經常問的問題,平時雖然很常見的操作,但是**其底層原理,可能並不是一件簡單的事情,於是我從各處蒐羅整理下全過程,在這裡做分享。

第一步:瀏覽器輸入網域名稱

例如輸入:www.csdn.net/

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

3.查詢路由器快取:如果1,2步都查詢無果,則需要借助網路,路由器一般都有自己的dns快取,將前面的請求發給路由器,查詢isp 服務商快取 dns的伺服器,如果查詢到ip則直接返回,沒有的話繼續查詢。

4.遞迴查詢:如果以上步驟還找不到,則isp的dns伺服器就會進行遞迴查詢,所謂遞迴查詢就是如果主機所詢問的本地網域名稱伺服器不知道被查詢網域名稱的ip位址,那麼本地網域名稱伺服器就以dns客戶的身份,向其他根網域名稱伺服器繼續發出查詢請求報文,而不是讓該主機自己進行下一步查詢。(本地網域名稱伺服器位址是通過dhpc協議獲取位址,dhpc是負責分配ip位址的)

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

本例子中:根網域名稱伺服器告訴本地網域名稱伺服器,下一次應查詢的頂級網域名稱伺服器dns.net的ip位址。本地網域名稱伺服器向頂級網域名稱伺服器dns.net進行查詢。頂級網域名稱伺服器dns.net告訴本地網域名稱伺服器,下一次應查詢的許可權網域名稱伺服器dns.csdn.net的ip位址。本地網域名稱伺服器向許可權網域名稱伺服器dns.csdn.net進行查詢。許可權網域名稱伺服器dns.csdn.net告訴本地網域名稱伺服器,所查詢的主機www.csdn.net的ip位址。本地網域名稱伺服器最後把結果告訴主機。

第三步 :瀏覽器與目標伺服器建立tcp連線

1.      主機瀏覽器通過dns解析得到了目標伺服器的ip位址後,與伺服器建立tcp連線。

2.      tcp3次握手連線:瀏覽器所在的客戶機向伺服器發出連線請求報文(syn標誌為1);伺服器接收報文後,同意建立連線,向客戶機發出確認報文(syn,ack標誌位均為1);客戶機接收到確認報文後,再次向伺服器發出報文,確認已接收到確認報文;此處客戶機與伺服器之間的tcp連線建立完成,開始通訊。

第四步:瀏覽器通過http協議傳送請求

瀏覽器向主機發起乙個http-get方法報文請求。請求中包含訪問的url,也就是 ,keepalive,長連線,還有user-agent使用者瀏覽器作業系統資訊,編碼等。值得一提的是accep-encoding和cookies項。accept-encoding一般採用gzip,壓縮之後傳輸html檔案。cookies如果是首次訪問,會提示伺服器建立使用者快取資訊,如果不是,可以利用cookies對應鍵值,找到相應快取,快取裡面存放著使用者名稱,密碼和一些使用者設定項。

第五步:某些服務會做永久重定向響應

對於大型**存在多個主機站點,了負載均衡或者匯入流量,提高seo排名,往往不會直接返回請求頁面,而是重定向。返回的狀態碼就不是200ok,而是301,302以3開頭的重定向碼,瀏覽器在獲取了重定向響應後,在響應報文中location項找到重定向位址,瀏覽器重新第一步訪問即可。

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

當瀏覽器知道了重定向後最終的訪問位址之後,重新傳送乙個http請求,傳送內容同上。

第七步:伺服器處理請求

伺服器接收到獲取請求,然後處理並返回乙個響應。

第八步:伺服器發出乙個html響應

第九步:釋放tcp連線

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

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

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

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

第十步:瀏覽器顯示頁面

在瀏覽器沒有完整接受全部html文件時,它就已經開始顯示這個頁面了,瀏覽器接收到返回的資料報,根據瀏覽器的渲染機制對相應的資料進行渲染。渲染後的資料,進行相應的頁面呈現和腳步的互動。

第十一步:瀏覽器傳送獲取嵌入在html中的其他內容

比如一些樣式檔案,url,js檔案url等,瀏覽器會通過這些url重新傳送請求,請求過程依然是html讀取類似的過程,查詢網域名稱,傳送請求,重定向等。不過這些靜態檔案是可以快取到瀏覽器中的,有時訪問這些檔案不需要通過伺服器,直接從快取中取。某些**也會使用第三方cdn進行託管這些靜態檔案。

在瀏覽器位址列中輸入位址按下回車會發生哪些事情

在瀏覽器中獲取輸入的網域名稱,例如www.sixseven.xyz,搜尋自身的dns快取 dns快取 指的是dns返回正確的ip後,會把這個結果臨時儲存起來,並且會為快取設定乙個失效時間 n小時 在這n小時之內,當再次訪問該 時,系統會直接從電腦本地的dns快取中把結果返回,而不必去請求dns伺服器...

瀏覽器位址列輸入url到頁面顯示

1 瀏覽器通過dns網域名稱解析到ip位址 2 瀏覽器通過tcp協議建立到伺服器的tcp連線 tcp三次握手 3 客戶端 瀏覽器 向web伺服器端傳送http協議包,請求伺服器裡的資源文件 4 伺服器向客戶端傳送http協議應答包 5 客戶端和伺服器斷開連線 tcp四次揮手 客戶端開始解析處理htm...

在瀏覽器位址列輸入url,會發生哪些流程

1 dns解析 瀏覽器向dns伺服器請求解析該url中的網域名稱所對應的ip位址,解析出ip位址後,根據ip位址和預設埠,和伺服器建立tcp連線。2 tcp連線 結合三次握手講解 cp三次握手如圖 這裡寫描述 第一次握手 客戶主動 active open 去connect伺服器,並且傳送syn 假設...