Internet中一臺計算機訪問Web服務(wù)器的全部過程,從中可以窺探Internet是如何工作的,本講中會涉及到網(wǎng)絡(luò)(或Internet)的專業(yè)術(shù)語、概念及Internet的重要內(nèi)容,在以后的講座中我們會詳細(xì)講解。本講主要是想讓大家明網(wǎng)絡(luò)是怎樣交付數(shù)據(jù)、尋址等,即Internet的基本工作原理。
一、網(wǎng)絡(luò)環(huán)境說明
本次網(wǎng)絡(luò)通信試驗采用Packet Tracer 5.0思科網(wǎng)絡(luò)模擬軟件。有關(guān)Packet Tracer 5.0的使用與技巧請參考我的相關(guān)博文。此次模擬環(huán)境中使用5個路由器連接兩個以太網(wǎng),其中192.168.2.0/24網(wǎng)段為服務(wù)器,192.168.2.1為DNS服務(wù)器,192.168.2.2為Web服務(wù)器,域名為www.senya.org.cn,192.168.2.3為TFTP服務(wù)器,192.168.1.0/24網(wǎng)段為Client PC,其網(wǎng)關(guān)為192.168.1.254。每個路由器使用RIP路由協(xié)議發(fā)現(xiàn)路由。
二、PC0(IP地址為192.168.1.1)訪問www.senya.org.cn的過程詳解
1、把域名www.senya.org.cn解析為IP地址,這就要使用DNS協(xié)議,向DNS服務(wù)器查詢域為www.senya.org.cn的IP地址。
a、PC0組裝成一個DNS數(shù)據(jù)包,該數(shù)據(jù)包包含了一條查詢域名為www.senya.org.cn的IP是多少的問題,然后再把該DNS數(shù)據(jù)包加上一個UDP報頭,在UDP報頭的目的端口為53,源端口隨機選擇,把UDP數(shù)據(jù)報交給IP層,加上目的地址即DNS服務(wù)器的IP地址:192.168.2.1,源地址為本機IP地址,IP數(shù)據(jù)包交給網(wǎng)絡(luò)接口層(也可以理解為數(shù)據(jù)鏈路層)準(zhǔn)備發(fā)給本網(wǎng)段網(wǎng)關(guān),由網(wǎng)絡(luò)轉(zhuǎn)發(fā)出去。在網(wǎng)絡(luò)接口層又封閉為數(shù)據(jù)幀,幀頭的源MAC地址為本機網(wǎng)卡MAC地址,目的地址應(yīng)該為網(wǎng)關(guān)的MAC地址,但此時PC0并不知道網(wǎng)關(guān)192.168.1.254的MAC地址,所以先在本網(wǎng)段發(fā)送ARP協(xié)議廣播數(shù)據(jù)包,請求網(wǎng)關(guān)192.168.1.254的MAC地址;
b、封裝ARP廣播數(shù)據(jù)包,請求網(wǎng)關(guān)192.168.1.254的MAC地址。廣播地址為FF:FF:FF:FF:FF:FF。該數(shù)據(jù)包會被交換機轉(zhuǎn)發(fā)到本網(wǎng)段中除了自己的所有計算機(網(wǎng)絡(luò)接口)上,意思:我的IP地址是192.168.1.1,MAC地址是0050.0FB8.E023,我想知道IP地址為192.168.1.254的MAC地址是多少?
圖二 PC0上兩個整裝待發(fā)的數(shù)據(jù)包。
c、交換機收到PC0發(fā)來的ARP廣播數(shù)據(jù)包。
圖三
d、交換機把收到的PC0發(fā)來的ARP數(shù)據(jù)包轉(zhuǎn)發(fā)本網(wǎng)段中除了PC0之外的所有網(wǎng)絡(luò)接口上(或計算機上),只有IP地址為192.168.1.254的計算機會回答這個數(shù)據(jù)包,其它的計算機將會將不予理睬。
圖四
e、網(wǎng)關(guān)192.168.1.254把ARP應(yīng)答數(shù)據(jù)包轉(zhuǎn)發(fā)給交換機。
圖五
f、PC0收到了網(wǎng)關(guān)192.168.1.254的ARP應(yīng)答數(shù)據(jù)包,這樣就知道了網(wǎng)關(guān)192.168.1.254的MAC地址,準(zhǔn)備把DNS數(shù)據(jù)包發(fā)送給網(wǎng)關(guān)。
圖六
g、DNS查詢數(shù)據(jù)包先發(fā)送到交換機。
圖七
h、交換機再把接收到DNS查詢數(shù)據(jù)包轉(zhuǎn)發(fā)給本網(wǎng)段的網(wǎng)關(guān)上,即圖中路由器Router0 的FastEthernet0/0接口上。
圖八
i、接下來路由器Router0該把DNS數(shù)據(jù)發(fā)向哪里呢?它要查一下自己的路由表。我們先來看一下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網(wǎng)段(要訪問的Web服務(wù)器192.168.2.2在該網(wǎng)段)有兩條路可以走(我已經(jīng)標(biāo)為紅色):一條是經(jīng)192.168.3.0/24網(wǎng)段、Router1的Serial0/0接口(IP地址192.168.3.2),由Router0的Serial0/0接口轉(zhuǎn)發(fā)過去;另一條是經(jīng)192.168.4.0/24網(wǎng)段、Router2路由器的Serial0/0接口,由Router0的Serial0/1接口轉(zhuǎn)發(fā)過去。到底使用哪一條路呢,由網(wǎng)絡(luò)的通信狀況決定,如流量等。
圖九 走的是第一條路
j、路由器Router1接收到PC0的DNS查詢數(shù)據(jù)包又該把它轉(zhuǎn)發(fā)到哪里呢?同樣查看自己的路由表。
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網(wǎng)段也有兩條路可以走。路由器根據(jù)網(wǎng)流量等狀況選擇一條轉(zhuǎn)發(fā)路徑。
k、DNS查詢數(shù)據(jù)包轉(zhuǎn)發(fā)到Router5的Serial0/0接口,并同時新產(chǎn)生一個ARP請求廣播數(shù)據(jù)包,請求DNS服務(wù)器192.168.2.1MAC地址由于要請求的MAC地址是192.168.2.1的,192.168.2.1與路由器Router5的FastEthernet0/0接口(IP地址192.168.2.254)處于同一個網(wǎng)段,因此只發(fā)給192.168.2.0/24網(wǎng)段。
l、把ARP數(shù)據(jù)包轉(zhuǎn)發(fā)給交換機。
m、DNS服務(wù)器應(yīng)答ARP數(shù)據(jù)包發(fā)給Router5的FastEthernet0/0接口,該數(shù)據(jù)包的意思是:我的IP地址是192.168.2.1,我的MAC地址是0090.2142.0C79。
圖十三
圖十四
n、DNS服務(wù)器收到PC0發(fā)送的DNS查詢數(shù)據(jù)包
圖十六 應(yīng)答DNS查詢數(shù)據(jù)包的內(nèi)容
圖十七 PC0收到應(yīng)答DNS查詢數(shù)據(jù)包
二、PC0訪問Web服務(wù)器192.168.2.2的詳細(xì)過程
a、PC0已經(jīng)知道了www.senya.org.cn的IP地址為192.168.2.2,開始向web服務(wù)器請求頁面。訪問Web服務(wù)器是使用HTTP協(xié)議,在運輸層使用TCP協(xié)議,TCP協(xié)議通過三次握手連接服務(wù)器。TCP的隨機產(chǎn)生一個序列號(本例中為0,實際中是一個二進(jìn)制32bit數(shù)據(jù)),在使用TCP時數(shù)據(jù)包中的每個字節(jié)都會有一個序號,序號字段的值是本報文段中第一個字節(jié)的序號。SYN字段為1,TCP隨機產(chǎn)生一個源端口號(本例中為1025),TCP目的端口為80,表示要連接服務(wù)器的Web服務(wù)器進(jìn)程。
與轉(zhuǎn)發(fā)DNS查詢數(shù)據(jù)包一樣,由路由器一段段地轉(zhuǎn)發(fā)到Web服務(wù)器192.168.2.2,由它的Web服務(wù)器進(jìn)程接收到。
b、web服務(wù)器進(jìn)程應(yīng)答PC0的連接請求,TCP報頭中序列號隨機產(chǎn)生,ACK應(yīng)答號為1,應(yīng)答號(或確認(rèn)號)表示期望收到對方的下一個報文段的數(shù)據(jù)的第一個字節(jié)的序列號。SYN與ACK域的值為1,TCP的源端口號為80,表示是Web進(jìn)程發(fā)送的,目的端口號為1025,表示PC0的瀏覽器進(jìn)程接收。
圖十九
同樣,一個網(wǎng)段一個網(wǎng)段地轉(zhuǎn)發(fā)到PC0計算機。
c、計算機PC0應(yīng)答Web服務(wù)器應(yīng)答自己的數(shù)據(jù)包,并發(fā)出請求網(wǎng)頁的數(shù)據(jù)包。
此時PC0要連續(xù)發(fā)送兩個數(shù)據(jù)包,一個是TCP報文應(yīng)答報文,這個先發(fā)送。一個是一個請求網(wǎng)頁的數(shù)據(jù)報文。
d、Web服務(wù)器收到TCP數(shù)據(jù)包后,PC0與Web服務(wù)器已經(jīng)建立了連接。Web服務(wù)器并且要響應(yīng)PC0的網(wǎng)頁請求,把PC0請求的網(wǎng)頁發(fā)送給了PC0的瀏覽器進(jìn)程,這時我們就看到了網(wǎng)頁內(nèi)容。
圖二十三
以上就是一臺計算機訪問Web服務(wù)器某一個頁面的詳細(xì)全過程。在上面的敘述中引出了許多計算機網(wǎng)絡(luò)的概念名詞,比如:TCP協(xié)議、UDP協(xié)議、DNS協(xié)議、端口號等等。
當(dāng)我們在瀏覽器的URL地址欄內(nèi)輸入網(wǎng)址時,很快就看網(wǎng)頁的內(nèi)容了,實際上計算機、網(wǎng)絡(luò)設(shè)備做了大量的工作來完成我們的任務(wù)。計算機之間通信是復(fù)雜的,在通信時各個計算機要遵守一些規(guī)則,這些規(guī)則就被稱為協(xié)議。我們當(dāng)前的Internet使用的是TCP/IP協(xié)議套件。由于計算機通信非常復(fù)雜,解決復(fù)雜的問題要采用分解法,把復(fù)雜的問題、按某種原則進(jìn)行分類、分層次去解決,因此計算機網(wǎng)絡(luò)協(xié)議是分層次的。這樣就會形成一個協(xié)議集合,在這個協(xié)議集中每個協(xié)各施其職,互相協(xié)同完成計算機通信。這樣就會更容易完成任。
在以后講座中,我們主要圍繞著IEEE802系列協(xié)議、TCP/IP協(xié)議套件來講。