一次訪問(wèn)Web服務(wù)器的詳細(xì)通信過(guò)程
一次訪問(wèn)Web 服務(wù)器的詳細(xì)通信過(guò)程在這一講中我們要了解一下Internet 中一臺(tái)計(jì)算機(jī)訪問(wèn)Web 服務(wù)器的全部過(guò)程,從中可以窺探Internet 是如何工作的,本講中會(huì)涉及到網(wǎng)絡(luò)(或Interne
一次訪問(wèn)Web 服務(wù)器的詳細(xì)通信過(guò)程
在這一講中我們要了解一下Internet 中一臺(tái)計(jì)算機(jī)訪問(wèn)Web 服務(wù)器的全部過(guò)程,從中可以窺探Internet 是如何工作的,本講中會(huì)涉及到網(wǎng)絡(luò)(或Internet )的專業(yè)術(shù)語(yǔ)、概念及Internet 的重要內(nèi)容,在以后的講座中我們會(huì)詳細(xì)講解。本講主要是想讓大家明網(wǎng)絡(luò)是怎樣交付數(shù)據(jù)、尋址等,即Internet 的基本工作原理。
一、網(wǎng)絡(luò)環(huán)境說(shuō)明

圖一
本次網(wǎng)絡(luò)通信試驗(yàn)采用Packet Tracer 5.0思科網(wǎng)絡(luò)模擬軟件。有關(guān)Packet Tracer 5.0的使用與技巧請(qǐng)參考我的相關(guān)博文。此次模擬環(huán)境中使用5個(gè)路由器連接兩個(gè)以太網(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。每個(gè)路由器使用RIP 路由協(xié)議發(fā)現(xiàn)路由。
二、PC0(IP地址為192.168.1.1) 訪問(wèn)www.senya.org.cn 的過(guò)程詳解
1、把域名www.senya.org.cn 解析為IP 地址,這就要使用DNS 協(xié)議,向DNS 服務(wù)器查詢域?yàn)閣ww.senya.org.cn 的IP 地址。
a 、PC0組裝成一個(gè)DNS 數(shù)據(jù)包,該數(shù)據(jù)包包含了一條查詢域名為www.senya.org.cn 的IP 是多少的問(wèn)題,然后再把該DNS 數(shù)據(jù)包加上一個(gè)UDP 報(bào)頭,在UDP 報(bào)頭的目的端口為53,源端口隨機(jī)選擇,把UDP 數(shù)據(jù)報(bào)交給IP 層,加上目的地址即DNS 服務(wù)器的IP 地址:192.168.2.1,源地址為本機(jī)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 地址為本機(jī)網(wǎng)卡MAC 地址,目的地址應(yīng)該為網(wǎng)關(guān)的MAC 地址,但此時(shí)PC0并
,不知道網(wǎng)關(guān)192.168.1.254的MAC 地址,所以先在本網(wǎng)段發(fā)送ARP 協(xié)議廣播數(shù)據(jù)包,請(qǐng)求網(wǎng)關(guān)192.168.1.254的MAC 地址;
b 、封裝ARP 廣播數(shù)據(jù)包,請(qǐng)求網(wǎng)關(guān)192.168.1.254的MAC 地址。廣播地址為FF:FF:FF:FF:FF:FF。該數(shù)據(jù)包會(huì)被交換機(jī)轉(zhuǎn)發(fā)到本網(wǎng)段中除了自己的所有計(jì)算機(jī)(網(wǎng)絡(luò)接口)上,意思:我的IP 地址是192.168.1.1,MAC 地址是0050.0FB8.E023,我想知道IP 地址為192.168.1.254的MAC 地址是多少?

圖二 PC0上兩個(gè)整裝待發(fā)的數(shù)據(jù)包。
c 、交換機(jī)收到PC0發(fā)來(lái)的ARP 廣播數(shù)據(jù)包。

圖三
d 、交換機(jī)把收到的PC0發(fā)來(lái)的ARP 數(shù)據(jù)包轉(zhuǎn)發(fā)本網(wǎng)段中除了PC0之外的所有網(wǎng)絡(luò)接口上(或計(jì)算機(jī)上),只有IP 地址為192.168.1.254的計(jì)算機(jī)會(huì)回答這個(gè)數(shù)據(jù)包,其它的計(jì)算機(jī)將會(huì)將不予理睬。

圖四
e 、網(wǎng)關(guān)192.168.1.254把ARP 應(yīng)答數(shù)據(jù)包轉(zhuǎn)發(fā)給交換機(jī)。

圖五
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ā)送到交換機(jī)。

圖七
,h 、交換機(jī)再把接收到DNS 查詢數(shù)據(jù)包轉(zhuǎn)發(fā)給本網(wǎng)段的網(wǎng)關(guān)上,即圖中路由器Router0 的FastEthernet0/0接口上。

圖八
i 、接下來(lái)路由器Router0該把DNS 數(shù)據(jù)發(fā)向哪里呢?它要查一下自己的路由表。我們先來(lái)看一下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)段(要訪問(wèn)的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ā)過(guò)去;另一條是經(jīng)192.168.4.0/24網(wǎng)段、Router2路由器的Serial0/0接口,由Router0的Serial0/1接口轉(zhuǎn)發(fā)過(guò)去。到底使用哪一條路呢,由網(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接口,并同時(shí)新產(chǎn)生一個(gè)ARP 請(qǐng)求廣播數(shù)據(jù)包,請(qǐng)求DNS 服務(wù)器192.168.2.1MAC 地址由于要請(qǐng)求的MAC 地址是192.168.2.1的,192.168.2.1與路由器Router5的FastEthernet0/0接口(IP地址192.168.2.254) 處于同一個(gè)網(wǎng)段,因此只發(fā)給192.168.2.0/24網(wǎng)段。

圖十一
l 、把ARP 數(shù)據(jù)包轉(zhuǎn)發(fā)給交換機(jī)。
,
圖十二
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ù)器會(huì)運(yùn)行很多進(jìn)程,根據(jù)UDP 的目的端口是53,DNS 服務(wù)器就把此數(shù)據(jù)包交給DNS 服務(wù)器進(jìn)程,DNS 服務(wù)器進(jìn)程回答查詢內(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訪問(wèn)Web 服務(wù)器192.168.2.2的詳細(xì)過(guò)程
a 、PC0已經(jīng)知道了www.senya.org.cn 的IP 地址為192.168.2.2,開(kāi)始向web 服務(wù)器請(qǐng)求頁(yè)面。訪問(wèn)Web 服務(wù)器是使用HTTP 協(xié)議,在運(yùn)輸層使用TCP 協(xié)議,TCP 協(xié)議通過(guò)三次握手連接服務(wù)器。TCP 的隨機(jī)產(chǎn)生一個(gè)序列號(hào)(本例中為0,實(shí)際中是一個(gè)二進(jìn)制32bit 數(shù)據(jù)) ,在使用TCP 時(shí)數(shù)據(jù)包中的每個(gè)字節(jié)都會(huì)有一個(gè)序號(hào),序號(hào)字段的值是本報(bào)文段中第一個(gè)字節(jié)的序號(hào)。SYN 字段為1,TCP 隨機(jī)產(chǎn)生一個(gè)源端口號(hào)(本例中為1025) ,TCP 目的端口為80,表示要連接服務(wù)器的Web 服務(wù)器進(jìn)程。