zzgezi的个人空间 https://bbs.21ic.com/?712331 [收藏] [复制] [RSS]

日志

网络通信过程-非常详细

已有 432 次阅读2018-2-26 10:06 |个人分类:网络通信|系统分类:兴趣爱好| 网络通信

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服务器进程。


图十八

  与转发DNS查询数据包一样,由路由器一段段地转发到Web服务器192.168.2.2,由它的Web服务器进程接收到。
b、web服务器进程应答PC0的连接请求,TCP报头中序列号随机产生,ACK应答号为1,应答号(或确认号)表示期望收到对方的下一个报文段的数据的第一个字节的序列号。SYN与ACK域的值为1,TCP的源端口号为80,表示是Web进程发送的,目的端口号为1025,表示PC0的浏览器进程接收。

图十九

  同样,一个网段一个网段地转发到PC0计算机。
c、计算机PC0应答Web服务器应答自己的数据包,并发出请求网页的数据包。


图二十

图二十一 数据包内容
 
 

图二十二

  此时PC0要连续发送两个数据包,一个是TCP报文应答报文,这个先发送。一个是一个请求网页的数据报文。
d、Web服务器收到TCP数据包后,PC0与Web服务器已经建立了连接。Web服务器并且要响应PC0的网页请求,把PC0请求的网页发送给了PC0的浏览器进程,这时我们就看到了网页内容。

 

图二十三

  以上就是一台计算机访问Web服务器某一个页面的详细全过程。在上面的叙述中引出了许多计算机网络的概念名词,比如:TCP协议、UDP协议、DNS协议、端口号等等。
当我们在浏览器的URL地址栏内输入网址时,很快就看网页的内容了,实际上计算机、网络设备做了大量的工作来完成我们的任务。计算机之间通信是复杂的,在通信时各个计算机要遵守一些规则,这些规则就被称为协议。我们当前的Internet使用的是TCP/IP协议套件。由于计算机通信非常复杂,解决复杂的问题要采用分解法,把复杂的问题、按某种原则进行分类、分层次去解决,因此计算机网络协议是分层次的。这样就会形成一个协议集合,在这个协议集中每个协各施其职,互相协同完成计算机通信。这样就会更容易完成任。

  在以后讲座中,我们主要围绕着IEEE802系列协议、TCP/IP协议套件来讲。

转自:http://www.360doc.com/content/11/0121/15/2614615_88098027.shtml


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)