HTTP协议采用无状态的短连接的通信方式。通常一次请求就完成一次数据交互,通常也对应一个业务逻辑。
当在浏览器里输入一个URL,首先会请求DNS把域名解析成为IP地址,根据IP地址找到对应的服务器,向服务器发送请求,服务器返回数据资源给访问的用户。
服务器端的其他操作:负载均衡平均分配所有用户的请求。请求数据可能存储在分布式缓存、静态文件、数据库里。静态资源会发起额外的HTTP请求,这些请求可能在CDN上,CDN服务器处理这个请求。
互联网应用原则:
浏览器在建立Socket连接之前,必须根据地址栏里的URL的域名DNS解析出IP,根据IP地址和默认80端口与远程服务器建立Socket连接,浏览器根据URL组装一个GET类型的HTTP请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.read返回数据,最后断开连接。
发起一个HTTP请求的过程就是建立一个Socket通信的过程。
B/S网络架构中核心是HTTP协议。 HTTP协议中最重要的是HTTP Header。
HTTP Header控制着用户浏览器渲染行为和服务器的执行逻辑。
浏览器缓存机制:
Ctrl+F5刷新页面一定能够请求没有缓存的页面。 Ctrl+F5刷新页面,浏览器直接向目标URL发送请求,不使用浏览器缓存。
Ctrl+F5刷新页面,HTTP请求头增加一些请求头,Pragma:no-cache
,Cache-Control:no-cache
。
内容分发网络(Content Delivery Network)。CDN=镜像+缓存+整体负载均衡。
CDN以缓存网站中的静态数据为主。
用户从主站服务器请求到动态内容后,再从CDN上下载这些静态数据,从而加速网页数据内容的下载速度。
步骤:
访问静态文件,先向Local DNS服务器发起请求,经过迭代到达域名注册服务器解析,
公司DNS把请求重新CNAME解析到另外的一个域名,这个域名指向CDN的DNS负载均衡服务器,由这个GTM分配用户距离最近的CDN节点。
有了DNS的解析结果,用户就可以去这个CDN节点访问这个静态文件了。
如果在这个CDN节点中,所请求的文件不存在,会再回源站获取文件,返回给用户。
负载均衡:
负载均衡对工作任务进行平衡、分摊到多个操作单元上执行。
通常有三种负载均衡架构:链路负载均衡、集群负载均衡、操作系统负载均衡。
链路负载均衡:由DNS解析成不同的IP。
集群负载均衡:分为硬件负载均衡和软件负载均衡。
硬件负载均衡:价格贵。
软件负载均衡:使用最普遍的一种负载方式。缺点是一次访问要经过多次代理服务器,会增加网络延时。
操作系统负载均衡:利用操作系统级别的软中断和硬件中断来达到负载均衡。
CDN动态加速:
原理:在CDN的DNS解析中通过动态的链路探测来寻找回源最好的一条路径,通过DNS的调度将所有请求调度到选定的路径上回源,从而加速用户访问的效率。
原文:https://www.cnblogs.com/mengchunchen/p/9268984.html