1. 程式人生 > >瀏覽器輸入網址後,發生了什麼

瀏覽器輸入網址後,發生了什麼

1. 首先是輸入網址

  以www.facebook.com為例

1. 瀏覽器查詢域名對應IP

2.1 瀏覽器發起DNS查詢請求:
在廣域網中,我們是基於IP地址進行通訊的。但通常客戶訪問的是一個網址,為此,我們需要先得到網址對應的IP地址,這就需要域名服務系統將域名轉換成IP地址。如下圖所示,在客戶端瀏覽器中輸入網址:http://www.cricode.com時,瀏覽器會根據本地客戶端DNS伺服器配置(下圖為DNS伺服器配置),向DNS伺服器獲取域名對應的IP地址。

域名解析伺服器是基於UDP協議實現的一個應用程式,通常通過監聽53埠來獲取客戶端的域名解析請求。

  瀏覽器快取——瀏覽器會記錄DNS一段時間(2-30分鐘不等,視瀏覽器而定) 
  系統快取——瀏覽器裡沒找到DNS快取,此時瀏覽器做一個系統呼叫(window下是gethostbyname)。如發現匹配則採用。(與此對應有host惡意劫持更改攻擊) 
  路由器快取——路由器也會有DNS快取(快取你上過的網站,所以有時路由器需要進行DNS重新整理) 
  ISP DNS快取——接下來是在ISP(網際網路服務提供商)的DNS伺服器的快取上查詢。 
  遞迴查詢——DNS快取裡沒有的話,ISP DNS伺服器會先後從根域名伺服器(root)、.com頂級域名伺服器、baidu域名伺服器獲取IP(一般快取內都會有,所以這一步一般不會發生)

2.2 多IP域名DNS查詢解決方案 
  迴圈DNS——單個域名、多個IP列表迴圈應對DNS查詢 
  負載均衡器——一個特定IP的負載均衡伺服器(例如:反向代理伺服器)負責監聽請求並轉發給後面的多個伺服器叢集的某一個,實現多個伺服器負載均衡 
  地理DNS——根據使用者所處地理位置,返回不同的IP(應用:CDN) 
  anycast——一個IP地址對映多個物理主機的路由技術

3.瀏覽器給web伺服器傳送HTTP請求 
  得到域名對應的IP後,就開始傳送HTTP(S)請求了. 
  請求頭詳解: 
  GET http://facebook.com/ HTTP/1.1 
  Accept: application/x-ms-application, image/jpeg, application/xaml+xml, […] 
  User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; […] 
  Accept-Encoding: gzip, deflate 
  Connection: Keep-Alive 
  Host: facebook.com 
  Cookie: datr=1265876274-[…]; locale=en_US; lsd=WW[…]; c_user=2101[…]

  請求告訴伺服器: 
  1. 我要獲取(GET) http://facebook.com/ (GET的URL)這個頁面 
  2. Accept:我能接受這些型別的檔案 
  3. 我使用的是何種作業系統上的哪個型別那個版本的瀏覽器 
  4. 承認接受何種方式的壓縮檔案 
  5. 連線型別:短連線?長連線? 
  6. 主機域名 
  7. 傳送儲存在本機的cookies資訊給伺服器

  除了傳送獲取請求,還能傳送提交響應請求(如:搜尋時要把搜尋的內容一併發給伺服器進行處理(在請求URL後面增加特定的使用者引數),以獲取特定的內容) 
  注意:URL後面加斜槓與不加斜槓的區別(資料夾與單個檔案的區別) 
  

http://www.facebook.com 
  http://www.facebook.com/ 
  當我們輸入http://www.facebook.com 時,瀏覽器會自動新增斜槓,保證URL的嚴謹。 
  當我們輸入:http://www.facebook.com/folderOrFile 時,因為瀏覽器不清楚folderOrFile到底是資料夾還是檔案,所以不能自動新增 斜槓。這時,瀏覽器就不加斜槓直接訪問地址,伺服器會響應一個重定向,結果造成一次不必要的握手。

