當你隨便瀏覽乙個網頁時,你知道背後做了多少工作嗎?

2021-10-07 19:25:34 字數 2955 閱讀 5043

假定小a在某大學內讀書,當他將便攜機(膝上型電腦)通過網線連線到宿舍網口,該網口與學校的乙太網交換機相連,交換機又與學校的路由器相連。

學校的這台路由器與乙個isp相連,這裡假定為comcast.net;comcast.net為學校提供了dns服務,即dns伺服器駐留在comcast網路中而不是學校網路中;dhcp仍執行在學校的路由器上。

pc的作業系統生成乙個dhcp請求報文,將這個報文放入具有目的地埠67(dhcp伺服器)和源埠68(dhcp客戶)的udp報文段;該報文段被放置在乙個具有廣播ip目的地位址(255.255.255.255)和源ip位址(0.0.0.0)的ip資料報中。

該ip資料報被放置在乙太網幀中,該乙太網幀具有的目的mac位址為ff:ff:ff:ff:ff:ff,使該幀將廣播到與交換機連線的所有裝置中(其中包括dhcp伺服器)。該幀的源mac位址是小a的pc固有的mac位址00:18:f5:54:81:a8。

路由器在它的固有mac位址00:25:b4:41:f1:c2的介面接收到該廣播乙太網幀,該幀中包含dhcp請求,並且從該乙太網幀中抽取出ip資料報。該ip資料報的載荷(udp)報文被分解,傳輸到運輸層udp協議,dhcp請求報文從此udp報文段中抽取出來。此時dhcp伺服器有了dhcp請求報文。

假定執行在路由器中的dhcp伺服器能夠cidp塊68.85.4.0/24分配ip位址。假定dhcp伺服器分配位址68.85.4.35給小a的pc。dhcp伺服器生成包含這個ip位址以及dns伺服器的ip位址(68.87.71.101)、預設閘道器路由器的ip位址(68.85.4.1)和子網塊(68.85.4.0/24)(等價為"網路掩碼")的乙個dhcp ack報文段,以同樣的分層方式打包到乙個乙太網幀中,這個乙太網幀的源mac位址是路由器連到歸屬網路時介面的mac位址(00:25:b4:41:f1:c2),目的mac位址是小a的pc機mac位址(00:18:f5:54:81:a8)。

小a的pc機接收到包含dhcp ack的乙太網幀,抽取出dhcp ack報文。pc機的dhcp客戶記錄下ip位址和dns伺服器的ip位址。它還在其ip**表中安裝預設閘道器的位址。小a的pc機向該預設閘道器傳送目的位址為其子網68.85.4.0/24以外的所有資料報。至此,pc機已經初始化好它的網路元件。

小a的pc機作業系統生成乙個dns查詢報文,將字串www.baidu.com放入dns報文的問題段中。該dns報文放置在乙個具有53號目的埠得udp報文中。該dup報文段則被放入具有ip目的位址68.87.71.101和源ip位址68.85.4.35的ip資料報中。

小a的pc機將包含dns請求報文的資料報放入乙個乙太網幀中,該幀將傳送到學校網路中的閘道器路由器。然後此時小a的pc機並不知道學校閘道器路由器的mac位址(因為乙太網幀的傳輸所需要的是mac位址而非ip位址),為了獲取該閘道器路由器的mac位址,pc機需要使用arp協議。

小a的pc機生成乙個具有目的ip位址為68.85.4.1(預設閘道器)的arp查詢報文,將該arp報文放置在乙個具有廣播目的位址(ff:ff:ff:ff:ff:ff)的乙太網幀中,並向交換機傳送該乙太網幀,交換機將該幀傳送給所有連線的裝置,包括閘道器路由器。

在閘道器路由器接收到該幀後,它準備乙個arp應答,指示它的mac位址為00:25:b4:41:f1:c2對應ip位址68.85.4.1。它將arp應發放入乙個乙太網幀中,其目的位址為小a的pc機的mac位址00:18:f5:54:81:a8。

