网络架构概述.doc_第1页
网络架构概述.doc_第2页
网络架构概述.doc_第3页
网络架构概述.doc_第4页
网络架构概述.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

B/S 网络架构概述1.目前B/S网络架构大都采用类似下图所示的架构2.如何发起一个HTTP请求 就是建立一个Socket通信的通过Java代码1. 浏览器在建立Socket连接连接之前,必须根据地址栏输入的URL的域名DNS解析出IP地址,再根据这个IP地址和默认的80端口与远程服务器简历Socket连接,然后再根据这个URL组装成一个get类型的Http请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.rea放回数据,最后断开这个连接.不同的浏览简历连接的方式不同,管理连接的方式也不同.既然发送一个Http请求就是简历一个Socket通信,那么我们就可以不利用浏览器手动就可以发送一个Http请求了.Java代码1. 1.使用HttpClient2. 2.linux中使用curl+URL就能够发起一个Http请求可以加上-I来查看http协议头的信息,或者-H来添加HTTP3.Http协议的解析4.在浏览器中 查看http头的信息Java代码1. 1.Firefox中可以使用firebug,Httpfox这些插件来看看请求和返回的信息2. 2.IE中可使用httpWatch,httpfox,3. 3.Google中自带了F12就可以打开了.5.浏览器的缓存Java代码1. 1.为了获取最新的数据,我们可以使用Ctrl+F5来直接向目标URL发送请求.这样就不会使用浏览器缓存数据.2. 2.如果服务器前端部署了一个缓存服务器,比如Varnish代理,也可能直接使用缓存数据.3. 3.所以为了保存能够看到最新的数据,必须通过Http协议来控制了.在发送http请求的请求头中加入Cache-Control(控制浏览器)和Pragma(控制服务器)两个参数来控制,浏览器和缓存代理服务器必须服从命令请求最新的数据.HTTP的请求头中会增加一些请求头1 Cache-Control / PragmaJava代码1. 2. 这个HTTPHead字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令,3. 如果知道该页面是否为缓存,不仅可以控制浏览器,还可以控制和HTTP协议相关的缓存4. 或代理服务器。HTTPHead字段有一些可选值2ExpiresJava代码1. Expires通常的使用格式是Expires:Sat,25Feb201212:22:17GMT,后面跟着一个日期和时间,超过这个时间值后,缓存的内容将失效,也就是浏览器在发出请求之前检查这2. 这个字段,看该页面是否已经过期了,过期了就重新向服务器发起请求。3Last-Modified / EtagJava代码1. Last-Modified字段一般用于表示一个服务器上的资源的最后修改时间,资源可以是静态(静态内容自动加上Last-Modified字段)或者动态的内容(如Servlet提供了一个getLastModified方法用于检查某个动态内容是否已经更新),通过这个最后修改时间可以判断当前请求的资源是否是最新的。一般服务端在响应头中返回一个Last-Modified字段,告诉浏览器这个页面的最后修改时间.2. Etag:与Last-Modified字段有类似功能的还有一个Etag字段,这个字段的作用是让服务端给每个页面分配一个唯一的编号,然后通过这个编号来区分当前这个页面是否是最新的。3. 这种方式比使用Last-Modified更加灵活,但是在后端的Web服务器有多台时比较难处理,4. 因为每个Web服务器都要记住网站的所有资源,否则浏览器返回这个编号就没有意义6.DNS域名解析Java代码1. 1.将域名解析成IP就属于DN解析的工作范畴.目前世界上整个互联网有几个DNS根域名服务器.2. 步骤3. 1.用户输入域名-浏览器检测缓存(查看有无此域名解析过的IP地址)-有(解析结束)4. 浏览器的缓存域名是有限制的,大小限制,时间限制.时间的限制可以通过TTL(TimeToLive)属性来设置.(TTL的初值通常是系统缺省值,是包头中的8位的域)5. 6. 2.如果用户浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果一般在C:WindowSystem32driversetchosts文件里面.如果有浏览器就会使用这个ip地址.在linux中这个配置文件是/etc/named.conf修改这个文件可以达到同样的目的.7. 8. 前两个步骤都是在本地完成的.如果上面的步骤没有得到域名解析的IP,此时就会请求域名服务器来解析这个域名了9. 10. 3.根据网络配置中的DNS服务器地址(本地)-操作系统将(域名)-LDNS服务器-如果有-解析结束.(window:使用ipconfiglinux:cat/etc/resolv.conf)11. 12. 4.LDNS没有命中-RootServer根域名服务器请求解析13. 14. 5.RootServer根域名返回一个查询域名的主服务器地址gTLDServer地址-LDNS服务器15. 16. 6.LDNS-请求-gTLD服务器发送请求(gTLD:国际顶级域名服务器,如.com,.cn,.org全球只有13台左右)-NameServer域名服务器地址-NameServer(当初申请域名的提供商存储了当初域名对应的IP)-TTL+IP-LDNSServer(存储URL:IP,时间TTL控制)-用户(浏览器将TTL,URL:IP值缓存在本地中)-解析结束7.清除缓存的域名Java代码1. 1.LDNS的缓存很难清理2. 2.所以只能清理本地3. Window:ipconfig/flushdns命令来刷新缓存4. Linux:sudo/etc/init.d/nscdrestart5. 6. 3.在java应用中JVM也会缓存DNS的解析结果,这个缓存实在InetAddress类中完成,而且这个缓存时间还比较特殊,有两种缓存策略:7. (在配置项在%JAVA_HOME%libsecurityjava.security)8. 1.正确的结果缓存:networkaddress.cache.ttl默认值-1永不失效9. 2.失败的结果缓存:networkaddress.cache.negative.ttl默认值1010秒10. 11. 3.修改的方式,分别是12. A:直接修改java.security13. B:在java启动参数中增加-D.inetaddr.ttl=xx来修改默认值14. C:通过InetAddress类来动态修改.(如果我们需要InetAddress来解析域名一定要是单例模式.否则每次都解析,很耗时间)8.域名记录的分类 A记录, MX记录, CNAME记录 NS记录 TXT记录 A:记录Java代码1. A表示的Address用来指定对应的Ip地址.2. 例如指定到413. 将记录到121/14/23/2314. A记录可以将多个域名解析到一个Ip地址不能将一个域名解析到多个IP地址MX:记录表示Java代码1. ,MailExchange,就是将某个域名下的邮件服务器窒息nag自己的MailServer2. 例如:域名的A记录的IP地址为45.3. 如果MX记录设置为46,是XXX的邮件路由,DNS会讲邮件发送到46所在的服务器.而正常通过web请求的话仍然解析到A记录IP地址CNAME记录Java代码1. 全程是CanonicalName(别名解析).所谓的别名解析就是可以为一个域名设置一个或者多个别名.如将解析到讲接续到2. 其中分别是srcfan,com,前面的跟踪域名解析为1542INCNAME就是CNAME解析NS记录Java代码1. 为某个域名指定的DNS服务器,也就是域名有指定的IP地址的DNS服务器解析.2. (可能类似NameServer域名提供商会指定某个域名有某个DNS服务器去解析然后返回IP地址)TXT记录Java代码1. 为某个主机名或域名设置说明,如可以为设置TXT记录为君山的博客|徐令波这样的说明9 CDN工作机制Java代码1. CDN:内容分布网络(ContentDeliveryNetwork)它是构筑在现有Internet上一种先进的流量分配网络.目的在现有的Interner中增加一层新的网络架构,讲网站的内容发布到最接近用户网络边缘,是用户就近获取所需的内容.提高用户访问网站的相应速度.有别于镜像.比镜像跟智能.2. CDN=镜像(Mirror)+缓存(Cache)+整体负载均衡(GSLB).因而.CDN可以明显提高Internet中信息流动的效率.3. 目前CDN都是缓存网站中静态数据为主,CSSJS图片静态页面等数据.4. 用户从主站中请求到内容后在从CDN上下载静态的数据.从而加速网页的显示速度.如淘宝有90%以上的数据都是有CDN来提供的.5. 通常CDN要达到一下几个目标6. 1.可扩展Scalability.性能可扩展性.因对新增的大量数据.用户,和事物的扩展能力,成本可扩展性.用低廉的运营成本来提供动态的服务能力和高质量的内容分发.7. 8. 2.安全性:强调提供物理设备,网络,软件,数据和服务过程的安全性.减少DDos攻击性和其他恶意行为造成商业网站业务中断9. 10. 3.可靠性,响应,执行(Reliability,ResponsivenessPerformance).服务可用性.能够处理可能的故障,和用户体验的下降.通过负载均衡即使提供网络的容错机制.10.CDN 架构11负载均衡Java代码1. 负载均衡:LoadBalance就是对工作任务进行平衡,均摊,到多个操作单元上执行,如图片服务器,应用服务器,共同完成工作任务.它可以提高服务器响应的速度和利用效率.解决网络拥堵问题.分类:A:链路负载均衡:Java代码1. 就是前面提到的通过DNS解析成不同的IP.然后用户根据Ip来访问不同的目标服务器:2. 缺点:如果一种一条webService挂掉了,由于LDNS有缓存,那么用户就无法访问这个域名.3. 优点:GDNS(全局DNS服务器)给出的webServerIP后用户可以直接访问目标服务器.速度快B:集群负载均衡: 分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论