4.重定向 
  當我們輸入不完整的網址http://www.facebook.com 時,或者網站遷移做了重定向設定時,伺服器會進行一次重定向響應。 
  下面是重定向之後返回的響應頭: 
  HTTP/1.1 301 Moved Permanently 
  Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,pre-check=0 
  Expires: Sat, 01 Jan 2000 00:00:00 GMT 
  Location: http://www.facebook.com/ 
  P3P: CP=”DSP LAW” 
  Pragma: no-cache 
  Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT; 
  path=/; domain=.facebook.com; httponly 
  Content-Type: text/html; charset=utf-8 
  X-Cnection: close 
  Date: Fri, 12 Feb 2010 05:09:51 GMT 
  Content-Length: 0

  1. 301 永久重定向 
  2. 新的Location:……

  為什麼要重定向,而不直接返回使用者想看的內容呢?(既然伺服器已經經過重定向知道了使用者需要什麼)

  答:原因之一:與搜尋引擎排名有關。你看,如果一個頁面有兩個地址,就像http://www.igoro.com/ 和http://igoro.com/,搜尋引擎會認為它們是兩個網站,結果造成每一個的搜尋連結都減少從而降低排名。而搜尋引擎知道301永久重定向是 什麼意思,這樣就會把訪問帶www的和不帶www的地址歸到同一個網站排名下。

5.新的請求 
  重定向之後會發佈一個新的獲取請求

6.伺服器處理請求 
6.1 web伺服器軟體 
  伺服器作業系統種類:Linux(一般是廠家根據開源定製)、windows server系列(微軟) 
  主要的伺服器軟體:IIS、Apache、Tomcat、JBOSS、Nginx、lighttpd、Tetty 
  伺服器軟體的作用:接收、處理與響應請求(瞭解CGI的作用)

6.2 處理流程: 
  web伺服器軟體(如IIS或者Apache)接收到HTTP請求 
  確定執行那個請求處理程式(一個能讀懂請求並且能生成HTML來進行響應的程式)(例如:Asp.NET,PHP,RUBY……)來處理它 
  請求處理器閱讀請求頭的引數和cookies資訊 
  更新伺服器上的資訊:例如更新資料庫資訊、服務端cookies 
  生成HTML,壓縮(gzip或其他),響應請求傳送給使用者

7.伺服器發回一個HTML響應 
  響應包括響應頭(響應引數與資訊)、響應包(主體檔案) 
  響應包採用特定方法壓縮,整個響應以blob型別傳輸,響應頭指示響應包以何種方式壓縮 
  這個響應頭與重定向的響應頭不太一樣,這個響應頭還包含著快取選項,cookies設定和隱私資訊等

8.瀏覽器開始顯示HTML 
  瀏覽器在沒有完整接收全部HTML檔案,就已經開始顯示頁面了

9.瀏覽器獲取其他檔案 
  瀏覽器解析HTML遇到需要下載的檔案時,便再次向伺服器(CDN)傳送獲取檔案的請求。 
  注意: 
  1. 動態頁面無法快取,靜態檔案允許瀏覽器進行快取。 
  2. 靜態檔案本地有快取時直接從本地讀取 
  3. 請求響應頭內包含著靜態檔案儲存的期限,瀏覽器知道下載的靜態檔案要靜默保留多久。 
  4. 響應頭還會有靜態檔案的ETag(相當於版本號),當瀏覽器發現請求的靜態檔案的響應頭的ETag與現有的快取檔案不符時,便會再次向伺服器獲取靜態檔案。

10.瀏覽器傳送非同步(AJAX)請求 
  web 2.0的一大特徵就是頁面顯示完全後客戶端仍舊與伺服器端保持聯絡(keep-alive) 
  瀏覽器執行特定的JS程式碼會給伺服器傳送非同步請求,獲取最新的動態訊息,使得頁面能保持較新的狀態。 
  HTTP是一個請求-響應協議,只有在客戶端傳送請求,伺服器端才能做出響應,而不能主動把訊息或者文件發給客戶所以,要想保持頁面處於最新的狀態,需要定時進行輪詢(定時傳送AJAX請求以更新頁面內容) 
  AJAX請求十分容易更改,且使用者十分容易自己製造和傳送AJAX請求,所以沒有驗證碼的沒有IP限制條件的投票就是一個小遊戲了(參照工作室兩次刷票:自己定義IP,自己定時傳送AJAX請求,然後票就嘩嘩的上了)。 
  優化小方案:如果伺服器被輪詢時沒有新訊息,它就不理這個客戶端。而當請求尚未超時的情況下如果收到了該客戶的新訊息,伺服器就找到未完成的請求,把新訊息作為響應傳送給客戶端(這樣就無需頻繁地響應請求了). 
