Web应用网络模型

前言

这篇文章要介绍的是一个常见Web应用基本的过程跟网络模型,当然,对于多数的Client/Server应用也是适用的。延续这个系列文章的风格,只管通俗不管严谨。

概览

总体模型概览图:

DNS

用户点开/输入一个链接http://www.qq.com/index.html 之后,浏览器需要先找到www.qq.com这个域名对应的IP地址,因为计算机是通过IP作为门牌号的,而域名你可以认为是这个IP的别名,方便人类记忆使用。

一般来说,浏览器会先询问本地DNS缓存,如果没有记录过这个域名映射的IP,那就向本地的DNS网关询问,如果网关也不知道,就继续往上一层的DNS服务器询问,直到拿到这个IP地址。

一般来说,一台服务器处理的请求是有限的,因此大型的应用都会有多台proxy机器,我们可以让DNS服务器在第一个请求返回IP1,第二个请求返回IP2,……这样用户的请求就会均匀的落在这些机器上,这个就是DNS负载均衡。CDN就是通过智能DNS算出离用户最近的CDN节点的IP地址,这样用户可以访问一台离他最近的机器,大大节约连接时间。

代理与反向代理

一般来说,浏览器跟真正提供Web服务的机器是没有直接连接的,他们中间都会有代理跟反向代理。

大部分的公司都会内部的计算机都配置了代理服务器,其作用是所有内部的网络请求都是通过代理去连接对方服务器,可以在代理服务器这里做恶意请求/响应的拦截,还可以缓存内部网络所需的公共资源。

反向代理就是以代理服务器来接收网络连接请求,我们上下文称Proxy机器指的就是反向代理机器,Proxy机器收到请求后会经过一定的分析最后把请求内容转发给内网对应的Web服务器,Web服务器的HTTP响应包会先到Proxy机器,然后再到用户机器。 反向代理的好处是可以负载均衡,在它后边可以有多台工作的Web服务器,这样分层次之后,很多职责就明确很多了:Proxy机器负责负载均衡、拦截恶意请求、维持长连接,还可以屏蔽不工作的Web服务器;而Web服务器就只要关心自己处理的Web业务逻辑即可。 往往Proxy服务器跟用户机器保持长连接,这样可以节省用户每次跟服务器建立连接的消耗,而Proxy服务器跟Web服务器采用短连接的方式,这样可以有效节约Web服务器的资源。

Web server

Web server的职责就是根据用户的请求,返回其所需要的响应内容。往往Web server只涉及业务测逻辑的判断以及数据的组装,而真正的数据位于后端的存储Server(本文不涉及)。

对于一般应用来说,Web server返回的是动态产生的内容(每个用户都不一致的动态内容或者经常编辑变动的内容),如页面的HTML内容、JSON数据、XML数据等。而Javascript文件、CSS文件、图片这些静态资源(不根据用户而变动的资源)往往存放在CDN中。

浏览器

从浏览器发起请求,经历以上讲述的步骤处理后,浏览器发起到从Web sever返回的HTTP包。一般来说这个响应是返回网页的HTML。

接着浏览器开始解析收到的HTML包,HTML里边一般会把样式CSS跟脚本Javascript作为外链请求。本文不涉及页面渲染内容,主要为了讨论整体应用的模型,因此这块留以后探讨写文章。

CDN

从上边讨论知道,对于动态的内容,请求总是到Web server去动态计算获取内容,但是对于不随用户状态变化的内容我们把内容推送到CDN节点上。

静态资源的域名跟页面HTML的域名一般来说是不一样的,因为静态资源的请求需要解析到CDN节点去。我们假设主请求是:www.qq.com/index.html;CDN请求是cdn.qq.com/index.css。

一般Web应用把静态内容推到CDN有两种模式,一种是在上线前主动将内容推送到CDN节点,一种是CDN发现本地没有该文件时,回源到Web server机器取内容,然后缓存在他本地。

