查閱了很多部落格,現在總結一下當你輸入url到開啟鏈結發生了什麼。
基本過程:
dns解析
tcp連線
傳送http請求
伺服器處理請求並返回http報文
瀏覽器解析渲染頁面
連線結束
1 dns解析:
dns(domain name system,網域名稱系統),網際網路上作為網域名稱和ip位址相互對映的乙個分布式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的ip數串。通過主機名,最終得到該主機名對應的ip位址的過程叫做網域名稱解析。
q:快取是怎麼實現的。
a:上圖請求到google的ip位址時,經歷了8個步驟,這個過程中存在多個請求(同時存在udp和tcp請求,為什麼有兩種請求方式,請自行查詢)。如果每次都經過這麼多步驟,是否太耗時間?如何減少該過程的步驟呢?那就是dns快取。快取有以下幾種: 瀏覽器快取,系統快取,路由器快取,ips伺服器快取,根網域名稱伺服器快取,頂級網域名稱伺服器快取,主網域名稱伺服器快取。不知道大家有沒有思考過乙個問題: dns返回的ip位址是否每次都一樣?如果每次都一樣是否說明你請求的資源都位於同一臺機器上面,那麼這台機器需要多高的效能和儲存才能滿足億萬請求呢?其實真實的網際網路世界背後存在成千上百臺伺服器,大型的**甚至更多。但是在使用者的眼中,它需要的只是處理他的請求,哪台機器處理請求並不重要。dns可以返回乙個合適的機器的ip給使用者,例如可以根據每台機器的負載量,該機器離使用者地理位置的距離等等,這種過程就是dns負載均衡,又叫做dns重定向。大家耳熟能詳的cdn(content delivery network)就是利用dns的重定向技術,dns伺服器會返回乙個跟使用者最接近的點的ip位址給使用者,cdn節點的伺服器負責響應使用者的請求,提供所需的內容。
q:按照右下角的**是不是乙個網域名稱可以有多個ip。
a:是的。
2.tcp連線
3次握手:
3.http協議
傳送http請求的過程就是構建http請求報文並通過tcp協議中傳送到伺服器指定埠(http協議80/8080, https協議443)。http請求報文是由三部分組成: 請求行, 請求報頭和請求正文。
輸入乙個URL後發生了什麼
輸入乙個 並按回車之後瀏覽器會根據輸入的url查詢對應的ip,具體過程如下 1 查詢瀏覽器快取,瀏覽器會儲存一段時間內訪問過的一些 的dns資訊。2 如果沒有找到對應的ip,瀏覽器就呼叫作業系統快取來繼續查詢這個 的dns資訊。3 如果還是沒找到對應的ip,就傳送乙個請求到路由器上,路由器在路由器快...
new 乙個物件時發生了什麼
var person function name var p new person boring 以上 在呼叫時,會變成如下 var p person name newobj.constructor.call newobj,name 3 return newobj 4 0 建立乙個新的物件,newo...
輸入乙個URL後敲下回車發生了什麼?
首先瀏覽器先會到快取裡面去找,如果有就直接開啟,如果沒有或者快取過期就對url進行網域名稱解析。url所表示的不是最後資源所在的位置,而是為了方便記憶對ip位址的重定向,網域名稱解析的過程實際是將網域名稱還原為ip位址。首先,瀏覽器會檢查hosts檔案中是否存在ip位址和網域名稱之間的對映關係,如果...