備註:此文章並非原創,原文地址http://www.cnblogs.com/rollenholt/archive/2012/03/23/2414345.html

相關推薦

瀏覽器輸入網址發生什麼

1. 首先是輸入網址   以www.facebook.com為例 1. 瀏覽器查詢域名對應IP 2.1 瀏覽器發起DNS查詢請求: 在廣域網中,我們是基於IP地址進行通訊的。但通常客戶訪問的是一個網址,為此,我們需要先得到網址對應的IP地址,這就需要域名服務系統將域名

當我的瀏覽器輸入域名發生什麽?

wid 深入 連接 bubuko 轉發 一個 用戶管理 好的 請求報文 我們以百度為例子,當我在瀏覽器的中輸入網址www.baidu.com時,發生了什麽?       1.域名解析   要知道,數據傳輸時所識別的數據鏈路層封裝的幀,並不是通過字符串“www.baidu.c

當我的瀏覽器輸入域名發生什麼?(轉)

文章轉自 https://www.cnblogs.com/shy0322/p/9276883.html 我們以百度為例子,當我在瀏覽器的中輸入網址www.baidu.com時,發生了什麼?       1.域名解析   要知道,資料傳輸時所識別的資料鏈路層封裝的幀,並不是通過字串

瀏覽器輸入一個網址發生什麼?

此文章轉載自:https://www.cnblogs.com/SarahLiu/p/5954832.html這是面試中一道非常經典的問題。當你在瀏覽器中輸入一個網址,瀏覽器的處理過程如下:第一步 瀏覽器查詢該域名的 IP 地址 第二步 瀏覽器根據解析得到的IP地址向 web

瀏覽器輸入網址發生什麼

輸入網址後…… 如上圖所示,為在瀏覽器中輸入網址後的示意圖。 1.瀏覽器發起DNS查詢請求 在廣域網中,我們是基於IP地址進行通訊的。但通常客戶訪問的是一個網址,為此,我們需要先得到網址對應的IP地址,這就需要域名服務系統將域名轉換成IP地址。如下圖所示,在客戶

輸入URL發生什麼

瀏覽器解析並查詢快取 DNS查詢 DNS查詢順序如下,若其中一步成功則直接跳到建立連結部分: 瀏覽器自身DNS 作業系統DNS 本地hosts檔案 向域名伺服器傳送請求 建立連結 TCP三次

輸入URL發生什麽事

