當瀏覽器輸入url後進行的操作

 轉載http://blog.jobbole.com/84870/


首先,PC要做域名解析,會向DNS服務器發送請求

          爲了發送請求,而DNS服務器一般不和你在同一子網裏面,所以首先要把數據包發給網關爲了把數據包發給網關,要知道網關的MAC地址,所以先廣播ARP數據包,得到網關的MAC地址,你就可以把目的IP填成DNS服務器地址,目的MAC填網關地址。你的數據包被網關轉出去以後,就會通過IP路由協議轉發到DNS服務器它會回覆你新浪的IP地址

ARP:

要想發送ARP廣播,我們需要有一個目標IP地址,同時還需要知道用於發送ARP廣播的接口的Mac地址。

·        首先查詢ARP緩存,如果緩存命中,我們返回結果:目標IP = MAC

如果緩存沒有命中:

·        查看路由表,看看目標IP地址是不是在本地路由表中的某個子網內。是的話,使用跟那個子網相連的接口,否則使用與默認網關相連的接口。

·        查詢選擇的網絡接口的MAC地址

·        我們發送一個二層ARP請求

傳輸層:路由協議

UDP:

  向DNS服務器發送UDP請求包,如果響應包太大,會使用TCP如果本地/ISPDNS服務器沒有找到結果,它會發送一個遞歸查詢請求,一層一層向高層DNS服務器做查詢,直到查詢到起始授權機構,如果找到會把結果返回


在其中用到了使用了UDP,IP路由協議,ARP協議。

你得到新浪的IP之後,就回直接把HTTP請求封裝到TCP數據包中通過IP包發送給網關-路由器-新浪的服務器,新浪再回復你,進行交互。


其中參與交互的設備可能有
網卡-你家的交換機(或者路由器)-ISP網關(或者路由器)-核心網路由器-DNS服務器與新浪的主機

 

服務器端:

服務器把請求拆分爲以下幾個參數:

HTTP請求方法(GET, POST, HEAD, PUT 和 DELETE )。在訪問Google這種情況下,使用的是GET方法

域名:google.com

請求路徑/頁面:/ (我們沒有請求google.com下的指定的頁面,因此 / 是默認的路徑)

服務器驗證其上已經配置了google.com的虛擬主機

服務器驗證google.com接受GET方法

服務器驗證該用戶可以使用GET方法(根據IP地址,身份信息等)

如果服務器安裝了 URL 重寫模塊(例如 Apache 的 mod_rewrite 和 IIS 的 URL Rewrite),服務器會嘗試匹配重寫規則,如果匹配上的話,服務器會按照規則重寫這個請求

服務器根據請求信息獲取相應的響應內容,這種情況下由於訪問路徑是“/” ,會訪問首頁文件。(你可以重寫這個規則,但是這個是最常用的)

服務器會使用指定的處理程序分析處理這個文件,比如假設Google使用PHP,服務器會使用PHP解析index文件,並捕獲輸出,把PHP的輸出結果給請求者

 

瀏覽器端

在解析完HTML之後,瀏覽器和客戶端會重複上面的過程,直到HTML頁面引入的所有資源(圖片,CSSfavicon.ico等等)全部都獲取完畢,。如果HTML引入了 www.google.com 域名之外的資源,瀏覽器會回到上面解析域名那一步,按照下面的步驟往下一步一步執行,請求中的 Host頭部會變成另外的域名。

 

3次

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