瀏覽器輸入url到響應頁面的全過程
b/s網路架構從前端到後端都得到了簡化,都基於統一的應用層協議http來互動資料,http協議採用無狀態的短鏈結的通訊方式,通常情況下,一次請求就完成了一次資料互動,通常也對應乙個業務邏輯,然後這次通訊連線就斷開了。採用這種方式是為了能夠同時服務更多的使用者,因為當前網際網路應用每天都會處理上億的使用者請求,不可能每個使用者訪問一次後就一直保持住這個連線。
①輸入url:www.google.com;
③建立tcp連線: 客戶端瀏覽器與web伺服器建立tcp(傳輸控制協議)連線,三次握手;
⑤web伺服器:nginx反向**(客戶端本來可以直接通過http協議訪問某**應用伺服器,**管理員可以在中間加上乙個nginx,客戶端請求nginx,nginx請求應用伺服器,然後將結果返回給客戶端,此時nginx就是反向**伺服器);
⑥應用伺服器:server處理請求(資料庫等互動…);
⑧關閉tcp連線:響應完成(非持久連線);
一句話概括:瀏覽器本身是乙個客戶端,當你輸入url的時候,首先瀏覽器會去請求dns伺服器,通過dns獲取相應的網域名稱對應的ip,然後通過ip位址找到ip對應的伺服器後,要求建立tcp連線,等瀏覽器傳送完http request(請求)包後,伺服器接收到請求包之後才開始處理請求包,伺服器呼叫自身服務,返回http response(響應)包;客戶端收到來自伺服器的響應後開始渲染這個response包裡的主體(body),等收到全部的內容隨後斷開與該伺服器之間的tcp連線;
一些具體詳細的補充:
瀏覽器是怎麼查詢網域名稱對應的ip位址的?
請求一旦發起,瀏覽器首先要做的事情就是解析這個網域名稱,一般來說,瀏覽器會首先檢視本地硬碟的 hosts 檔案,看看其中有沒有和這個網域名稱對應的規則,如果有的話就直接使用 hosts 檔案裡面的 ip 位址。
如果在本地的 hosts 檔案沒有能夠找到對應的 ip 位址,瀏覽器會發出乙個 dns請求到本地dns伺服器 。本地dns伺服器一般都是你的網路接入伺服器商提供,比如中國電信,中國移動。
查詢你輸入的**的dns請求到達本地dns伺服器之後,本地dns伺服器會首先查詢它的快取記錄,如果快取中有此條記錄,就可以直接返回結果,此過程是遞迴的方式進行查詢。如果沒有,本地dns伺服器還要向dns根伺服器進行查詢。
根dns伺服器沒有記錄具體的網域名稱和ip位址的對應關係,而是告訴本地dns伺服器,你可以到域伺服器上去繼續查詢,並給出域伺服器的位址。
本地dns伺服器繼續向域伺服器發出請求,在這個例子中,請求的物件是.com域伺服器。.com域伺服器收到請求之後,也不會直接返回網域名稱和ip位址的對應關係,而是告訴本地dns伺服器,你的網域名稱的解析伺服器的位址。
最後,本地dns伺服器向網域名稱的解析伺服器發出請求,這時就能收到乙個網域名稱和ip位址對應關係,本地dns伺服器不僅要把ip位址返回給使用者電腦,還要把這個對應關係儲存在快取中,以備下次別的使用者查詢時,可以直接返回結果,加快網路訪問。
瀏覽器向 web 伺服器傳送乙個 http 請求的過程大概是?
拿到網域名稱對應的ip位址之後,瀏覽器會以乙個隨機埠(1024《埠<65535)向伺服器的web程式(常用的有httpd,nginx等)80埠發起tcp的連線請求。這個連線請求到達伺服器端後(這中間通過各種路由裝置,區域網內除外),進入到網絡卡,然後是進入到核心的tcp/ip協議棧(用於識別該連線請求,解封包,一層一層的剝開),還有可能要經過netfilter防火牆(屬於核心的模組)的過濾,最終到達web程式,最終建立了tcp/ip的連線。
建立了tcp連線之後,發起乙個http請求。乙個典型的 http request header 一般需要包括請求的方法,例如 get 或者 post 等,不常用的還有 put 和 delete 、head、option以及 trace 方法,一般的瀏覽器只能發起 get 或者 post 請求。
客戶端向伺服器發起http請求的時候,會有一些請求資訊,請求資訊包含三個部分:
-------請求方法uri協議/版本
-------請求頭(request header)
-------請求正文:
注意:最後乙個請求頭之後是乙個空行,傳送回車符和換行符,通知伺服器以下不再有請求頭。
伺服器是如何處理請求的呢?
後端從在固定的埠接收到tcp報文開始,它會對tcp連線進行處理,對http協議進行解析,並按照報文格式進一步封裝成http request物件,供上層使用。
一些大一點的**會將你的請求到反向**伺服器中,因為當**訪問量非常大,**越來越慢,一台伺服器已經不夠用了。於是將同乙個應用部署在多台伺服器上,將大量使用者的請求分配給多台機器處理。此時,客戶端不是直接通過http協議訪問某**應用伺服器,而是先請求到nginx,nginx再請求應用伺服器,然後將結果返回給客戶端,這裡nginx的作用是反向**伺服器。同時也帶來了乙個好處,其中一台伺服器萬一掛了,只要還有其他伺服器正常執行,就不會影響使用者使用。
通過nginx的反向**,我們到達了web伺服器,服務端指令碼處理我們的請求,訪問我們的資料庫,獲取需要獲取的內容。
伺服器返回乙個 http 響應大概包括哪些?
http響應與http請求相似,http響應也由3個部分構成,分別是:
----- 狀態行
----- 響應頭(response header)
----- 響應正文
瀏覽器輸入url 到返回頁面全流程
使用者從輸入 url 到瀏覽器響應,呈現給使用者的具體過程 1 使用者在輸入欄輸入位址 1 如果有 beforeunload 事件會先執行判斷繼續還是跳出操作 2 瀏覽器程序識別是 位址還是關鍵字檢索 3 將正確的 url 位址傳送給網路程序 2 網路程序檢視有沒有快取 1 有快取直接返回資料 2 ...
瀏覽器輸入URL到返回頁面的整個過程
自己總結分析。1.根據網域名稱,進行dns網域名稱解析,獲得ip位址。2.根據ip位址,建立tcp連線 3.建立tcp連線後,向ip位址傳送http請求 4服務端處理請求 5服務端返回響應結果 6 關閉tcp連線 7瀏覽器解析html 8瀏覽器渲染資料展示 q1 現代瀏覽器在與伺服器建立了乙個 tc...
瀏覽器輸入URL到返回頁面的全過程
問題描述 第一步,解析網域名稱,找到主機 正常情況下,瀏覽器會快取dns一段時間,一般2分鐘到30分鐘不等。如果有快取,直接返回ip。快取中如果沒有查到ip,瀏覽器會做系統呼叫,讀取主機的hosts檔案,如果找到,直接返回ip。hosts檔案裡面還是沒有找到,則直接去路由器中尋找dns快取,一般這個...