欢迎访问linux宝典,请记住本站唯一域名:www.linuxbaodian.com

运维工程师眼中的用户访问网站的流程

来源:原创    更新时间:2018-09-13 19:19:49    编辑:琳兮    浏览:1616

在学习之余杂谈从用户在浏览器搜索引擎中输入内容敲回车到看到页面的过程,具体脚本实现方式不是运维工程师所掌握的。

我们这边采用LNMP架构来描述,架构图如下

运维工程师眼中的用户访问网站的流程

我们在这采用两部分模式来讨论:

> 1,用户输入域名到集群网站集群门口

> 2,网站集群内部处理用户的请求动作


## 先来谈谈第一部分:用户输入域名到集群网站集群门口

运维工程师眼中的用户访问网站的流程

我们来用语言描述一下上图

> 1,当用户在浏览器上输入域名回车的时候,第一步是找域名和ip地址的对应关系,通过这个域名看看他对应的IP地址是什么。(为什么要这个做:因为访问网站的时候我们实际上是通过ip地址来访问的,因为TCP协议在进行网络层封装数据的时候只能放过IP地址。我们只有通过ip地址才能进行数据包的传输)

> 2,先查找本地的hosts文件里面的缓存,看看有没有域名和ip地址的对应关系(本地的hosts文件优先级最高可以在这个地方体现出来)

> 3,如果hosts缓存里面有对应的记录,那么我们直接拿着ip地址去请求网站内容

> 4,如果hosts缓存里面没有对应的记录,那么他就会请求本地的域名服务器(这个域名服务器可以是我们网卡配置信息里面写的那个DNS服务器)

> 5,如果本地DNS服务器有对应的记录,这返回这个信息给自己,然后拿着ip地址去请求网站,并在本地形成缓存

> 6,如果本地的域名服务器不存在这个对应关系,那个本地的域名服务器就会直接去请求**`根域名服务器`**,根域名服务器会给本地域名服务器返回一条信息:“我虽然不知道**`www.linuxbaodian.com`**域名和ip地址所对应的关系,但是我知道“**`.com.`**域名服务器的IP地址,你可以去问问他?”

> 7,本地域名服务器这个时候就拿着**`.com.`**域名服务器的IP地址去问他知不知道**`www.linuxbaodian.com.`**,然后**`.com.`**域名服务器告诉本地域名服务器:“我不知道**`www.linuxbaodian.com`**的地址,但是我知道**`linuxbaodian.com.`**的IP地址,你去问问他”

> 8,就这样一级一级的迭代,直到找到**`www.linuxbaodian.com`**的IP地址为止

> 9,然后本地域名服务器就会把这个域名和IP地址的对应关系在本地形成缓存记录,并返回给自己的电脑

> 10,然后本地的电脑在本地形成缓存信息,并拿着ip地址进行封装去请求网站内容


###DNS查询的两种方式

(1)递归查询

递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

(2)迭代查询

DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。

运维工程师眼中的用户访问网站的流程


##经过艰难险阻的路由,来到了我们服务器集群的大门防火墙

在看一眼集群中的内部架构

运维工程师眼中的用户访问网站的流程

> 1,数据包请求来到防火墙,看看是否防火墙的那一条规则,然后匹配到这个规则之后防火墙执行的动作

> 假设我们这边防火墙是允许是个数据包通过的(为什么设允许,因为一个人正常访问你的网站你都把它的流量拒绝了,那你还弄这个网站干啥)

> 数据包来到我们的负载均衡器(这个负载均衡器实际上不是本身负载,他是实现了后段的web服务器的负载,别人访问网站它提交给后面的web服务器)

> web服务器来处理用户的请求,动态的先去找redis缓存数据库,如果有直接返回

> 如果没有去找mysql数据库,数据库返回信息,并在redis里面形成缓存

> 静态内容去请求NFS服务器然后web服务器整合之后返回客户端

> 用户拿到数据包浏览器进行解析

> 集群之间填通过TCP之间进行


访问流程大致如上


评论区

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

相关内容

点击排行

随机新闻

评论排行榜