渲染 請求 url 服務器端 客戶 接受 屬性 layout 輸入 1.域名DNS解析,拿到域名對應的ip(DNS使用的是一種UTP協議,UTP協議不需要三次握手) 2.TCP三次握手(客戶端獲取到服務器端ip,先發起一個請求,服務器確認收到,對客戶端發起請求作出響應可以發

當我們在瀏覽器輸入一個URL發生什麼?

寫在開頭:這篇文章被我歸入部落格效能優化類別,是因為我認為如果我們要優化網站效能、提升使用者體驗,首要目標就是要知道使用者在本地請求並載入你的網頁的過程中,到底發生了什麼,在此基礎上我們才能更好的優化網頁。 圖源:知乎-張秋怡 瀏覽器解析並查詢快取 DNS查詢

瀏覽器輸入網址發生什麼

  主要有以下幾個部分:(簡單的說) 1 DNS解析,獲取Web伺服器IP地址          (關於DNS解析 點此進入博主的另一篇文章) 2 建立TCP連線 3 向Web伺服器傳送HTTP請求 4 Web伺服

瀏覽器輸入網址發生這些

   當一個使用者在瀏覽器裡輸入了www.baidu.com這個URL時,將會發生很多操作。首先它會請求DNS把這個域名解析成對應的IP地址,然後根據這個IP地址在網際網路上找到對應的伺服器,向這個伺服器發起一個get請求,由這個伺服器決定返回預設的資料資源

瀏覽器輸入網址發生什麼?

在你的瀏覽器中輸入www.baidu.com以後,會在你的瀏覽器呈現百度首頁,這期間發生了什麼? 首先我們需要知道TCP/IP的網路模型,這裡我就以四層模型為例子。 第一步:在瀏覽器中輸入www.baidu.com後,應用層會使用DNS解析域名,如果本地

angularjs雙向繫結發生什麼事情?是什麼可以讓view層和controller層進行繫結的?

這裡是修真院前端小課堂,每篇分享文從 【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴充套件思考】【更多討論】【參考文獻】 八個方面深度解析前端知識/技能,本篇分享的是: 【angularjs雙向繫結後,發生了什麼事情?是什麼可以讓view層和controller層進

面試必考 瀏覽器輸入URL後面究竟發生什麼

1.將域名傳輸至DNS伺服器 2.DNS伺服器進行解析 瀏覽器如何通過域名去查詢 URL 對應的 IP 呢 1 瀏覽器的快取 2 作業系統的快取 3 路由的快取 ISP的dns伺服器進行遞迴查詢 瀏覽器通過向 DNS 伺服器傳送域名,DNS 伺服器查詢到與域名相對應的 IP

瀏覽器輸入URL執行的全部過程

在瀏覽器輸入URL後,執行的全部過程 域名解析 發起TCP的3次握手 建立TCP連線後發起http請求 伺服器響應http請求 瀏覽器解析html程式碼,並請求html程式碼中的資源(如js,css,圖片等) 斷開TCP

瀏覽器輸入url都幹些什麼?

我們在瀏覽器中輸入網址。 瀏覽器查詢域名對應的IP地址 -DNS查詢過程為: -瀏覽器快取->系統快取->路由器快取->ISP DNS快取->遞迴搜尋 -遞迴搜尋過程

使用者用瀏覽器訪問一個網站發生什麼。

當我們用瀏覽器訪問一個網頁時,瀏覽器先嚐試從Host檔案中獲取 http://www.baidu.com/對應的IP地址,如何不能取到就是用DNS協議來獲取IP。在DNS協議中PC會向你的本地DNS伺服器求助(一般是路由器),希望從本地DNS伺服器那裡得到百度的IP,如果得

當你輸入網址時都發生什麼(1)——URL解析與DNS

最近做Java Web也有一段時間了,既然做網站,那麼怎麼能對訪問網站的流程沒有一個基本的呢,所以就整理了一下從輸入網址並回車的到成功訪問到網站的一個過程。 簡單來說,訪問網址的過程大致可以分為五步: 1.解析URL。 2.瀏覽器發起DNS查詢請求。 3.瀏覽器與網站建立連

瀏覽器輸入URLHTTP請求返回的完整過程

判斷 圖片 cati 分享圖片 域名解析 地址 緩存 app 響應 1.Redirect,跳轉 ?? 瀏覽器記錄裏這個地址永久跳轉的新地址,瀏覽器先去判斷需不需要跳轉 2.Application cache ,應用緩存 ?? 瀏覽器看請求的資源是否有緩存 3.DNS解析

當在瀏覽器輸入一個url回車後臺發生什麼?比如輸入url你看到百度的首頁那麼這一切是如何發生的呢?

簡單來說有以下步驟:1、查詢域名對應的IP地址。這一步會依次查詢瀏覽器快取,系統快取,路由器快取,ISPDNS快取,根域名伺服器。2、向IP對應的伺服器傳送請求。3、伺服器響應請求,發回網頁內容。4、瀏覽器解析網頁內容。當然,由於網頁可能有重定向,或者嵌入了圖片,AJAX,

百度2015面試:在瀏覽器位址列輸入URL按下回車究竟發生什麼?

作為一個軟體開發者,你一定會對網路應用如何工作有一個完整的層次化的認知,同樣這裡也包括這些應用所用到的技術:像瀏覽器,HTTP,HTML,網路伺服器,需求處理等等。本文將更深入的研究當你輸入一個網址的時候,後臺到底發生了一件件什麼樣的事~1. 首先嘛,你得在瀏覽器裡輸入要網址