一次訪問Web服務(wù)器的詳細通信過程
一次訪問Web 服務(wù)器的詳細通信過程在這一講中我們要了解一下Internet 中一臺計算機訪問Web 服務(wù)器的全部過程,從中可以窺探Internet 是如何工作的,本講中會涉及到網(wǎng)絡(luò)(或Interne
一次訪問Web 服務(wù)器的詳細通信過程
在這一講中我們要了解一下Internet 中一臺計算機訪問Web 服務(wù)器的全部過程,從中可以窺探Internet 是如何工作的,本講中會涉及到網(wǎng)絡(luò)(或Internet )的專業(yè)術(shù)語、概念及Internet 的重要內(nèi)容,在以后的講座中我們會詳細講解。本講主要是想讓大家明網(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ā)路徑。

圖十 從本路由器的serial0/1接口轉(zhuǎn)發(fā)到路由器Router3的Serial0/1接口
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ù)包

圖十五
o 、DNS 服務(wù)器會運行很多進程,根據(jù)UDP 的目的端口是53,DNS 服務(wù)器就把此數(shù)據(jù)包交給DNS 服務(wù)器進程,DNS 服務(wù)器進程回答查詢內(nèi)容,然后根據(jù)自己所知道的域名記錄回答PC0,同樣也是一步步地轉(zhuǎn)發(fā)到PC0的網(wǎng)卡上。應(yīng)答PC0DNS 查詢數(shù)據(jù)包的意思是你所查詢的域名www.senya.org.cn 的IP 地址是192.168.2.2。
,
圖十六 應(yīng)答DNS 查詢數(shù)據(jù)包的內(nèi)容

圖十七 PC0收到應(yīng)答DNS 查詢數(shù)據(jù)包
二、PC0訪問Web 服務(wù)器192.168.2.2的詳細過程
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,實際中是一個二進制32bit 數(shù)據(jù)) ,在使用TCP 時數(shù)據(jù)包中的每個字節(jié)都會有一個序號,序號字段的值是本報文段中第一個字節(jié)的序號。SYN 字段為1,TCP 隨機產(chǎn)生一個源端口號(本例中為1025) ,TCP 目的端口為80,表示要連接服務(wù)器的Web 服務(wù)器進程。