先不废话了,上图

 

我的第一个WEB网站架构及其数据包走向分析_架构

在这架构中,客户发送第一个请求包1.该请求包的格式如下

 数据 HTTP协议(方法GET)

SIP:10.1.1.x
DIP:192.168.10.11 

 MAC

当该数据包到达Nginx服务器,如果该请求页面为静态内容,则Nginx服务器直接返回应答请求数据包9;如果当该请求内容为PHP页面时,Nginx向Apache的分发器发送请求数据包2,该数据包格式如下:

 数据 HTTP协议(方法GET)

SIP:192.168.10.11
DIP:192.168.10.251 

 MAC

Apache的分发器得到该数据包后,通过算法进行RealServer的选择,假设该次选择结果为Apache服务器1,则分发器仅数据包2的MAC地址发出数据包3,该数据包格式如下

 数据 HTTP协议(方法GET)

SIP:192.168.10.11
DIP:192.168.10.251 

 SMAC:分发器
DMAC:Apache1

当数据包3到达Apache真实服务器,该服务器对用户请求页面进行处理,如果该请求需要调用数据库,Apache服务器向MySql分发器发送请求数据包4,该数据包如下:

 数据 MySql

SIP:192.168.10.21
DIP:192.168.10.252 

 MAC

当MySql分发器接收到Apache的请求数据时,通过算法确定需要使用的MySql服务器(假设为MysqlMaster),并向MySql真实服务器发送请求,该请求包5如下:

 数据 MySql

SIP:192.168.10.252
DIP:192.168.10.31

 MAC

当MySqlMaster服务器接收到请求数据包5时,处理该请求并将得到的值打包返回MySql分发器,该数据包6(请求数据包5的回应包)如下:

 数据 MySql

SIP:192.168.10.31
DIP:192.168.10.252

 MAC

当MySql分发器服务器得到数据包6,则将数据包6的数据重新打包并发送出来,该数据包7(请求数据包4的回应包)的格式如下:

 数据 MySql

SIP:192.168.10.252
DIP:192.168.10.21

 MAC

当Apache真实服务器得到数据包7时,使用PHP代码处理该包中的数据,并将最终得到的静态页面数据打包,返回Nginx服务器,该数据包8(请求数据包2的回应包)的格式如下:

 数据 HTTP协议

SIP:192.168.10.251
DIP:192.168.10.11 

 MAC

Nginx服务器得到Apache返回的静态页面后,将该静态页面数据传递给用户,应答数据包9(请求数据包1的应答包)如下:

 数据 HTTP协议

SIP:192.168.10.11
DIP:10.1.1.X 

 MAC

用户计算机得到应答数据包9,将该数据包交给浏览器,并由浏览器翻译并显示出来!