完整的WEB請求流程解釋

完整的web請求流程:(文章內容較多,請耐心閱讀!!!)

在瀏覽器輸入請求的域名-dns解析-----向指定服務器進行三次握手----傳遞需要請求的數據給服務器-----服務器解析進行返回

我們來詳細捋一捋上述幾個過程

一、瀏覽器與DNS解析的過程

1.瀏覽器地址欄輸入請求的鏈接後,瀏覽器首先檢查自身的DNS緩存是否存在解析記錄

瀏覽器自身查詢dns緩存:

firefox:

配置含義:

network.dnsCacheEntries:緩存的數量

network.dnsCacheExpiration:dns緩存的時間

network.dnsCacheExpirationGracePeriod:dns緩存的時間,設置爲0表示不緩存

chrome:

查看dns設置:chrome://net-internals/#dns

輸入chrome://chrome-urls即可查看chrome所有的配置界面

2.瀏覽器優先在自身瀏覽器的dns緩存中進行查找,但是如果一個域名的dns解析結果有多個的話,chrome瀏覽器優先向第一個ip發起http請求,不通則依次向下。瀏覽器緩存沒有找到瀏覽器會搜索操作系統自身的dns緩存。

windows的dns緩存:

windows下的host文件的所在地:c:\windows\system32\drivers\etc

查詢dns緩存命令:ipconfig  /displaydns

強制刷新(清空)緩存:ipconfig  /flushdns (可能需要多執行幾次。重啓電腦能徹底清除)

linux的dns緩存:

現在很多Linux發行版都沒有內置DNS本地緩存,linux不像windows那樣可以使用ipconfig /flushdns來刷新,在linux下無需刷新,因爲本身沒有緩存,當然,如果非要緩存刷尋,可以安裝nscd,然後刷新這個守護進程;

Ubuntu:

apt-get install -y nscd

CentOS:

yum install -y nscd

使用:

service nscd restart

3.如果操作系統緩存也沒有,瀏覽器發起DNS調用,進入DNS解析過程。

DNS解析過程

例如查詢baidu.com的ip

1.主機將查詢發送至本地dns服務器(使用windows服務器搭建的dns服務器)

2.本地dns不包含此主機,向上遊發送查詢(如果第一層上游沒有,會依次向上直到根DNS服務器,在此不做贅述)

3.上游DNS返回baidu.com的TLD的ip列表。

4.本地dns向TLD列表中的一個主機發送dns查詢

5.TLD返回目的主機對應的權威dns地址。

6.本地dns向該權威dns發送查詢報文

7.目的主機的權威dns返回目的主機的ip地址

注意:由以上過程可見,一條dns查詢可能會產生7條dns報文,採用緩存技術,可以減少dns查詢鏈的長度。

DNS緩存

緩存原理:

在一個請求鏈中,當某個DNS服務器接收一個DNS應答時,它能夠將信息緩存在本地存儲器中。當下次查詢時,就能避免到根dns,TLD和權威dns的查詢。由於主機和主機名的映射不是永久的,DNS緩存將在一段時間後被丟棄。

以上就是瀏覽器和dns解析的關係和解釋,如果有不同意見或者有更好的理解方式和回答。歡迎留言批評指點!!!

 

二、向指定的服務器進行三次握手的操作(TCP三次握手)

我們現在找到了我們要向那臺服務器進行通信了,那麼怎麼進行通信呢?這裏我不解釋複雜的內容,只做簡單介紹。複雜的介紹我會單獨在網絡裏面進行解釋。

找到了指定服務器的IP地址,現在我們要向他發起請求,這個請求互相確認建立通道後我們才能正式發送我們需要的請求數據請求服務器回覆。那麼舉個例子解釋:

三次握手:

喂,你聽得到嗎?

我聽得到啊,你聽得到我嗎?

我能聽到你,今天balabalabala.....

具體的見網絡裏的解釋。那麼通道建立了我們開始發送我們的請求。服務器接收,返回對應請求的數據給我們。

三.服務器通過建立的通道返回數據給我們,我們的瀏覽器解析對應的文件,將精美的片子展現給你,而不是一串亂碼!!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章