這個過程其實很簡單,其實就是客戶端向伺服器發生請求,伺服器將結果返回客戶端的過程,但是真正的實現過程卻很複雜,總體來說,可以細分為以下幾個部分:
什麼是url
url的學名叫做統一資源定位符 ,是網際網路資源的位址,它包含協議、伺服器名稱(或ip位址)、路徑和檔名,協議包括最常見的http協議,和https、ftp等,伺服器名稱就是指的**名如baidu.com,路徑和檔名指的是,/index.html這類的檔案,如果在後邊加上路徑和檔名,就可以訪問這個檔案了。
dns解析
www.baidu.com只是為了方便人們記憶,它真正意義上的位址是它的ip位址,每個計算機都有乙個獨一無二的ip位址,把乙個**轉換到ip位址,這個過程就是dns解析。那麼這個過程是怎麼完成的呢,首先需要在本地網域名稱伺服器中查詢這個**對於的ip位址,找不到的話依次去根伺服器、com頂級伺服器、baidu.com網域名稱伺服器查詢ip位址,查到之後立即返回給本地網域名稱伺服器,這個ip位址就算找到了,返回給個人計算機。
dns快取
從解析過程來看,這個過程太複雜了,只是要求找到乙個ip位址,就要繞這麼多圈,有沒有優化方式呢,當然有,那就是將ip位址快取下來,dns存在著多級快取,從離瀏覽器的距離排序的話,有以下幾種: 瀏覽器快取,系統快取,路由器快取,ips伺服器快取,根網域名稱伺服器快取,頂級網域名稱伺服器快取,主網域名稱伺服器快取。這樣就大大降低了查詢ip位址的複雜度。
建立tcp連線
拿到ip位址後,瀏覽器就知道該向哪個伺服器傳送請求了,這就用到了傳輸層的tcp協議,tcp是一種面向有連線的傳輸層協議,建立連線需要進行三次握手才能互相傳輸資料,在tcp連線建立完成之後就可以傳送http請求了。
瀏覽器傳送http請求
tcp/ip協議通訊的過程其實就對應著資料入棧與出棧的過程。入棧的過程,資料傳送方每層不斷地封裝首部與尾部,新增一些傳輸的資訊,確保能傳輸到目的地。出棧的過程,資料接收方每層不斷地拆除首部與尾部,得到最終傳輸的資料。所以資料傳輸的過程中實際是將http請求資料一層層包起來,最後通過資料鏈路層傳出去。
伺服器接收http請求
這就是通訊過程中的出棧過程,伺服器在每層不斷地拆除首部與尾部,得到最終傳輸的資料,也就是瀏覽器發過來的http請求資料,每台伺服器上都會安裝處理請求的應用——web server,web server能夠解析http協議。當webserver接收到乙個http請求,會返回乙個http響應,比如送回乙個html頁面。
瀏覽器接收http響應,瀏覽器載入頁面
瀏覽器接收http響應的資料後,通過伺服器處理返回的html字串結果會被瀏覽器讀取解析,也就是瀏覽器載入頁面的過程。
從輸入URL到頁面載入,發生了什麼
整理之前的筆記時,發現之前的掌握的東西尚差的太遠,就仔細查詢了這個問題。總體來說,可以分為一下幾個部分 1.dns解析 2.tcp連線 3.傳送http請求 4.伺服器處理請求並返回http報文 5.瀏覽器解析渲染頁面 6.連線結束 dns解析是將網域名稱轉換成ip的過程,從使用者在瀏覽器位址列輸入...
從輸入URL到頁面載入發生了什麼
最近在進行前端面試方面的一些準備,看了網上許多相關的文章,發現有乙個問題始終繞不開 在瀏覽器中輸入url到整個頁面顯示在使用者面前時這個過程中到底發生了什麼。仔細思考這個問題,發現確實很深,這個過程涉及到的東西很多。這個問題的回答真的能夠很好的考驗乙個web工程師的水平,於是我自問自答一番。總體來說...
從輸入URL到頁面載入發生了什麼
tcp連線 傳送http請求 伺服器處理請求並返回http報文 瀏覽器解析渲染頁面 連線結束 系統快取主要存在 etc hosts linux系統 中 http請求 2xx 成功 表示請求已被成功接收 理解 接受。3xx 重定向 要完成請求必須進行更進一步的操作。4xx 客戶端錯誤 請求有語法錯誤或...