一次访问Web服务器的详细通信过程
一次访问Web 服务器的详细通信过程在这一讲中我们要了解一下Internet 中一台计算机访问Web 服务器的全部过程,从中可以窥探Internet 是如何工作的,本讲中会涉及到网络(或Interne
一次访问Web 服务器的详细通信过程
在这一讲中我们要了解一下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 服务器进程。