在瀏覽器位址列輸入URL執行後網頁顯示全過程

2021-09-02 23:07:42 字數 3172 閱讀 6342

你知道當我們在網頁瀏覽器(web browser)的位址列中輸入 url時,web 頁面是如何呈現的嗎?

首先你知道dns嗎?

dns(domain name system)服務是和 http 協議一樣位於應用層的協議。它提供網域名稱到 ip 位址之間的解析服務。

計算機既可以被賦予 ip 位址,也可以被賦予主機名和網域名稱。比如www.hackr.jp。使用者通常使用主機名或網域名稱來訪問對方的計算機,而不是直接通過 ip位址訪問。因為與 ip 位址的一組純數字相比,用字母配合數字的表示形式來指定計算機名更符合人類的記憶習慣。

但要讓計算機去理解名稱,相對而言就變得困難了。因為計算機更擅長處理一長串數字。

為了解決上述的問題,dns 服務應運而生。dns 協議提供通過網域名稱查詢 ip 位址,或逆向從 ip 位址反查網域名稱的服務。

於是在你輸入乙個**、url如www.baidu.com時

1、客戶端瀏覽器通過dns解析到**的ip位址22x.18x.xx.01,通過這個ip位址找到客戶端到伺服器的路徑。客戶端瀏覽器發起乙個http會話到22x.18x.xx.01,然後通過tcp進行封裝資料報,輸入到網路層。

接著要理解tcp/ip協議族的分層管理

tcp/ip 協議族裡重要的一點就是分層。tcp/ip 協議族按層次分別分為以下 4 層:應用層、傳輸層、網路層和資料鏈路層。除此之外當然還有不在tcp/ip協議族裡的物理層。

把 tcp/ip 層次化是有好處的。比如,如果網際網路只由乙個協議統籌,某個地方需要改變設計時,就必須把所有部分整體替換掉。而分層之後只需把變動的層替換掉即可。把各層之間的介面部分規劃好之後,每個層次內部的設計就能夠自由改動了。值得一提的是,層次化之後,設計也變得相對簡單了。處於應用層上的應用可以只考慮分派給自己的任務,而不需要弄清對方在地球上哪個地方、對方的傳輸路線是怎樣的、是否能確保傳輸送達等問題。

tcp/ip 協議族各層的作用如下。

應用層

應用層決定了向使用者提**用服務時通訊的活動。tcp/ip 協議族內預存了各類通用的應用服務。比如,ftp(file transfer protocol,檔案傳輸協議)和 dns(domain name system,網域名稱系統)服務就是其中兩類。http 協議也處於該層。

傳輸層

傳輸層對上層應用層,提供處於網路連線中的兩台計算機之間的資料傳輸。在傳輸層有兩個性質不同的協議:tcp(transmission control protocol,傳輸控制協議)和 udp(user data protocol,使用者資料報協議)。

網路層(又名網路互連層)

網路層用來處理在網路上流動的資料報。資料報是網路傳輸的最小資料單位。該層規定了通過怎樣的路徑(所謂的傳輸路線)到達對方計算機,並把資料報傳送給對方。

與對方計算機之間通過多台計算機或網路裝置進行傳輸時,網路層所起的作用就是在眾多的選項內選擇一條傳輸路線。

鏈路層(又名資料鏈路層,網路介面層)

用來處理連線網路的硬體部分。包括控制作業系統、硬體的裝置驅動、nic(network inte***ce card,網路介面卡,即網絡卡),及光纖等物理可見部分(還包括聯結器等一切傳輸媒介)。硬體上的範疇均在鏈路層的作用範圍之內。

利用 tcp/ip 協議族進行網路通訊時,會通過分層順序與對方進行通訊。傳送端從應用層往下走,接收端則往應用層往上走。

2、在客戶端的傳輸層,把http會話請求分成報文段,新增源和目的埠,如伺服器使用80埠監聽客戶端的請求,客戶端由系統隨機選擇乙個埠如5000,與伺服器進行交換,伺服器把相應的請求返回給客戶端的5000埠。然後使用ip層的ip位址查詢目的端。

