深入分析JavaWeb技术内幕—深入Web请求过程

深入分析JavaWeb技术内幕—深入Web请求过程

B/S网络架构概述

B/S网络架构特点

在B/S架构中,客户端使用浏览器,服务端则基于统一的HTTP。这带来了很多优点,比如出现了许多基于HTTP的服务器,开发者可以直接拿来使用。

与大多数C/S模式的长连接交互模式不同,HTTP采用短连接通信方式,一次请求对应一次数据交互和业户逻辑,然后连接断开。这样做是为了能够同时服务更多的用户。

网络架构特点

用户输入URL(统一资源定位符),请求DNS把域名解析为IP地址,再根据IP地址找到互联网上相应的服务器。网络架构会越来越复杂,但有一些原则始终不变:

1.互联网上每个资源用URL表示

2.必须基于HTTP与服务端交互

3.数据必须再浏览器中展示

如何发起一个请求

下面介绍如何发出HTTP请求,讨论两个问题,能不能自己组装一个HTTP的数据包;还有哪些方式能简单地发起HTTP请求。

发起一个HTTP的过程就是建立一个Socket通讯的过程

发起HTTP请求与建立Socket连接很相似,只不过outputSteam.write写的二进制字节数据要符合HTTP的要求。浏览器根据URL域名DNS解析出IP地址,根据这个IP地址与默认端口号80与远程服务器建立Socket连接,然后根据URL组装成一个get类型的HTTP请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.read返回数据,然后断开链接。

Linux系统中,使用curl + URL就可以简单的发起一个HTTP请求。

HTTP解析

了解了发送HTTP请求的过程,我们直到,发送HTTP请求的本质是使用HTTP的规则建立Socket连接,B/S网络架构的核心就是HTTP。

HTTP Header是HTTP中最终要的部分,也是了解HTTP的关键,它控制着浏览器的渲染行为以及服务器的执行逻辑。常见的HTTP请求头和响应头以及状态码需要熟悉。

浏览器的缓存机制

浏览页面发生异常时,通常考虑是不是浏览器做了缓存,通过Ctrl+F5组合健刷新页面,浏览器会直接向目标发送数据,而不使用缓存,其次,即使直接向服务端发送请求,得到的也可能是缓存数据,因为服务器前端可能部署了缓存服务器。

使用Ctrl+F5打开界面时,其实是增加了一些与缓存控制有关的请求头。

DNS域名解析

域名解析过程

1.检查浏览器缓存有没有域名对应的IP地址

2.检查操系统缓存中有没有域名对应的DNS解析结果

3.请求LDNS本地域名解析服务器

4.请求Root DNS Server服务器

5.Root DNS Server返回给LDNS一个gTLD Server国际顶级域名服务器地址

6.LNDS向gTLD发起请求

7.gTLD返回给LDNS NameServer域名(提供商)服务器

8.LDNS向NameServer发送请求

9.NameServer将IP以及TTL返回给LDNS,DNS缓存域名和TTL

10.NameServer将域名与IP的对应关系及TTL返回给用户,用户将其存储到本地缓存

上述是简化的过程,NameServer可能有很多层,或者由一个GTM负载均衡来控制

清空缓存的域名

windows系统和Linux系统可以通过cmd来清除本地缓存。Java应用中JVM也会缓存DNS的解析结果,要修改JVM的缓存策略,可以子啊Java的启动参数中设置。

深入分析JavaWeb技术内幕—深入Web请求过程

CDN工作机制

CDN简介

CDN是内容分布网络,通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”。用户可以就近获取所需内容,提高访问网站的相应速度。CDN以缓存静态数据为主,用户从主站服务器请求到动态内容后,从CDN下载静态数据,从而加速内容的下载速度。

CDN的目标

1.可扩展

2.安全性

3.可靠性

CDN架构

访问静态文件->迭代到的域名回到注册服务器解析->解析结果发送给GTM->GTM分配离用户最近的CDN节点,返回对应的IP->用户取CND节点访问静态文件->这个节点没有则直接去源站获取这个文件。

负载均衡

负载均衡就是对任务进行平衡、分摊到多个单元上执行。提高访问效率,避免软硬件出现单点失效,解决网络拥塞,为用户提供较为一致的访问质量。

1.链路负载均衡:通过DNS解析成不同IP,用户根据IP访问不同服务器。优点是不经过代理服务器,访问速度较快。缺点是DNS在本地用户以及LDNS都有缓存,一旦IP对应的服务器挂掉,那么将无法访问这个域名。

2.集群负载均衡——硬件负载均衡:使用一台专门的硬件设备来转发请求。优点是性能非常好,缺点是价格昂贵,不能进行动态扩容。

3.集群负载均衡——软件负载均衡:使用PC就可以搭建。优点是成本低,去缺点是需要经过多次代理服务器,增加延时。

4.操作系统负载均衡

CDN动态加速

当前比较流行的一种优化技术,在CDN的DNS解析中用过动态的链路探测寻找回源最好的一条路径,通过DNS的调度将所有请求调度到这条回源路径上,从而加速访问效率。这个路径被更新到LDNS中。

虽然速度加快,但可能成本增加很多,因此需要综合考虑时间和成本的问题。

xmind知识结构图

深入分析JavaWeb技术内幕—深入Web请求过程

相关推荐