`
Luob.
  • 浏览: 1589912 次
  • 来自: 上海
社区版块
存档分类
最新评论

B/S 网络架构概述

阅读更多
1.目前B/S网络架构大都采用类似下图所示的架构



2.如何发起一个HTTP请求 就是建立一个Socket通信的通过
浏览器在建立Socket连接连接之前,必须根据地址栏输入的URL的域名DNS解析出IP地址,再根据这个IP地址和默认的80 端口与远程服务器简历Socket连接,然后再根据这个URL组装成一个get类型的Http请求头,通过outputStream.write 发送到目标服务器,服务器等待inputStream.rea放回数据,最后断开这个连接. 不同的浏览简历连接的方式不同,管理连接的方式也不同.既然发送一个Http请求就是简历一个Socket通信,那么我们就可以不利用浏览器手动就可以发送一个Http请求了.

1.使用 HttpClient
2.linux 中 使用 curl +URL 就能够发起一个Http请求 可以加上 -I 来查看http协议头的信息,或者 -H来添加 HTTP


3.Http协议的解析



4.在浏览器中 查看http头的信息
1.Firefox中可以使用 firebug ,Httpfox这些插件来看看请求和返回的信息
2.IE 中可使用 httpWatch,httpfox ,
3.Google中自带了F12 就可以打开了.


5.浏览器的缓存
1.为了获取最新的数据,我们可以使用Ctrl+F5 来直接向目标URL发送请求.这样就不会使用浏览器缓存数据.
2.如果服务器前端部署了一个缓存服务器,比如 Varnish代理,也可能直接使用缓存数据.
3.所以为了保存能够看到最新的数据,必须通过Http协议来控制了. 在发送http请求的请求头中加入 Cache-Control(控制浏览器) 和 Pragma (控制服务器)  两个参数来控制,浏览器和缓存代理服务器 必须服从命令请求最新的数据.


HTTP的请求头中会增加一些请求头

1 .Cache-Control / Pragma
 
    这个HTTP   Head 字段用于指定所有缓存机制在整个请求/ 响应链中必须服从的指令, 
如果知道该页面是否为缓存,不仅可以控制浏览器,还可以控制和HTTP 协议相关的缓存 
或代理服务器。HTTP Head 字段有一些可选值




2.Expires
    Expires 通常的使用格式是Expires : Sat, 25 Feb 2012 12:22:17 GMT ,后面跟着一个日期和时间,超过这个时间值后,缓存的内容将失效,也就是浏览器在发出请求之前检查这 
个页面的这个字段,看该页面是否已经过期了,过期了就重新向服务器发起请求。


3.Last-Modified  /  Etag
   
Last-Modified 字段一般用于表示一个服务器上的资源的最后修改时间,资源可以是静态(静态内容自动加上 Last-Modified字段)或者动态的内容(如 Servlet 提供了一个 getLastModified 方法用于检查某个动态内容是否已经更新),通过这个最后修改时间可以判断当前请求的资源是否是最新的。一般服务端在响应头中返回一个 Last-Modified字段,告诉浏览器这个页面的最后修改时间.
Etag: 与 Last-Modified 字段有类似功能的还有一个 Etag 字段,这个字段的作用是让服务端 给每个页面分配一个唯一的编号,然后通过这个编号来区分当前这个页面是否是最新的。 
这种方式比使用Last-Modified 更加灵活,但是在后端的Web 服务器有多台时比较难处理, 
因为每个Web 服务器都要记住网站的所有资源,否则浏览器返回这个编号就没有意义


6.DNS域名解析
1.将域名解析成IP就属于DN解析的工作范畴.目前世界上整个互联网有几个DNS根域名服务器.
步骤
1.用户输入域名--->浏览器检测缓存(查看有无此域名解析过的IP地址)--->有(解析结束)
  浏览器的缓存域名是有限制的,大小限制,时间限制.时间的限制可以通过TTL(Time To Live) 属性来设置.(TTL的初值通常是系统缺省值,是包头中的8位的域)

2.如果用户浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果一般在 C:\Window\System32\drivers\etc\hosts 文件里面.如果有 浏览器就会使用这个ip地址. 在linux 中这个配置文件是/etc/named.conf 修改这个文件可以达到同样的目的.

前两个步骤都是在本地完成的. 如果上面的步骤没有得到域名解析的IP,此时就会请求域名服务器来解析这个域名了

3.根据网络配置中的 "DNS服务器地址(本地)"--->操作系统将(域名)--->LDNS服务器--如果有-->解析结束.(window:使用ipconfig linux: cat /etc/resolv.conf)

4.LDNS没有命中--->Root Server根域名服务器请求解析

5.Root Server根域名返回一个 查询域名的 主服务器地址 gTLD Server 地址----->LDNS 服务器

6.LDNS---请求-->gTLD服务器发送请求(gTLD:国际顶级域名服务器,如.com ,.cn,.org全球只有13台左右)----NameServer域名服务器地址--->NameServer(当初申请域名的提供商存储了当初域名对应的IP)----TTL+IP----->LDNS Server(存储 URL:IP,时间TTL控制)--->用户(浏览器将TTL,URL:IP 值缓存在本地中)--->解析结束




7.清除缓存的域名
1.LDNS的缓存很难清理
2.所以只能清理本地
  Window:ipconfig/flushdns 命令来刷新缓存
  Linux:sudo /etc/init.d/nscd restart 

3.在java应用中JVM也会缓存DNS的解析结果,这个缓存实在InetAddress类中完成,而且这个缓存时间还比较特殊,有两种缓存策略:
(在配置项在 %JAVA_HOME%\lib\security\java.security)
1.正确的结果缓存:  networkaddress.cache.ttl   默认值 -1 永不失效
2.失败的结果缓存:  networkaddress.cache.negative.ttl 默认值10 10秒

3.修改的方式,分别是 
 A:直接修改 java.security 
 B:在java启动参数中增加-Dsun.net.inetaddr.ttl=xx 来修改默认值
 C:通过InetAddress类来动态修改.(如果我们需要InetAddress来解析域名一定要是单例模式.否则每次都解析,很耗时间)


8.域名记录的分类  A记录, MX记录,  CNAME记录 NS记录 TXT记录
  A:记录
 A表示的Address用来指定对应的Ip地址.
    例如  item.taobao.com 指定到115.238.23.241
         将switch.taobao.com记录到 121/14/23/231 
    A记录可以将多个域名解析到一个Ip地址.不能将一个域名解析到多个IP地址.


MX:记录表示
,Mail Exchange, 就是将某个域名下的邮件服务器窒息nag自己的Mail Server
    例如: taobao.com域名的A记录的IP地址为 115.238.25.245. 
          如果 MX 记录设置为 112.238.25.246,是 XXX@taobao.com的邮件路由,DNS会讲邮件发送到115.238.25.246所在的服务器.而正常通过web请求的话仍然解析到A记录IP地址


CNAME记录
全程是 Canonical Name(别名解析).所谓的别名解析就是可以为一个域名设置一个或者多个别名. 如将 taobao.com 解析到 xulingbo.net 讲srcfan.com 接续到xulingbo.net
其中xulingbo.net 分别是taobao.com srcfan,com,前面的跟踪域名解析为 www.taobao.com 1542 IN CNAME www.bslb.taobao.com 就是CNAME 解析


NS记录 
 为某个域名指定的DNS服务器, 也就是域名有指定的IP地址的DNS服务器解析.
  (可能类似  Name Server 域名提供商 会指定某个域名有某个 DNS服务器去解析 然后返回IP地址)


TXT记录
为某个主机名或域名设置说明,,如可以为xulinbo.net设置TXT记录 为 "君山的博客|徐令波" 这样的说明


9 CDN工作机制
CDN:内容分布网络 ( Content Delivery Network) 它是构筑在现有Internet上一种先进的流量分配网络.目的在现有的Interner中增加一层新的网络架构,讲网站的内容发布到最接近用户网络"边缘",是用户 就近获取所需的内容.提高用户访问网站的相应速度. 有别于镜像.比镜像跟智能.
CDN=镜像(Mirror)+缓存(Cache)+整体负载均衡(GSLB).因而.CDN可以明显提高Internet中信息流动的效率.
目前 CDN都是缓存网站中静态数据为主,CSS JS 图片 静态页面等数据.
用户从主站中请求到内容后在从CDN上下载静态的数据.从而加速网页的显示速度.如淘宝有90%以上的数据都是有CDN来提供的.
通常CDN要达到一下几个目标
1.可扩展Scalability.性能可扩展性.因对新增的大量数据.用户,和事物的扩展能力,成本可扩展性.用低廉的运营成本来提供动态的服务能力和高质量的内容分发.

2.安全性:强调提供物理设备,网络,软件,数据和服务过程的安全性.减少 DDos攻击性和其他恶意行为造成商业网站业务中断

3.可靠性,响应,执行 (Reliability,Responsiveness Performance).服务可用性.能够处理可能的故障,和用户体验的下降.通过负载均衡即使提供网络的容错机制.


10.CDN 架构



11负载均衡
 负载均衡: Load Balance 就是对工作任务进行平衡,均摊,到多个操作单元上执行,如 图片服务器,应用服务器,共同完成工作任务. 它可以提高服务器响应的速度和利用效率.解决网络拥堵问题.

分类:
A:链路负载均衡:
 就是前面提到的通过DNS解析成不同的IP.然后用户根据Ip来访问不同的目标服务器: 
缺点:如果一种一条webService 挂掉了,由于LDNS有缓存,那么用户就无法访问 这个域名.
优点:GDNS (全局DNS 服务器)给出的webServer IP后 用户可以直接访问目标服务器.速度快




B:集群负载均衡:
  分为:
硬件负载均衡 :
使用一台专门的硬件设备来转发请求.
缺点: 价格贵,在超出服务极限时候不能动态扩容.如F5 
优点:性能非常好,稳定.




软件负载均衡:
使用最普遍的一种方式.直接使用廉价的PC就可以搭建
缺点:一般一次访问请求要经过多次代理服务器(使用Ip进行转发),增加的网络延时
有点:成本非常低





C:操作系统负载均衡:
利用操作系统基本的软中断和硬件中断来达到负载均衡,如可以设置多队列网卡来等来实现.
  • 大小: 53.6 KB
  • 大小: 128.1 KB
  • 大小: 95.5 KB
  • 大小: 32.9 KB
  • 大小: 75.6 KB
  • 大小: 21 KB
  • 大小: 16.6 KB
  • 大小: 34.2 KB
分享到:
评论

相关推荐

    B/S架构的原理与应用

    #### B/S架构概述 B/S(Browser/Server)架构是一种基于浏览器和服务器之间的交互模式,它随着互联网技术的发展而兴起,并被视为是对传统的C/S(Client/Server)架构的一种改进或变化。在B/S架构中,用户通过Web...

    一个 用jsp做的b/s架构的项目开发环境

    ### 一个用JSP做的B/S架构的项目开发环境 #### 概述 本文档将详细介绍如何构建一个基于JSP的B/S架构项目开发环境。该环境不仅包含了必要的软件组件,还提供了具体的安装步骤和配置指南,以确保开发者能够快速搭建...

    B/S架构软件的优势与劣势

    3. **安全性挑战**:虽然B/S架构具有良好的跨平台能力,但这也意味着它可能面临更多的安全威胁,如网络攻击、数据泄露等。 #### B/S框架与C/S架构的联系与区别 - **定义**: - C/S架构(Client/Server,客户端/...

    B/S框架和C/S框架的区别

    - **B/S架构**是一种基于浏览器的网络应用模式,用户通过浏览器访问服务器端的应用程序,无需安装额外的客户端软件。这种架构的核心在于利用Web技术,通过HTTP协议实现客户端与服务器之间的数据交换。 **2. 特点** ...

    一种基于B/S结构与C/S结构结合的新体系结构

    在众多的架构模式中,B/S(Browser/Server,浏览器/服务器)结构和C/S(Client/Server,客户机/服务器)结构是两种被广泛应用的体系结构。本文旨在通过对这两种结构的深入分析比较,探讨其未来的发展趋势,并在此...

    B/S结构和C/S结构

    2. **成本降低:**B/S架构允许使用多种操作系统平台,包括免费的Linux系统,进一步降低了成本。 3. **灵活的操作系统选择:**不依赖特定的操作系统,提高了灵活性和兼容性。 **劣势:** - **服务器负载较高:**大...

    基于B/S 模式的PACS 的研究与实现

    基于B/S模式的PACS系统采用了三层架构设计,分别为前端(客户端)、中间层以及后台系统。 - **前端**:即客户端,主要通过浏览器访问服务器端提供的JSP或Java Applet来实现用户界面。这种方式简化了客户端的配置和...

    asp基于b/S 聊天室系统

    #### B/S架构概述 B/S架构,即浏览器/服务器架构,是一种以Web浏览器为客户端的应用程序架构模式。这种模式下,用户通过浏览器访问服务器端提供的服务,而无需安装任何客户端软件。B/S架构的优点包括易于部署、维护...

    C/S和B/S结构的区别

    C/S(Client/Server)结构与B/S(Browser/Server)结构是两种常见的计算机网络应用程序架构模式。这两种模式各有优势和局限性,在不同的应用场景中有着各自的特点。 #### 二、C/S结构详解 **定义:** C/S结构即客户端/...

    PB11将C/S转换为B/S

    本章节将详细介绍PB11将C/S架构的应用程序转换为B/S架构的具体步骤。 ##### 1. 安装环境准备 在进行C/S到B/S的转换之前,首先需要完成必要的环境安装配置: - **1.1** 安装Windows IIS 5.0:这是构建B/S架构应用的...

    三层架构C/S

    - **性能限制**:相对于C/S架构,B/S架构在网络传输方面可能会有所延迟。 - **安全性挑战**:由于数据通过网络传输,需要采取额外的安全措施来保护数据安全。 #### 七、总结 三层架构C/S通过清晰地划分职责,不仅...

    C/S与B/S并用的高校教务管理系统研究与设计

    #### 二、C/S与B/S模式概述 ##### 1. 集中式管理——主机/终端模式 在早期的计算机时代,计算环境主要采用以主机为中心的模式,即主机/终端模式。在这种模式下,所有的数据管理和事务处理都高度集中于主机上,终端...

    C/S嵌入B/S方法

    本文将深入探讨一种将C/S模式下的绘图组件嵌入到B/S架构中的方法,并通过一个具体的示例——Wsi.dll组件的使用来详细说明这一过程。 #### 嵌入概述 在本案例中,我们讨论的是如何将一个名为Wsi.dll的绘图组件(在...

    PB11.5 C/S转B/S操作方法及所需组件包

    在信息化发展迅速的今天,很多企业开始寻求将原有的C/S架构转化为基于浏览器/服务器(B/S)架构,以适应更广泛的应用场景和更便捷的维护需求。本篇文章将详细介绍如何使用PB11.5将C/S程序转换为B/S模式,并提供所需...

    基于B/S模式的网络教学系统设计与开发

    B/S(Browser/Server)模式,即浏览器/服务器模式,是一种分布式架构,允许用户通过互联网上的任何设备上的浏览器访问应用程序。这种模式下,服务器端负责数据处理和业务逻辑,客户端只需通过浏览器显示数据和接收...

    基于B/S图书查询系统

    ### 基于B/S架构的图书查询系统 #### 一、系统概述 在数字化转型的大背景下,基于浏览器/服务器(Browser/Server,简称B/S)模式的应用系统因其易部署、易维护等特性受到了广泛的关注与应用。本系统旨在通过Java ...

    B/S架构条码打印,直接调用打印机指令编程(在TSC系列条码机上测试通过)

    #### 一、B/S架构条码打印概述 在现代企业管理与物流运作中,条形码打印技术扮演着极其重要的角色。它不仅提高了工作效率,还确保了数据的准确性。随着网络技术的发展,基于B/S(Browser/Server)架构的条码打印...

    基于B/S的网络商城系统的设计与实现

    本文档介绍了一种基于B/S(Browser/Server)架构的网络商城系统的设计与实现,该系统采用B2C(Business to Consumers)模式,旨在提供一个高效、安全、易用的在线购物平台。 #### 系统开发背景与意义 1. **背景**...

Global site tag (gtag.js) - Google Analytics