深入Java Web技术内幕-----1 web的请求过程:HTTP解析,DNS域名解析

BS架构的好处:1.客户端使用统一的浏览器。2.服务端基于统一的HTTP。和传统的C/S架构使用自定义的应用层协议不同,B/S架构使用的都是统一的HTTP。基于HTTP 的服务器有很多比如Apache、IIS、Nginx、Tomcat、JBoss等,这些服务器可以直接拿来使用,不需要服务开发这单独使用。


我们需要知道的是用户点击浏览里的某个链接开始到我们的服务返回结果给浏览器为止这个过称发生了什么,这其中需要哪些技术配合。这一过称涉及浏览器的基本行为、HTTP的解析过称、DNS如何解析到对应的IP地址、CDN又是如何工作和设计的,以及浏览器如何渲染出返回的结果等。

B/S网络架构概述
 B/S的网络架构从前端到后端都得到了简化, 都是基于统一的应用层协议HTTP来交互数据,与大多数传统C/S互联网应用程序采用的长连接的交互模式不同,HTTP采用无状态的短连接的通信方式。一次请求就是完成了一次数据交互,通常也对应着一个业务逻辑,然后这次通信连接就断开了, 采用这种方式是为了服务更多的用户,因为当前互联网应用每天都会处理上亿的用户请求,不可能每个用户访问一次后就一直保持这个连接。 


B/S网络架构的好处:既要满足海量用户的访问请求,又要保持用户的请求的快速响应,所以现在的网络架构也越来越复杂。


当用户在浏览器的地址栏里输入一个网址并回车时的过程为:1.它会请求DNS把这个域名解析成对应的IP地址,然后根据这个IP地址在互联网上找到对应的服务器,向这个服务器发起一个get请求,由这个服务器决定返回默认的数据资源给访问的用户。服务器端还有很复杂的业务逻辑:服务器可能有很多台,到底指定哪台服务器来处理请求,这需要一个负载均衡设备来平均分配所有用户的请求;还有请求的数据是存储在分布式缓存里还是一个静态文件中,或是数据库里;当数据返回浏览器时,浏览器解析数据发现哈有一些静态资源时,又会发起另外的HTTP请求,而这些请求很可能在CDN上,那么CDN服务器又会处理这个用户的请求。‘’



发起HTTP请求

发起一个HTTP请求和建立一个Socket连接区别不大,只不过OutputStream.write写的二进制字节数据格式要符合HTTP,浏览器在建立Socket连接之前,必须根据地址栏里的域名DNS解析出IP地址,再根据这个IP地址和默认的80端口与远程服务器建立Socket链接,然后浏览器根据这个URL组装成一个get类型的HTTP请求头,通过OutputStream.write发送到目标服务器,服务器等待inputStream.read返回数据。由此发起一个HTTP的过程就是建立一个Socket连接。


HTTP解析

B/S网络架构的核心是HTTP, 要掌握HTTP就是要熟悉HTTP中的HTTP Header,  HTTP Header 控制着互联网成千上万的用户的数据的传输。



浏览器缓存机制


DNS域名解析
互联网是通过URL来发布和请求资源的,而URL中的域名需要解析成IP地址才能与远程主机建立连接,如何将域名解析成IP地址就属于DNS解析的工作范畴。
(域名解析相关知识点:)
DNS解析过称大体分为10个步骤:
  • 浏览器中首先会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过称就结束。浏览器的缓存域名也是有限制的,不仅浏览器的缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名的缓存时间是通过TTL设置的。
TTL: TTL(Time-To-Live),就是一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器(权威域名服务器)发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器(各地的缓存服务器,也叫递归域名服务器)中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。

  • 如果浏览器的缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果,你可以将任何域名解析到任何能够访问的IP地址。如果在此处指定了一个域名的IP地址,那么浏览器会首先使用这个IP地址。
  • 如何、怎么知道这个域名服务器呢????   如果在上两个过程中无法解析时,操作系统会把这个域名发送给这里设置的LDNS,也就是本地区的域名服务器。 
  • 如果LDNS仍然没有命中,就直接到Root Server域名服务器请求解析。
  • 根域名服务器返回给本地域名服务器一个所查询的主域名服务器(gTLD Server)地址,主域名服务器是国际顶级域名服务器。全球只有13台。
  • 本地域名服务器再向上一步返回的gTLD服务器发送请求。
  • 接受请求的gTLD服务器查找并返回此域名对应的Name Server 域名服务器的地址。这个Name Server通常都是你注册的域名服务器。
  • Name Server 域名服务器会查询存储的域名和IP的映射关系表。由此根据域名得到目标IP记录,连同一个TTL值返回给DNS Server域名服务器。
  • 返回该域名对应的IP和TTL值,Local DNS Server 会缓存这个域名和IP的对应关系,缓存时间由TTL值控制。
  • 把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中。


CDN工作机制

CDN 也就是内容分布网络,它是构筑在现有Internet上的一种先进的流量分配网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘。使用户可以就近取得所需的内容,提高用户访问网站的响应速度。



负载均衡

负载均衡(load balance)就是对工作任务进行平衡、分摊到多个操作单元上执行,如图片服务器、应用服务器等,共同完成工作任务。他 可以提高服务器响应速度及利用效率,避免软件或者硬件模块出现单点失效,解决网络拥塞问题,实现地理位置无关性。

负载均衡三种架构:分别是 链路负载均衡、集群负载均衡、和操作系统负载均衡。

  1. 链路负载均衡也就是前面提到的通过DNS解析成不同的IP,然后用户根据这个IP来访问不同的目标服务器。
负载均衡是由DNS的解析来完成的,用户最终访问哪个Web Server服务器是由DNS Server 来控制的,在这里就是Global DNS Server 来动态解析域名服务。这种DNS 解析的优点是用户会直接访问目标服务器,而不需要经过其他的服务器,通常访问速度快,缺点是由于DNS在用户本地和Local DNS Server都有缓存,一旦某台Web Server挂掉,就很难及时更新用户的域名解析结构。

  1.  集群负载均衡为另一种硬件负载均衡和软件负载均衡。硬件负载均衡的关键就是需要昂贵的硬件设施,需要一主一备。软件负载均衡优点是成本非常低,缺点是一次访问需要经过多次代理服务器。
  LVS是一种集群技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、、高可用的虚拟服务器。
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值