web请求过程

第一章 深入Web请求过程

B/S两方面好处:

  1. 客户端使用统一的浏览器(Browser)。浏览器统一性,屏蔽了不同服务器提供商提供服务的差异性。并且,浏览器交互特性使浏览器使用方便,且用户行为的可继承性非常强。
  2. 服务端(Server)基于统一的HTTP协议。简化服务提供商开发模式,规范服务器开发者上午开发模式。

1.1 B/S网站架构概述

HTTP协议采用无状态的短连接的通信方式。通常一次请求就完成一次数据交互,通常也对应一个业务逻辑。
web请求过程

URL请求DNS把域名解析成为IP地址,根据IP地址找到对应的服务器,向服务器发送请求,服务器返回数据资源给访问的用户。负载均衡给服务器分配请求,请求数据存储在分布式缓存、静态文件、数据库里。静态资源会发起额外的HTTP请求,CDN服务器处理这个请求。

互联网应用原则:

  • 互联网上所有资源用一个URL(统一资源定位符)表示。
  • 必须基于HTTP协议与服务端交互。
  • 数据展示必须在浏览器中进行。

1.2 如何发起一个请求

浏览器建立Socket连接之前,必须根据地址栏里的URL的域名DNS解析出IP,根据IP地址和默认80端口与远程服务器建立Socket连接,浏览器根据URL组装一个GET类型的HTTP请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.read返回数据,最后断开连接。

1.3 HTTP协议解析

B/S网络架构中核心是HTTP协议。
HTTP协议中最重要的是HTTP Header。HTTP Header控制着用户浏览器渲染行为和服务器的执行逻辑。
web请求过程
web请求过程

1.3.2浏览器缓存机制

Ctrl+F5刷新页面一定能够请求没有缓存的页面。
Ctrl+F5刷新页面,浏览器直接向目标URL发送请求,不使用浏览器缓存。
Ctrl+F5刷新页面,HTTP请求头增加一些请求头,Pragma:no-cache,Cache-Control:no-cache

  1. PragmaCache-Control用于指定所有缓存机制在整个请求/响应链中必须服从的指令。
    web请求过程

  2. Expires:Sar,25 Feb 2012 12:22:17 GMT 浏览器请求前检查这个字段,是否过期,过期重新向服务器发起请求。
  3. Last-Modified/EtagLast-Modified表示一个服务器上的资源的最后修改时间。浏览器请求头增加一个If-Modified—Since:Sar,25 Feb 2012 12:22:17 GMT,询问是否最新,是最新的返回304,也不会传新数据。Etag类似,让服务器给每个页面分配唯一的编号,通过编号区分是否最新,比Last-Modified灵活,但多台后端服务器不好处理。

1.4 DNS域名解析

web请求过程

  1. 浏览器检查缓存是否有域名对应的IP。
  2. 浏览器查找操作系统是否有对应的DNS解析成果。
  3. 操作系统把域名发给LDNS,本地区的域名服务器。
  4. LDNS没有,直接到Root Server域名服务器请求解析。LDNS承担了主要的域名解析工作。
  5. 根域名服务器返回给本地域名服务器一个所查询域的主域名服务器gTLD Server地址。gTLD国际*域名服务器,只有13台左右。
  6. 本地域名服务器(Local DNS Server)向gTLD Server发送请求。
  7. 接受请求的gTLD Server查找返回此对应域名的Name Server域名服务器地址。你注册的域名服务器,某台服务商申请域名,域名解析交给域名服务器。
  8. Name Server域名服务器地址查询域名和IP映射关系表,连同TTL值返回给DNS Server域名服务器。
  9. 返回该域名对应的IP和TTL值,Local DNS Server缓存这个域名和IP对应关系,缓存时间TTL值控制。
  10. 解析结果给用户,用户根据TTL值缓存到本地系统中,域名解析结束。

1.4.4 几种域名解析方式

A记录、MX记录、CNAME记录、NS记录和TXT记录。

  • A记录,Address,用来指定域名对应的IP地址。A记录可以将多个域名解析到一个IP地址,不能将一个域名解析到多个IP地址。
  • MX记录,Mail Exchange,将某个域名下邮件服务器指向自己的Mail Server。DNS会将[email protected]请求发送在mail服务器地址,正常WEB请求仍然解析至A记录的IP地址。
  • CNAME记录,Canonical Name(别名解析)。为一个域名设置一个或者多个别名。
  • NS记录,为某个域名指定DNS解析服务器,这个域名有指定的IP地址的DNS服务器去解析。
  • TXT记录,为某个主机名或域名设置说明。

1.5 CDN工作机制

内容分布网络(Content Delivery Network)。CDN=镜像mirror+缓存cache+整体负载均衡GSLB。
CDN一缓存网站中的静态数据为主。加速网页数据内容的下载速度。

目标

  • 可扩展(Scalability)。性能可扩展。成本可扩展。
  • 安全性(Security)。
  • 可靠性、响应和执行(Reliability、Responsiveness和Performance)。

web请求过程

访问静态文件,先向Local DNS服务器发起请求,经过迭代到达域名注册服务器解析,公司DNS把请求重新CNAME解析到另外的一个域名,这个域名指向CDN的DNS负载均衡服务器,由这个GTM分配用户距离最近的CDN节点。如果这个CDN节点请求不存在,会再回原站获取文件,返回给用户。

1.5.2 负载均衡

Load Balance对工作任务进行平衡、分摊到多个操作单元上执行。
链路负载均衡、集群负载均衡、操作系统负载均衡。

  • 链路负载均衡,DNS解析成不同的IP。
  • 集群负载均衡。
    • 硬件负载均衡
    • 软件负载均衡
  • 操作系统负载均衡:操作系统级别的软中断和硬件中断。

1.5.3 CDN动态加速

在CDN的DNS解析中通过动态的链路探测来寻找回溯最好的一条路径,通过DNS的调度将所有请求调度到选定的路径上回溯。