網絡通信過程-非常詳細

在網絡上找來很久了,終於在今天與51cto的兄弟們予以分享

請用心去閱讀一下文檔,謝謝


 Internet中一臺計算機訪問Web服務器的全部過程,從中可以窺探Internet是如何工作的,本講中會涉及到網絡(或Internet)的專業術語、概念及Internet的重要內容,在以後的講座中我們會詳細講解。本講主要是想讓大家明網絡是怎樣交付數據、尋址等,即Internet的基本工作原理。

  一、網絡環境說明


圖一 

  本次網絡通信試驗採用Packet Tracer 5.0思科網絡模擬軟件。有關Packet Tracer 5.0的使用與技巧請參考我的相關博文。此次模擬環境中使用5個路由器連接兩個以太網,其中192.168.2.0/24網段爲服務器,192.168.2.1爲DNS服務器,192.168.2.2爲Web服務器,域名爲www.senya.org.cn,192.168.2.3爲TFTP服務器,192.168.1.0/24網段爲Client PC,其網關爲192.168.1.254。每個路由器使用RIP路由協議發現路由。

  
  二、PC0(IP地址爲192.168.1.1)訪問www.senya.org.cn的過程詳解

  1、把域名www.senya.org.cn解析爲IP地址,這就要使用DNS協議,向DNS服務器查詢域爲www.senya.org.cn的IP地址。

  a、PC0組裝成一個DNS數據包,該數據包包含了一條查詢域名爲www.senya.org.cn的IP是多少的問題,然後再把該DNS數據包加上一個UDP報頭,在UDP報頭的目的端口爲53,源端口隨機選擇,把UDP數據報交給IP層,加上目的地址即DNS服務器的IP地址:192.168.2.1,源地址爲本機IP地址,IP數據包交給網絡接口層(也可以理解爲數據鏈路層)準備發給本網段網關,由網絡轉發出去。在網絡接口層又封閉爲數據幀,幀頭的源MAC地址爲本機網卡MAC地址,目的地址應該爲網關的MAC地址,但此時PC0並不知道網關192.168.1.254的MAC地址,所以先在本網段發送ARP協議廣播數據包,請求網關192.168.1.254的MAC地址;
b、封裝ARP廣播數據包,請求網關192.168.1.254的MAC地址。廣播地址爲FF:FF:FF:FF:FF:FF。該數據包會被交換機轉發到本網段中除了自己的所有計算機(網絡接口)上,意思:我的IP地址是192.168.1.1,MAC地址是0050.0FB8.E023,我想知道IP地址爲192.168.1.254的MAC地址是多少?


圖二 PC0上兩個整裝待發的數據包。

  c、交換機收到PC0發來的ARP廣播數據包。


圖三

  d、交換機把收到的PC0發來的ARP數據包轉發本網段中除了PC0之外的所有網絡接口上(或計算機上),只有IP地址爲192.168.1.254的計算機會回答這個數據包,其它的計算機將會將不予理睬。

 


圖四

  e、網關192.168.1.254把ARP應答數據包轉發給交換機。


圖五

  f、PC0收到了網關192.168.1.254的ARP應答數據包,這樣就知道了網關192.168.1.254的MAC地址,準備把DNS數據包發送給網關。


圖六

  g、DNS查詢數據包先發送到交換機。


圖七

  h、交換機再把接收到DNS查詢數據包轉發給本網段的網關上,即圖中路由器Router0 的FastEthernet0/0接口上。


圖八


i、接下來路由器Router0該把DNS數據發向哪裏呢?它要查一下自己的路由表。我們先來看一下Router0的路由器,該路由器爲Cisoc 2000系列的路由器,使用sh ip route查看路由表。
R0#sh ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

R    172.16.0.0/16 [120/2] via 192.168.3.2, 00:00:04, Serial0/0
                   [120/2] via 192.168.4.2, 00:00:24, Serial0/1
