我們假定bob啟動他的便攜機,然後將其用一根乙太網電纜連線到學校的乙太網交換機,交換機又與學校的路由器相連,如下圖所示:
學校的這台路由器與乙個isp連線,本例中isp為comcast.net。在本例中,comcast.net為學校提供了dns服務;所以,dns伺服器駐留在comcast網路中而不是學校網路中。我們將假設dhcp伺服器執行在路由器中,就像常見情況那樣。
當bob首先將其便攜機與網路相連時,沒有ip位址他就不能做任何事情,所以,bob的便攜機所採取的乙個網路相關的動作是執行dhcp協議,以從本地dhcp伺服器獲得乙個ip位址以及其他資訊。
bob便攜機上的作業系統生成乙個dhcp請求報文,並將這個報文放入具有目的埠67(dhcp伺服器)和源埠68(dhcp客戶)的udp報文段中,該udp報文段則被放置在乙個具有廣播ip目的地位址(255.255.255.255)和源ip位址0.0.0.0的ip資料報中,因為bob的便攜機還不具有乙個ip位址。
包含dhcp請求報文的ip資料報則被放置在乙太網幀中。該乙太網幀具有目的mac位址ff:ff:ff:ff:ff:ff,使該幀將廣播到與交換機連線的所有裝置(如果順利的話也包括dhcp伺服器)中;該幀的源mac位址是bob便攜機的mac位址00:16:d3:23:68:8a
包含dhcp請求的廣播乙太網幀是第乙個由bob便攜機傳送到乙太網交換機的幀。該交換機在所有的出埠廣播入幀,包括連線到路由器的埠。
路由器在它的具有mac位址00:22:6b:45:1f:1b的介面接收到該廣播乙太網幀,該幀中包含dhcp請求,並且從該乙太網幀中抽取出ip資料報。該資料報的廣播ip目的位址指示了這個ip資料報應當由在該節點的高層協議處理,因此該資料報的載荷(乙個udp報文段)被分解向上到達udp,dhcp請求報文從此udp報文段中抽取出來。此時dhcp伺服器有了dhcp請求報文
我們假設執行在路由器中的dhcp伺服器能夠以cidr塊68.85.2.0/24分配ip位址,並且假設dhcp伺服器分配位址68.85.2.101給bob的便攜機。dhcp伺服器生成包含這個ip位址以及dns伺服器的ip位址(68:87:71:226)、預設閘道器路由器的ip位址(68.85.2.1)和子網塊(68.85.2.0/24)(等價為「網路掩碼「)的乙個dhcp ack報文。該dhcp報文被放入乙個udp報文段中,udp報文段被放入乙個ip資料報中,ip資料報再被放入乙個乙太網幀中。這個乙太網幀的源mac位址是路由器連到歸屬網路時介面的mac位址(00:22:6b:45:1f:1b),目的mac位址是bob便攜機的mac位址(00:16:d3:23:68:8a)
包含dhcp ack的乙太網幀由路由器傳送給交換機。因為交換機是自學習的,並且先前從bob便攜機收到(包含dhcp請求的)乙太網幀,所以該交換機知道定址到00:16:d3:23:68:8a的幀僅從通向bob便攜機的輸出埠**
bob便攜機接收到包含dhcp ack的乙太網幀,從該乙太網幀中抽取ip資料報、從ip資料報中抽取udp報文段,從udp報文段抽取dhcp ack報文。bob的dhcp客戶則記錄下它的ip位址和它的dns伺服器的ip位址。它還在其ip**表中安裝預設閘道器的位址。bob便攜機將向該預設閘道器傳送目的位址為其子網68.85.2.0/24以外的所有資料報。此時,bob便攜機已經初始化好它的網路元件,並準備開始處理web網頁獲取。
當bob將www.google.com的url鍵入其web瀏覽器時,他開啟了一長串事件,這將導致谷歌主頁最終顯示在其web瀏覽器上。bob的web瀏覽器通過生成乙個tcp套接字開始了該過程,套接字用於向www.google.com傳送http請求。為了生成該套接字,bob便攜機將需要知道www.google.com的ip位址。因此在這裡用到了dns協議。
bob便攜機上的作業系統生成乙個dns查詢報文,將字串www.google.com放入dns報文的問題段中。該dns報文則放置在乙個具有53號(dns伺服器)目的埠的udp報文段中。該udp報文段則被放入具有ip目的位址68.87.71.226(在第5步中dhcp ack返回的dns伺服器位址)和源ip位址68.85.2.101的ip資料報中。
bob便攜機則將包含dns請求報文的資料報放入乙個乙太網幀中。該幀將傳送(在鏈路層定址)到bob學校網路中的閘道器路由器。然而,即使bob便攜機經過上述第5步中的dhcp ack報文知道了學校閘道器路由器的ip位址(68.85.2.1),但仍不知道該閘道器路由器的mac位址。為了獲得該閘道器路由器的mac位址,bob便攜機將需要使用arp協議
bob便攜機生成乙個具有目的ip位址68.85.2.1(預設閘道器)的arp查詢報文,將該arp報文放置在乙個具有廣播目的位址(ff:ff:ff:ff:ff:ff)的乙太網幀中,並將交換機傳送該乙太網幀,交換機將該幀交付給所有連線的裝置,包括閘道器路由器
閘道器路由器在通往學校網路的介面上接收到包含該arp查詢報文的幀,發現在arp報文中目標ip位址68.85.2.1匹配其介面的ip位址。閘道器路由器因此準備乙個arp回答,指示它的mac位址 00:22:6b:45:1f:1b對應ip位址68.85.2.1。它將arp回答放在乙個乙太網幀中,其目的位址為00:16:d3:23:68:8a(bob便攜機)。並向交換機傳送該幀,再由交換機將該幀交付給bob便攜機。
bob便攜機接收到包含arp回答報文段幀,並從arp回答報文中抽取閘道器路由器的mac位址(00:22:6b:45:1f:1b)
bob便攜機現在能夠使包含dns查詢的乙太網定址到閘道器路由器的mac位址。注意到在該幀中的ip資料報具有ip目的位址68.87.71.226(dns伺服器),而該幀具有目的位址00:22:6b:45:1f:1b(閘道器路由器)。bob便攜機向交換機傳送該幀,交換機將該幀交付給閘道器路由器。
閘道器路由器接收到該幀並抽取包含dns查詢的ip資料報。路由器查詢該資料報的目的位址(68.87.71.226),並根據其**表決定該資料報應當傳送到上圖中的comcast網路中最左邊的路由器。ip資料報放置在鏈路層幀中,該鏈路適合將學校路由器連線到最左邊comcast路由器,並且該幀經這條鏈路傳送
在comcast網路中最左邊的路由器接收到該幀,抽取ip資料報,檢查該資料報的目的位址(68.87.71.226),並根據其**表確定出介面,經過該介面朝著dns伺服器**資料報,而**表已根據comcast的域內協議(如rip、ospf或is-is)以及網際網路的域間協議bgp所填寫
最終包含dns查詢的ip資料報到達了該dns伺服器。dns伺服器抽取出dns查詢報文,在它的dns資料庫中查詢名字www.google.com,找到包含對應www.google.com的ip位址(64.223.169.105)的dns源記錄。前面說過這種快取資料源於google.com的權威dns伺服器。該dns伺服器形成了乙個包含這種主機名到ip位址對映的dns回答報文,將該dns回答報文放入udp報文段中,該報文段放入定址到bob的便攜機(68.85.2.101)的ip資料報中。該資料報將通過comcast網路反向**到學校的路由器,並從這裡經過乙太網交換機到bob便攜機。
bob便攜機從dns報文抽取出伺服器www.google.com的ip位址。最終,在大量工作後,bob便攜機此時準備接觸www.google.com伺服器。
既然bob便攜機有了www.google.com的ip位址,它能夠生成tcp套接字,該套接字將用於向www.google.com傳送http get報文/當bob生成tcp套接字時,在bob便攜機中的tcp必須首先與www.google.com中的tcp執行三次握手。bob便攜機因此首先生成乙個具有目的埠號80(針對http的)tcp syn報文段,將該tcp報文段放置在具有目的ip位址64.233.169.105(www.google.com)的ip資料報中,將該資料報放置在mac位址為00:22:6b:45:1f:1b(閘道器路由器)的幀中,並向交換機傳送該幀
在學校網路、comcast網路和谷歌網路中的路由器朝著www.google.com**包含tcp syn的資料報,使用每台路由器中的**表,如前面步驟14-16那樣。注意支配分組經comcast和谷歌網路之間域間鏈路**的路由器**表項,是由bgp協議決定的
最終,包含tcp syn的資料報到達www.google.com。從資料報抽取出tcp syn報文並分解到與埠號80相聯絡的歡迎套接字。對於谷歌http伺服器和bob便攜機之間的tcp連線生成乙個連線套接字。產生乙個tcp synack報文段,將其放入向bob便攜機定址的乙個資料報中,最後放入鏈路層幀中,該鏈路適合將www.google.com連線到其第一跳路由器
包含tcp synack報文段的資料報通過谷歌、commast和學校網路,最終到達bob便攜機的乙太網卡。資料報在作業系統中分解到步驟18生成的tcp套接字,從而進入連線狀態。
借助於bob便攜機上的套接字,現在(最終!)準備向www.google.com傳送位元組了,bob瀏覽器生成包含要獲取的url的http get報文。http get報文則寫入套接字,其中get報文成為乙個tcp報文段的載荷。該tcp報文段放置進乙個資料報中,並交付到www.google.com,如前面步驟18-20所述。
在www.google.com的http伺服器從tcp套接字讀取http get報文,生成乙個http響應報文,將請求的web頁內容放入http響應體中,並將報文傳送進tcp套接字中。
包含http回答報文的資料報通過谷歌、commast和學校網路**,到達bob便攜機。bob的web瀏覽器程式從套接字讀取http響應,從http響應體中抽取web網頁的html,並終於(最終!)顯示了web網頁。
Web頁面請求歷程
osi七層參考模型 訪問www.google.com過程 計算機通過乙太網電纜連線到學校的乙太網交換機,交換機與學校的路由器相連。學校的路由器與乙個isp連線 comcast.net dns伺服器駐留在comcast網路中。1 計算機上的作業系統生成乙個dhcp請求報文,並將這個報文放入具有目的埠6...
Web頁面請求的歷程(一)
頁面。比如,一名叫 bobweb 頁面 比如說 www.google.com 的主頁 步驟如下 一 準備 dhcp 動態主機配置協議 udp ip和乙太網 我們假定bob 啟動它的便攜機,然後將其用一根乙太網電纜連線到學校的乙太網交換機,交換機又與學校的路由器相連。學校的這台路由器與乙個 isp連線...
Web頁面請求的歷程(三)
三 仍在準備 域內路由選擇到dns 伺服器14 閘道器路由器接收該幀並抽取包含 dns查詢的 ip資料報。路由器查詢該資料報的目的位址 68.87.71.226 並根據其 表決定該資料報應該傳送到 concast 網路中最左邊的路由器。ip資料報放置在鏈路層幀中,該鏈路適合將學校路由器連線到最左邊 ...