訪問網頁過程

2021-07-10 23:08:23 字數 1565 閱讀 6553

輸入位址後如何訪問上乙個網頁?

先介紹幾個基本的知識點:

dns:

通過主機名,最終得到該主機名對應的ip位址的過程叫做網域名稱解析(或主機名解析)。

dns是典型的應用層協議,埠號53,獨特的地方在於在傳輸層,可以使用tcp和udp傳送資料!

為什麼dns既可以使用tcp也可以使用udp?

可以從2方面來理解

原因之一:

dns報頭:

其中,兩個位元組的標誌部分具體如下:

qr(1位元):查詢/響應的標誌位,1為響應,0為查詢。

opcode(4位元):定義查詢或響應的型別(若為0則表示是標準的,若為1則是反向的,若為2則       是伺服器狀態請求)。

aa(1位元):授權回答的標誌位。該位在響應報文中有效,1表示名字伺服器是許可權伺服器

tc(1位元):截斷標誌位。1表示響應已超過512位元組並已被截斷

rd(1位元):該位為1表示客戶端希望得到遞迴回答

ra(1位元):只能在響應報文中置為1,表示可以得到遞迴響應。

zero(3位元):不說也知道都是0了,保留字段。

rcode(4位元):返回碼,表示響應的差錯狀態,通常為0和3,各取值含義如下:

tc標誌,僅當dns報文使用udp服務時使用。因為udp資料報有長度限制,所以過長的dns報文將被截斷。1表示dns報文超過512位元組,並被截斷。

也就是說當使用udp的時候,如果dns資料報超過了512b ,那麼後面的部分就被截斷了。由於tc位是僅在使用udp協議的時候用,對於tcp沒有影響

原因之二:

dns的規範規定了2種型別的dns伺服器,乙個叫主dns伺服器,乙個叫輔助dns伺服器。在乙個區中主dns伺服器從自己本機的資料檔案中讀取該區的dns資料資訊,而輔助dns伺服器則從區的主dns伺服器中讀取該區的dns資料資訊。當乙個輔助dns伺服器啟動時,它需要與主dns伺服器通訊,並載入資料資訊,這就叫做區傳送(zone transfer)。

也就是說在主dns伺服器與輔助dns伺服器進行同步的時候,需要用tcp協議,為什麼呢?個人理解是因為tcp是可靠的面向連線的,dns伺服器儲存中的資料 不能出錯。這也是使用tcp的原因。

dns使用tcp 或者udp 的場合?

通俗地講,就是dns伺服器之間傳輸時使用tcp,而客戶端與dns伺服器之間傳輸時用的是udp。

2 arp(位址解析協議)

只知道了ip位址是不行的,ip位址能告訴我們將要訪問的主機位址,能夠使得ip資料報完整,但是當從ip層向下提交給資料鏈路層的時候,就需要mac位址,如何得知mac位址呢?就需要arp協議啦!

arp:是根據ip位址獲取實體地址的乙個tcp/ip協議。這一部分的詳細內容會近期在另一篇文章中說。

好了,有了前面的知識鋪墊,下面來進行訪問網頁的過程:

dns的過程:

瀏覽器訪問網頁過程

在瀏覽器輸入 最後,瀏覽器呈現出相應網頁,這個過程究竟發生了什麼?第一步,解析網域名稱,找到主機ip 1 瀏覽器會快取dns一段時間,一般2 30分鐘不等。如果有快取,直接返回ip,否則下一步。2 快取中無法找到ip,瀏覽器會進行乙個系統呼叫,查詢hosts檔案。如果找到,直接返回ip,否則下一步。...

瀏覽器訪問網頁的簡要過程

我們以一張為例,進行講解 首先 對圖中的圖形進行解釋 圖中資料均為假設值 a,b,c,d,e,f,g分別是路由器,均存在兩個以上的mac位址 路由器g左邊的藍色長方體為交換器,其ip位址和子網掩碼分別是15.0.0.0和255.0.0.0 訪問請求過程 客戶端生成乙個資料報 首部 15.0.0.2 ...

python 網頁訪問

1 在python3中只有urllib乙個庫,這裡面整合了原來的urllib和urllib2 2import urllib.request34 定義乙個request物件,傳入乙個url完整位址,並用request函式。5 request urllib.request.request 67 開啟ur...