兩步結合起來即發生如下過程:

在到達通訊目標前的中轉過程中,那些計算機和路由器等網路裝置只能獲悉很粗略的傳輸路線。

這種機制稱為路由選擇(routing),有點像快遞公司的送貨過程。想要寄快遞的人,只要將自己的貨物送到集散中心,就可以知道快遞公司是否肯收件發貨,該快遞公司的集散中心檢查貨物的送達位址,明確下站該送往哪個區域的集散中心。接著,那個區域的集散中心自會判斷是否能送到對方的家中。

我們是想通過這個比喻說明,無論哪台計算機、哪台網路裝置,它們都無法全面掌握網際網路中的細節。

3、客戶端的網路層不用關係應用層或者傳輸層的東西,主要做的是通過查詢路由表確定如何到達伺服器,期間可能經過多個路由器,這些都是由路由器來完成的工作,我不作過多的描述,無非就是通過查詢路由表決定通過那個路徑到達伺服器。

現在假設如果我們在客戶端(客戶端)瀏覽器中輸入乙個url而其url為要訪問的伺服器(伺服器),下面詳細分析客戶端為了訪問伺服器而執行的一系列關於協議的操作:

1、客戶端瀏覽器通過dns解析到**的ip位址22x.18x.xx.01,通過這個ip位址找到客戶端到伺服器的路徑。客戶端瀏覽器發起乙個http會話到22x.18x.xx.01,然後通過tcp進行封裝資料報,輸入到網路層。

2、在客戶端的傳輸層,把http會話請求分成報文段,新增源和目的埠,如伺服器使用80埠監聽客戶端的請求,客戶端由系統隨機選擇乙個埠如5000,與伺服器進行交換,伺服器把相應的請求返回給客戶端的5000埠。然後使用ip層的ip位址查詢目的端。

3、客戶端的網路層不用關係應用層或者傳輸層的東西,主要做的是通過查詢路由表確定如何到達伺服器,期間可能經過多個路由器,這些都是由路由器來完成的工作,我不作過多的描述,無非就是通過查詢路由表決定通過那個路徑到達伺服器。

4、客戶端的鏈路層,包通過鏈路層傳送到路由器,通過鄰居協議查詢給定ip位址的mac位址,然後傳送arp請求查詢目的位址,如果得到回應後就可以使用arp的請求應答交換的ip資料報現在就可以傳輸了,然後傳送ip資料報到達伺服器的位址。

參考:《**http》——上野 宣

在瀏覽器位址列中輸入URL後發生了什麼

瀏覽器通過ip路由到你的服務,在tcp3次握手和伺服器建立連線,通過tcp協議開始訪問你的web伺服器,web伺服器得到請求後,開始提供服務,接受請求,之後通過response返回響應給瀏覽器.1.查詢ip位址 2.建立tcp連線,接入伺服器 3.瀏覽器發起http請求 4.伺服器後台操作並作出ht...

在瀏覽器位址列輸入URL,按下回車後內部處理過程

這是一道面試會經常問的問題,平時雖然很常見的操作,但是 其底層原理,可能並不是一件簡單的事情,於是我從各處蒐羅整理下全過程,在這裡做分享。第一步 瀏覽器輸入網域名稱 例如輸入 www.csdn.net 瀏覽器會把輸入的網域名稱解析成對應的ip,其過程如下 3.查詢路由器快取 如果1,2步都查詢無果,...

瀏覽器位址列輸入url到頁面顯示

1 瀏覽器通過dns網域名稱解析到ip位址 2 瀏覽器通過tcp協議建立到伺服器的tcp連線 tcp三次握手 3 客戶端 瀏覽器 向web伺服器端傳送http協議包,請求伺服器裡的資源文件 4 伺服器向客戶端傳送http協議應答包 5 客戶端和伺服器斷開連線 tcp四次揮手 客戶端開始解析處理htm...