R    172.30.0.0/16 [120/2] via 192.168.3.2, 00:00:04, Serial0/0
                   [120/2] via 192.168.4.2, 00:00:24, Serial0/1
C    192.168.1.0/24 is directly connected, FastEthernet0/0
R    192.168.2.0/24 [120/3] via 192.168.3.2, 00:00:04, Serial0/0
                    [120/3] via 192.168.4.2, 00:00:24, Serial0/1
C    192.168.3.0/24 is directly connected, Serial0/0
C    192.168.4.0/24 is directly connected, Serial0/1
R    192.168.5.0/24 [120/1] via 192.168.3.2, 00:00:04, Serial0/0
R    192.168.6.0/24 [120/1] via 192.168.3.2, 00:00:04, Serial0/0
                    [120/1] via 192.168.4.2, 00:00:24, Serial0/1
R    192.168.9.0/24 [120/2] via 192.168.3.2, 00:00:04, Serial0/0
                    [120/2] via 192.168.4.2, 00:00:24, Serial0/1
R    192.168.10.0/24 [120/1] via 192.168.4.2, 00:00:24, Serial0/1
R    192.168.11.0/24 [120/1] via 192.168.3.2, 00:00:04, Serial0/0
R    192.168.12.0/24 [120/1] via 192.168.4.2, 00:00:24, Serial0/1

  由Router0的路由表可以看出到192.168.2.0/24網段(要訪問的Web服務器192.168.2.2在該網段)有兩條路可以走(我已經標爲紅色):一條是經192.168.3.0/24網段、Router1的Serial0/0接口(IP地址192.168.3.2),由Router0的Serial0/0接口轉發過去;另一條是經192.168.4.0/24網段、Router2路由器的Serial0/0接口,由Router0的Serial0/1接口轉發過去。到底使用哪一條路呢,由網絡的通信狀況決定,如流量等。


圖九 走的是第一條路

  j、路由器Router1接收到PC0的DNS查詢數據包又該把它轉發到哪裏呢?同樣查看自己的路由表。
R1#sh ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

R    172.16.0.0/16 [120/1] via 192.168.5.2, 00:00:21, Serial0/1
R    172.30.0.0/16 [120/1] via 192.168.11.2, 00:00:26, Serial0/3
R    192.168.1.0/24 [120/1] via 192.168.3.1, 00:00:19, Serial0/0
R    192.168.2.0/24 [120/2] via 192.168.5.2, 00:00:21, Serial0/1
                    [120/2] via 192.168.11.2, 00:00:26, Serial0/3
C    192.168.3.0/24 is directly connected, Serial0/0
R    192.168.4.0/24 [120/1] via 192.168.6.2, 00:00:24, Serial0/2
                    [120/1] via 192.168.3.1, 00:00:19, Serial0/0
C    192.168.5.0/24 is directly connected, Serial0/1
C    192.168.6.0/24 is directly connected, Serial0/2
R    192.168.9.0/24 [120/1] via 192.168.11.2, 00:00:26, Serial0/3
                    [120/1] via 192.168.5.2, 00:00:21, Serial0/1
R    192.168.10.0/24 [120/1] via 192.168.6.2, 00:00:24, Serial0/2
                     [120/1] via 192.168.11.2, 00:00:26, Serial0/3
C    192.168.11.0/24 is directly connected, Serial0/3
R    192.168.12.0/24 [120/1] via 192.168.5.2, 00:00:21, Serial0/1
                     [120/1] via 192.168.6.2, 00:00:24, Serial0/2
R1#
由上面的路由表可以看出到192.168.2.0/24網段也有兩條路可以走。路由器根據網流量等狀況選擇一條轉發路徑。


圖十 從本路由器的serial0/1接口轉發到路由器Router3的Serial0/1接口

  k、DNS查詢數據包轉發到Router5的Serial0/0接口,並同時新產生一個ARP請求廣播數據包,請求DNS服務器192.168.2.1MAC地址由於要請求的MAC地址是192.168.2.1的,192.168.2.1與路由器Router5的FastEthernet0/0接口(IP地址192.168.2.254)處於同一個網段,因此只發給192.168.2.0/24網段。


