學完計算機網路的協議棧,對web頁面請求的完成歷程做一次總結。想象一下,當我們在瀏覽器上輸入乙個url位址,到頁面呈現出來的過程中,網路上都發生了什麼?這個過程絕對很有趣。
現在假設我在校園網內,通過有線接入校園網的一台交換機,開始我的衝浪之旅。下面我將描述自己在衝浪過程中的發現。其中,交換機連線了學校的對外的出口路由器。假設dhcp伺服器執行在路由器中。網路拓撲如下:
首先,為了上網,我必須告訴網路我是誰,只有網路知道我是誰,它才會允許我進入它的家門。所以,我的筆記本首先需要乙個ip位址。
1) 如果我設定了動態獲取ip,那麼我的筆記的作業系統將生成乙個dhcp請求報文(應用層),並將這個報文放入乙個udp報文段(運輸層)注意,是udp報文段,這個udp報文段主要攜帶了:
然後udp報文段被放入乙個ip資料報(網路層),ip資料報新增了以下資訊:
2)包含dhcp請求的ip資料報將被放入乙太網幀(資料鏈路層),具有如下資訊:
3) 包含dhcp請求的廣播乙太網幀是乙個從我的筆記本傳送到交換機的幀,該交換機在它的所有出口廣播這個幀,出口包括連線到路由器的埠(這個很重要)。
4)路由器在它的與交換機直連的埠收到了該廣播乙太網幀,開始解析該幀,抽取出ip資料報,該資料報的目的ip位址是乙個特殊位址(廣播ip),因為該資料報應該交付給上層協議處理,因為該資料報的載荷(udp報文段)被分解向上提交給傳輸層,傳輸層中抽取出了dhcp請求交付給應用層,因此dhcp伺服器便收到了該dhcp請求。
5)dhcp伺服器為此生成乙個dhcp ack報文,該報文包括以下資訊:
該ac報文被移交給運輸層,封裝成udp報文段,再移交給網路層,封裝成ip資料報,最後移交給資料鏈路層,封裝成乙太網幀;乙太網幀的目的mac位址便是我筆記本的mac位址,源mac位址便是接收乙太網幀的路由器埠的mac位址。
6)包含dhcp ack的乙太網幀由路由器傳送給了交換機。因為交換機是自學習的,並且之前已經收到過了包含dhcp的乙太網幀,因此記錄了的筆記本的mac位址,因此它知道向哪個埠**收到的包含dhcp ack的乙太網幀。
7)當該乙太網到達我的筆記本時,從協議棧的資料鏈路層到應用層,層層抽離,最後得到ip位址、dns伺服器的位址、預設閘道器。現在我的筆記本已經拿到看足以讓我開始衝浪的網路配置了。
現在開始我要開始代開瀏覽器,來訪問網頁了,加入我輸入的url為www.google.com。然後一串網路事件又發生了。我的本本將與google伺服器進行通訊,我們知道通訊是兩個程序之間的相互傳送報文故事,而且程序是通過套接字(socket)介面向網路傳送和從網路接收報文的。
為了生成套接字,需要制定目的主機的ip位址,也就是google.com的ip位址,目前我們只知道www.google.com,也就是只知道網域名稱,為了傳送http請求(傳送ip資料報),還需要知道google.com的ip位址,因為需要一次網域名稱/ip位址轉換,也就是dns。
8)為此,我的本本作業系統生成了乙個dns查詢報文,該報文含有如下資訊:
9)隨後就是對該運輸層報文,經有網路層封裝成ip資料報,指定了dns伺服器所在的ip位址;然後就是乙太網幀。該幀將被傳送給我們已經拿到的預設閘道器路由器。
10)事情看起來好像就可以了,但仔細想想,我們雖然知道了預設閘道器的ip位址,但是不知道它的mac位址啊,沒有mac位址,就沒有組裝乙太網幀了。為了我的本本還需要獲取該ip位址。我們知道arp協議:arp協議是已知ip位址找mac位址的協議。因此將經過類似上面的dhcp請求,傳送乙個arp查詢報文,最終經過類似的周折,得到預設閘道器路由器的mac位址,這下才可以組裝我們的即將傳送的乙太網幀。
11)得到預設閘道器的mac位址後,我的本本就傳送了dns查詢請求的乙太網幀,該幀當然是會達到預設閘道器,而預設閘道器發現其目的ip是dns伺服器的ip位址,即根據**表,向相應的埠**。
12)經過類似的路由**,該dns查詢請求的乙太網幀進入isp,在isp內將使用域內協議(如rip、ospf等)和域間協議bgp,最終到達dns伺服器,伺服器自下而上得到dns查詢請求報文,得到www.google.com,然後查詢dns記錄,得到對應的ip位址,然後傳送乙個返回的dns 響應報文,通過封裝成udp報文段,再到ip資料報,再到乙太網幀,最終到達我的本本。然後我的本本就可以正式發起對www.google.com的請求啦,有了ip位址之後,順利組裝乙太網幀,發給預設閘道器。(注意,我們並不需要知道google.com的mac位址啊,只需要預設閘道器的)
13)有了ip位址之後,客戶端程序生成tcp套接字,向www.google.com發起http請求。
14)生成套接字時,首先需要與google.com伺服器進行tcp三次握手,建立tcp連線。
15)建立tcp連線之後,就可以開始傳送請求了。http get請求報文段被放入套接字,然後移交給運輸層、網路層、資料鏈路層,經過乙太網的路由**到達google.com伺服器。
16)google.com伺服器,傳送響應報文,blablabla,到達我的本本,然後就有網頁顯示了。
過**的是山路十八彎~
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資料報放置在鏈路層幀中,該鏈路適合將學校路由器連線到最左邊 ...