Web应用网络模型的更多相关文章

  1. w3cmark前端精彩博文周报 10.20-10.27

    w3cmark 官方Q群 145423956 | 官方微博 @w3cmark 自从最近微博屏蔽了我的站点域名,就很懒了.毕竟和不爽,一个纯技术站点还被认为不安全链接,还申诉无门,那些所谓的客服都是自动 ...

  2. 08.Web服务器-1.浏览器访问服务器显示页面的网络模型步骤解析

  3. 【读书笔记】2016.12.10 《构建高性能Web站点》

    本文地址 分享提纲: 1. 概述 2. 知识点 3. 待整理点 4. 参考文档 1. 概述 1.1)[该书信息] <构建高性能Web站点>: -- 百度百科 -- 本书目录: 第1章 绪论 ...

  4. 深入分析Java Web技术(1)

    BS网络模型的基本过程: 当我们在浏览器中输入"www.google.com"的时候,首先会请求DNS服务器对域名进行解析成都应的IP地址,然后根据这个IP地址在互联网上找到谷歌的 ...

  5. web开发必备-网络基础知识---记录一下

    1.osi 7层网络模型 2.socket 套接字编程 PS:一个从事web开发的人来说,我们是使用http协议来和服务器来进行交互.后面会详细的分析这个过程.

  6. Web应用开发工具及语言需要具备的功能探索

    1 前言 最近一个多月在做Web项目,用到的技术有(也不算泄漏公司机密吧): 后台:Struts 2(with JSP/FreeMarker).Spring.Hibernate.MySQL.Web S ...

  7. 【转载】Web应用工作原理

    问题描述:           Web应用工作原理   问题解决:          参考资料:http://blog.csdn.net/lcore/article/details/8964642   ...

  8. Web挖掘技术

      一.数据挖掘 数据挖掘是运用计算机及信息技术,从大量的.不全然的数据集中获取隐含在当中的实用知识的高级过程.Web 数据挖掘是从数据挖掘发展而来,是数据挖掘技术在Web 技术中的应用.Web 数据 ...

  9. HTTPS是如何保证连接安全:每位Web开发者都应知道的

    “HTTPS协议的工作原理是什么?”这是我在数天前工作项目中需要解决的问题. 作为一名Web开发者,我当然知道 HTTPS 协议是保障用户敏感数据的好办法,但并不知道这种协议的内在工作机制. 它怎么保 ...

随机推荐

  1. Atitit 视图状态ViewState)的原理与管理

    Atitit  视图状态ViewState)的原理与管理   1.1. 视图状态ViewState的实现隐藏字段和url参数1 1.2. Asp.net的视图状态管理1 2. 1 2.1. H5的视图 ...

  2. iOS----CocoaPods的安装、使用和,原理+参考流程+常见问题

    一.什么是CocoaPods CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理.开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和第 ...

  3. react2 react 遍历数组

    <body><!-- React 真实 DOM 将会插入到这里 --><div id="example"></div> <!- ...

  4. Iframe去掉滚动条

    <html><head><title></title></head><body STYLE='OVERFLOW:SCROLL;OVER ...

  5. Highcharts结合PhantomJS在服务端生成高质量的图表图片

    项目背景 最近忙着给部门开发一套交互式的报表系统,来替换原有的静态报表系统. 老系统是基于dotnetCHARTING开发的,dotnetCHARTING的优势是图表类型丰富,接口调用简单,使用时只需 ...

  6. Sublime Text配置Python开发利器

    Sublime Text配置Python开发利器 收好了 自动提示 jedi 代码格式化 Python PEP8 autoformat 如果还需要在shell中搞搞研究的话,ipython将是很好的选 ...

  7. Jasmine入门(上)

    什么是Jasmine Jasmine是一个Javascript的BDD(Behavior-Driven Development)测试框架,不依赖任何其他框架. 如何使用Jasmine 从Github上 ...

  8. QTP11的下载地址和破解教程

    qtp11 下载地址 http://pan.baidu.com/s/1rE3l6 qtp10的破解 下载注册机http://ishare.iask.sina.com.cn/f/20991520.htm ...

  9. uva 10801 - Lift Hopping(最短路Dijkstra)

    /* 题目大意: 就是一幢大厦中有0-99的楼层, 然后有1-5个电梯!每个电梯有一定的上升或下降速度和楼层的停止的位置! 问从第0层楼到第k层最少经过多长时间到达! 思路:明显的Dijkstra , ...

  10. 序列sequence中的cache问题

    Oracle中序列Sequence的创建语法如下: CREATE SEQUENCE [ schema. ] sequence [ { INCREMENT BY | START WITH } integ ...