圖十一

  l、把ARP數據包轉發給交換機。


圖十二

  m、DNS服務器應答ARP數據包發給Router5的FastEthernet0/0接口,該數據包的意思是:我的IP地址是192.168.2.1,我的MAC地址是0090.2142.0C79。

 

圖十三


圖十四

  n、DNS服務器收到PC0發送的DNS查詢數據包


圖十五

o、DNS服務器會運行很多進程,根據UDP的目的端口是53,DNS服務器就把此數據包交給DNS服務器進程,DNS服務器進程回答查詢內容,然後根據自己所知道的域名記錄回答PC0,同樣也是一步步地轉發到PC0的網卡上。應答PC0DNS查詢數據包的意思是你所查詢的域名www.senya.org.cn的IP地址是192.168.2.2。

圖十六 應答DNS查詢數據包的內容


圖十七 PC0收到應答DNS查詢數據包

  二、PC0訪問Web服務器192.168.2.2的詳細過程

  a、PC0已經知道了www.senya.org.cn的IP地址爲192.168.2.2,開始向web服務器請求頁面。訪問Web服務器是使用HTTP協議,在運輸層使用TCP協議,TCP協議通過三次握手連接服務器。TCP的隨機產生一個序列號(本例中爲0,實際中是一個二進制32bit數據),在使用TCP時數據包中的每個字節都會有一個序號,序號字段的值是本報文段中第一個字節的序號。SYN字段爲1,TCP隨機產生一個源端口號(本例中爲1025),TCP目的端口爲80,表示要連接服務器的Web服務器進程。


圖十八

  與轉發DNS查詢數據包一樣,由路由器一段段地轉發到Web服務器192.168.2.2,由它的Web服務器進程接收到。
b、web服務器進程應答PC0的連接請求,TCP報頭中序列號隨機產生,ACK應答號爲1,應答號(或確認號)表示期望收到對方的下一個報文段的數據的第一個字節的序列號。SYN與ACK域的值爲1,TCP的源端口號爲80,表示是Web進程發送的,目的端口號爲1025,表示PC0的瀏覽器進程接收。

圖十九

  同樣,一個網段一個網段地轉發到PC0計算機。
c、計算機PC0應答Web服務器應答自己的數據包,併發出請求網頁的數據包。


圖二十

圖二十一 數據包內容
 
 

圖二十二

  此時PC0要連續發送兩個數據包,一個是TCP報文應答報文,這個先發送。一個是一個請求網頁的數據報文。
d、Web服務器收到TCP數據包後,PC0與Web服務器已經建立了連接。Web服務器並且要響應PC0的網頁請求,把PC0請求的網頁發送給了PC0的瀏覽器進程,這時我們就看到了網頁內容。

 

圖二十三

  以上就是一臺計算機訪問Web服務器某一個頁面的詳細全過程。在上面的敘述中引出了許多計算機網絡的概念名詞,比如:TCP協議、UDP協議、DNS協議、端口號等等。
當我們在瀏覽器的URL地址欄內輸入網址時,很快就看網頁的內容了,實際上計算機、網絡設備做了大量的工作來完成我們的任務。計算機之間通信是複雜的,在通信時各個計算機要遵守一些規則,這些規則就被稱爲協議。我們當前的Internet使用的是TCP/IP協議套件。由於計算機通信非常複雜,解決複雜的問題要採用分解法,把複雜的問題、按某種原則進行分類、分層次去解決,因此計算機網絡協議是分層次的。這樣就會形成一個協議集合,在這個協議集中每個協各施其職,互相協同完成計算機通信。這樣就會更容易完成任。

  在以後講座中,我們主要圍繞着IEEE802系列協議、TCP/IP協議套件來講。

轉自:http://www.360doc.com/content/11/0121/15/2614615_88098027.shtml

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