首页 > 代码库 > 应用请求web服务器的过程详解

应用请求web服务器的过程详解

我们在做渗透测试时,需要知道互联网中是如何处理客户端与服务器端之间的请求的。本文转载一篇文章详解介绍了一次web请求过程的处理。

我们要了解一下Internet中一台计算机访问Web服务器的全部过程,从中可以窥探Internet是如何工作的,本讲主要是想让大家明网络是怎样交付数据、寻址等,即Internet的基本工作原理。

一、网络环境说明


本次网络通信试验采用PacketTracer 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的过程详解。

PC0要实现访问,必须经过以下两个大方向处理。

一、把域名www.senya.org.cn解析为IP地址,这就要使用DNS协议,向DNS服务器查询域为www.senya.org.cn的IP地址。

实现过程如下:

  • 步骤1: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地址;
  • 步骤2:封装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地址是多少?
  • 步骤3:交换机收到PC0发来的ARP广播数据包。
  • 步骤4:交换机把收到的PC0发来的ARP数据包转发本网段中除了PC0之外的所有网络接口上(或计算机上),只有IP地址为192.168.1.254的计算机会回答这个数据包,其它的计算机将会将不予理睬。
  • 步骤5:关192.168.1.254把ARP应答数据包转发给交换机。
  • 步骤6:PC0收到了网关192.168.1.254的ARP应答数据包,这样就知道了网关192.168.1.254的MAC地址,准备把DNS数据包发送给网关。
  • 步骤7:DNS查询数据包先发送到交换机。
  • 步骤8:交换机再把接收到DNS查询数据包转发给本网段的网关上,即图中路由器Router0 的FastEthernet0/0接口上。
  • 步骤9:接下来路由器Router0该把DNS数据发向哪里呢?它要查一下自己的路由表。我们先来看一下Router0的路由器,该路由器为Cisoc 2000系列的路由器,使用sh ip route查看路由表(这里不讲述路由处理过程)。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接口转发过去。到底使用哪一条路呢,由网络的通信状况决定,如流量等。
  • 步骤10:走的是第一条路。路由器Router1接收到PC0的DNS查询数据包又该把它转发到哪里呢?同样查看自己的路由表。
  • 步骤11DNS查询数据包转发到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网段。
  • 步骤12:把ARP数据包转发给交换机。
  • 步骤13:DNS服务器应答ARP数据包发给Router5的FastEthernet0/0接口,该数据包的意思是:我的IP地址是192.168.2.1,我的MAC地址是0090.2142.0C79。
  • 步骤14:DNS服务器收到PC0发送的DNS查询数据包。
  • 步骤15:DNS服务器会运行很多进程,根据UDP的目的端口是53,DNS服务器就把此数据包交给DNS服务器进程,DNS服务器进程回答查询内容,然后根据自己所知道的域名记录回答PC0,同样也是一步步地转发到PC0的网卡上。应答PC0DNS查询数据包的意思是你所查询的域名www.senya.org.cn的IP地址是192.168.2.2。

  二、PC0访问Web服务器192.168.2.2的详细过程

  • 步骤1: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服务器进程接收到。
  • 步骤2:web服务器进程应答PC0的连接请求,TCP报头中序列号随机产生,ACK应答号为1,应答号(或确认号)表示期望收到对方的下一个报文段的数据的第一个字节的序列号。SYN与ACK域的值为1,TCP的源端口号为80,表示是Web进程发送的,目的端口号为1025,表示PC0的浏览器进程接收。同样,一个网段一个网段地转发到PC0计算机。
  • 步骤3:计算机PC0应答Web服务器应答自己的数据包,并发出请求网页的数据包。此时PC0要连续发送两个数据包,一个是TCP报文应答报文,这个先发送。一个是一个请求网页的数据报文。
  • 步骤4:Web服务器收到TCP数据包后,PC0与Web服务器已经建立了连接。Web服务器并且要响应PC0的网页请求,把PC0请求的网页发送给了PC0的浏览器进程,这时我们就看到了网页内容。

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

三、计算机相互之间的通信

互联网的关键技术就是TCP/IP协议。两台计算机之间的通信是通过TCP/IP协议在因特网上进行的。实际上这个是两个协议:TCP : Transmission Control Protocol 传输控制协,IP协议: InternetProtocol  网际协议。

IP协议负责计算机之间的通信,是计算机用来相互识别的通信的一种机制,每台计算机都有一个IP,用来在internet上标识这台计算机。 IP 负责在因特网上发送和接收数据包。通过IP协议,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP 负责将每个包路由至它的目的地。IP协议仅仅是允许计算机相互发消息,但它并不检查消息是否以发送的次序到达而且没有损坏(只检查关键的头数据)。为了提供消息检验功能,直接在IP协议上设计了传输控制协议TCP。        

TCP协议应用程序之间的通信,TCP确保数据包以正确的次序到达,并且尝试确认数据包的内容没有改变。TCP在IP地址之上引端口(port),它允许计算机通过网络提供各种服务。一些端口号为不同的服务保留,而且这些端口号是众所周知。

 服务或者守护进程:在提供服务的机器上,有程序监听特定端口上的通信流。例如大多数电子邮件通信流出现在端口25上,用于wwww的HTTP通信流出现在80端口上。

实际的运行流程:当应用程序希望通过TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信,占用两个计算机之间整个的通信线路。TCP 用于从应用程序到网络的数据传输控制。TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。

 TCP/IP就是TCP 和 IP 两个协议在一起协同工作,有上下层次的关系。TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之间的通信。TCP 负责将数据分割并装入 IP 包,IP 负责将包发送至接受者,传输过程要经IP路由器负责根据通信量、网络中的错误或者其他参数来进行正确地寻址,然后在它们到达的时候重新组合它们。

应用请求web服务器的过程详解