一次訪問Web服務器的詳細通信過程
一次訪問Web 服務器的詳細通信過程在這一講中我們要了解一下Internet 中一臺計算機訪問Web 服務器的全部過程,從中可以窺探Internet 是如何工作的,本講中會涉及到網絡(或Interne
一次訪問Web 服務器的詳細通信過程
在這一講中我們要了解一下Internet 中一臺計算機訪問Web 服務器的全部過程,從中可以窺探Internet 是如何工作的,本講中會涉及到網絡(或Internet )的專業(yè)術語、概念及Internet 的重要內容,在以后的講座中我們會詳細講解。本講主要是想讓大家明網絡是怎樣交付數據、尋址等,即Internet 的基本工作原理。
一、網絡環(huán)境說明
圖一
本次網絡通信試驗采用Packet Tracer 5.0思科網絡模擬軟件。有關Packet Tracer 5.0的使用與技巧請參考我的相關博文。此次模擬環(huán)境中使用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 路由協議發(fā)現路由。
二、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 數據包交給網絡接口層(也可以理解為數據鏈路層) 準備發(fā)給本網段網關,由網絡轉發(fā)出去。在網絡接口層又封閉為數據幀,幀頭的源MAC 地址為本機網卡MAC 地址,目的地址應該為網關的MAC 地址,但此時PC0并
,不知道網關192.168.1.254的MAC 地址,所以先在本網段發(fā)送ARP 協議廣播數據包,請求網關192.168.1.254的MAC 地址;
b 、封裝ARP 廣播數據包,請求網關192.168.1.254的MAC 地址。廣播地址為FF:FF:FF:FF:FF:FF。該數據包會被交換機轉發(fā)到本網段中除了自己的所有計算機(網絡接口)上,意思:我的IP 地址是192.168.1.1,MAC 地址是0050.0FB8.E023,我想知道IP 地址為192.168.1.254的MAC 地址是多少?
圖二 PC0上兩個整裝待發(fā)的數據包。
c 、交換機收到PC0發(fā)來的ARP 廣播數據包。
圖三
d 、交換機把收到的PC0發(fā)來的ARP 數據包轉發(fā)本網段中除了PC0之外的所有網絡接口上(或計算機上),只有IP 地址為192.168.1.254的計算機會回答這個數據包,其它的計算機將會將不予理睬。
圖四
e 、網關192.168.1.254把ARP 應答數據包轉發(fā)給交換機。
圖五
f 、PC0收到了網關192.168.1.254的ARP 應答數據包,這樣就知道了網關192.168.1.254的MAC 地址,準備把DNS 數據包發(fā)送給網關。
圖六
g 、DNS 查詢數據包先發(fā)送到交換機。
圖七
,h 、交換機再把接收到DNS 查詢數據包轉發(fā)給本網段的網關上,即圖中路由器Router0 的FastEthernet0/0接口上。
圖八
i 、接下來路由器Router0該把DNS 數據發(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網段(要訪問的Web 服務器192.168.2.2在該網段)有兩條路可以走(我已經標為紅色) :一條是經192.168.3.0/24網段、Router1的Serial0/0接口(IP地址192.168.3.2) ,由Router0的Serial0/0接口轉發(fā)過去;另一條是經192.168.4.0/24網段、Router2路由器的Serial0/0接口,由Router0的Serial0/1接口轉發(fā)過去。到底使用哪一條路呢,由網絡的通信狀況決定,如流量等。
圖九 走的是第一條路
j 、路由器Router1接收到PC0的DNS 查詢數據包又該把它轉發(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網段也有兩條路可以走。路由器根據網流量等狀況選擇一條轉發(fā)路徑。
圖十 從本路由器的serial0/1接口轉發(fā)到路由器Router3的Serial0/1接口
k 、DNS 查詢數據包轉發(fā)到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) 處于同一個網段,因此只發(fā)給192.168.2.0/24網段。
圖十一
l 、把ARP 數據包轉發(fā)給交換機。
,圖十二
m 、DNS 服務器應答ARP 數據包發(fā)給Router5的FastEthernet0/0接口,該數據包的意思是:我的IP 地址是192.168.2.1,我的MAC 地址是0090.2142.0C79。
圖十三
,圖十四
n 、DNS 服務器收到PC0發(fā)送的DNS 查詢數據包
圖十五
o 、DNS 服務器會運行很多進程,根據UDP 的目的端口是53,DNS 服務器就把此數據包交給DNS 服務器進程,DNS 服務器進程回答查詢內容,然后根據自己所知道的域名記錄回答PC0,同樣也是一步步地轉發(fā)到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 時數據包中的每個字節(jié)都會有一個序號,序號字段的值是本報文段中第一個字節(jié)的序號。SYN 字段為1,TCP 隨機產生一個源端口號(本例中為1025) ,TCP 目的端口為80,表示要連接服務器的Web 服務器進程。