以瀏覽器輸入www.baidu.com為例
1.網域名稱解析/網域名稱->ip位址
- 首先是去查詢瀏覽器快取,瀏覽器一般會儲存你之前訪問**的dns資訊,儲存的時間根據瀏覽器不同有所差異。
- 若瀏覽器快取中沒有,瀏覽器會做系統呼叫(gethostbyname)訪問系統快取中儲存的dns資訊。windows下你修改的hosts檔案中的dns在這時候就會起作用。
- 若系統快取中沒有,查詢請求會傳送至路由器,一般路由器中也有dns快取。
- 若還是沒有,會去訪問你在tcp/ipv4中填的dns伺服器位址(例如223.5.5.5 223.6.6.6)。若你沒有手動修改dns伺服器位址,這個dns請求會傳送到isp(網際網路服務提供商)dns伺服器繼續查詢。這裡所說的dns伺服器被叫為localdns伺服器。
-若isp dns伺服器快取中還是沒有,則會遞迴查詢dns伺服器,根網域名稱伺服器->頂級網域名稱伺服器.com->baidu網域名稱伺服器
若此時還未獲取到ip位址則不存在。
2.建立tcp連線
在http工作開始之前,web瀏覽器首先要通過網路與web伺服器建立連線,該連線是通過tcp來完成的,埠號一般為80。三次握手在此不再贅述(此內還涉及arp協議)。
3. 瀏覽器向web伺服器傳送http請求
建立連線後,瀏覽器向web伺服器傳送http請求。
get 這個請求定義了要讀取的url: 「 瀏覽器自身定義 (user-agent 頭), 和它希望接受什麼型別的相應 (accept and accept-encoding 頭). connection頭要求伺服器為了後邊的請求不要關閉tcp連線。
4.web伺服器響應
伺服器接收到獲取請求,然後處理並返回乙個響應。
若成功為http/1.1 200 ok
若不成功,則根據返回響應狀態碼進行相應的操作。
響應**由三位數組成:
1xx:表示請求已收到,繼續處理。範圍100-101
2xx:表成功,伺服器成功處理,範圍為200-206
3xx:重定向,有些資源被移動了,web會告訴客戶端新位址,此時瀏覽器會重新對新資源發起請求,範圍為300-305
4xx:客戶端錯誤狀態碼
5xx:web伺服器自己內部錯誤
常見狀態碼:
200:請求成功
302:重定向
404:請求資源不存在
400:客戶端請求有語法錯誤
401:請求未經授權
403:伺服器收到請求,但拒絕提供服務
500:伺服器內部錯誤
503:伺服器當前不能處理客戶端請求,過一段時間或許恢復正常。
5.web伺服器返回html響應
若web伺服器響應成功,會將網頁內容附在response的實體頭當中。報頭中content-type為「text/html」報頭讓瀏覽器將該響應內容以html形式呈現。
6.瀏覽器顯示html
瀏覽器並不需要等html全部獲取完就會在頁面中顯示。
7.獲取其他資訊
瀏覽器會傳送乙個請求獲取網路、css層疊樣式表、js檔案等內容
在瀏覽器中輸入URL後會發生什麼
url 全名叫統一資源定位符,uniform resource locator,俗稱 字面上來理解,它就是用來定位資源的。相當於圖書上面的標籤,有了這些標籤,管理員可以很快的找到相應的圖書。乙個完整的url包括以下資訊 協議,ip位址,路徑,埠號 其實大概分為十步,分別是 第一步 進行網域名稱解析 ...
當在瀏覽器位址列裡輸入URL後會發生什麼事情
其實這個很多大神已經說的很多了。但是為了自己更好的理解,在自己所接觸的層面上,重新對自己講解一下。當然,這是站在乙個前端開發者的角度上來看問題的。輸入url 瀏覽器從url中解析出伺服器的網域名稱 dns伺服器解析url,查詢ip。構建http請求包 http頭,http體 傳輸層傳送tcp連線 3...
在瀏覽器輸入URL之後
2 tcp連線 3 http請求與響應 4 螢幕繪製 將好記的網域名稱 baidu taobao bilibili等 解析成ip,服務由dns伺服器完成,然後再此ip位址的主機上將乙個子目錄與網域名稱繫結 檢查瀏覽器快取中是否有輸入的網域名稱檢查本地系統快取 從hosts檔案查詢是否有該網域名稱和對...