小a的pc機收到該幀後,最終能夠將dns查詢的乙太網幀定址到閘道器路由器的mac位址。注意:此時該pc機發出的dns查詢報文的mac位址為閘道器路由器位址00:25:b4:41:f1:c2,而目的ip位址為dns伺服器ip位址68.87.71.101。

閘道器路由器接收到該幀並抽取包含dns查詢的ip資料報。路由器查詢該資料報的目的位址(68.87.71.101),並根據其**表決定該資料報應該傳送到對應的下一跳路由器,該路由器為連線dns伺服器的路由器。

在連線dns伺服器的路由器接收到該幀後,抽取ip資料報,檢查該資料報的目的位址(68.87.71.101),並根據其**表確定出介面,經過該介面朝著dns伺服器**資料報,該**表已根據comcast的域內協議(與rip、ospf或is-is)以及網際網路的域間協議bgp所填寫。

最後包含dns查詢的ip資料報到達了dns伺服器。dns伺服器抽出dns查詢報文,在它的dns資料庫中查詢名字www.baidu.com,找到對應包含www.baidu.com的ip位址202.108.22.5的dns源記錄。該dns伺服器形成了乙個包含主機名導ip位址對映的dns回答報文,將該dns回答報文放入udp報文段中送到小a的pc機上。

小a的pc機從dns回答報文中抽取出伺服器www.baodu.com的ip位址。到這裡,小a的pc機終於準備接觸www.baidu.com的伺服器。

小a的pc機有了www.baidu.com的ip位址後,它能夠生成tcp套接字,該套接字用於向www.baidu.com傳送http get報文。當小a的pc機生成tcp套接字時,作業系統的tcp必須首先與www.baidu.com中的tcp執行三次握手。因此pc機首先生成乙個具有目的埠80(針對http)的tcp syn報文段,將該tcp報文段放置在具有目的ip位址202.108.22.5的ip資料報中,將該資料報放置在mac位址為00:25:b4:41:f1:c2(閘道器路由器)的幀中,並向交換機傳送該幀。

該幀沿著學校網路、comcast網路和谷歌網路中的路由器朝著www.baidu.com**包含tcp syn的資料報,使用每台路由器中的**表。

借助於小a的pc機上的套接字,現在終於準備向www.baidu.com傳送位元組了。小a的瀏覽器生成包含要獲取的url的http get報文。http get報文則寫入套接字,其中get報文成為乙個tcp報文段的載荷,之後通過該套接字傳送到www.baidu.com的http伺服器端。

在www.baidu.com的http伺服器從tcp套接字中讀取http get報文,生成乙個http響應報文,將請求的web內容放入http響應體中,並將報文傳送進tcp報文段中。

歡迎關注【oaoa】

使用者在瀏覽網頁時,主要經歷的乙個過程

使用者在瀏覽網頁時,主要經歷的乙個過程 簡稱概況 找到目的地 進行連線 傳輸返回內容 假設用瀏覽器輸入 如回車訪問後 1 找到目的地 找到目的地就是找到它的ip位址 如果是網域名稱,瀏覽器會先從host檔案中獲取到對應的ip位址,如果不能,就會使用dns協議來獲取ip位址 在dns協議中,pc會向你...

判斷乙個網頁是否適合手機瀏覽

需要知道乙個網頁是否適合手機瀏覽,想了點方案。1.網域名稱 二 網域名稱中包含有m 3g wap mobile 的算是。當然像 mobile也有坑爹的 比如像mobile.qq.com,mobile.yahoo.com 2.網頁的dtd xhtml mp 或 wap 但是wap並不一定適合手機瀏覽,...

判斷乙個網頁是否適合手機瀏覽

需要知道乙個網頁是否適合手機瀏覽,想了點方案。1.網域名稱 二 網域名稱中包含有m 3g wap mobile 的算是。當然像 mobile也有坑爹的 比如像mobile.qq.com,mobile.yahoo.com 2.網頁的dtd xhtml mp 或 wap 但是wap並不一定適合手機瀏覽,...