读书笔记-Web请求过程解析

读书笔记-Web请求过程解析

1.如何发起一个请求

当用户在浏览器输入 www.baidu.com 这个URL时,将会发生以下操作。

  • (1)浏览器请求DNS将这个域名解析为对应的IP地址。
  • (2)浏览器根据这个IP地址找到对应的服务器,向这个发起一个GET请求,并由这个服务器决定返回默认的数据资源给访问的用户。

在服务器端实际上有很复杂的业务逻辑,服务器可能有多台,这需要一个负载均衡设备来平分用户请求,指定哪台服务器用来处理用户请求;当默认的数据资源返回浏览器时,浏览器解析数据发现还需获取一些静态资源(比如CSS、JS、图片),这又会发起另外的HTTP请求,而这些资源又可能在CDN上,那么CDN服务器又会处理用户的这些请求。(PS:网站加载图片、样式等资源延迟的原因)

2.DNS域名解析

2.1 DNS域名解析过程

图1是DNS域名解析过程的主要请求过程示例图。
这里写图片描述
用户在浏览器中输入域名并按下回车键,将会发生以下过程。

  • (1)浏览器检查缓存中有没有这个域名对应的解析过的IP地址。如果有,解析过程结束,否则进入第2步。
  • (2)浏览器查看系统缓存中有没有域名对应的解析过的IP地址。操作系统有一个域名解析的过程,可以将任何域名解析到能够访问的IP地址,如果制定了一个域名对应的IP地址,那么浏览器会首先使用这个IP地址。例如,在测试时可以将一个域名解析到一台测试服务器上,这样就不用修改任何代码就能测试到单独服务器上的代码业务逻辑是否正确。(PS,这点会产生安全隐患,黑客可以将某些预定解析到其所指定的IP地址上)
  • (3)如果通过1,2步仍未成功的话,将会真正请求域名服务器解析这个域名。Local DNS即本地区的域名服务器,会提供给你本地互联网接入的一个DNS解析服务。例如如果是在学校接入互联网,那么你的DNS服务器就在你的学校;如果是在家里上网,那么这个DNS可能就是电信、联通、长城等应用提供商。windows下可以通过nslookup查询域名服务器。
    这里写图片描述
    和本地浏览器类似,Local DNS会缓存域名解析结果,但是缓存时间受缓存空间和域名失效时间控制(TTL值)控制。
    PS.大约80%的域名解析到这里就已经完成,LDNS主要承担了域名解析服务。
  • (4)如果Local DNS未命中,直接到Root Server域名服务器请求解析。
  • (5)Root Server域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLD Server)地址,如返回.com的主域名服务器。gTLD是国际顶级域名服务器(如.com和.cn等顶级域名)。
  • (6)本地域名服务器再向上一步返回的gTLD服务器发送请求。
  • (7)接受请求的gTLD服务器查找并返回域名对应的Name Server服务器的地址,如返回baidu.com的NameServer服务器,NameServer服务器通常为你注册的域名服务器。
  • (8)接受请求的NameServer服务器会查询存储的域名和IP的映射关系表,根据域名得到目标IP记录,连同TTL值返回给DNS Server域名服务器。
  • (9)返回该域名对应的IP和TTL值,LDNS Server会缓存域名和IP的对应关系。
  • (10)将解析结果返回给用户,用户也会将域名和IP对应关系缓存到本地系统缓存。

    上面大约十个步骤只是一个大致的DNS解析过程,对于大型的网站来说,还会有其他操作。比如,Name Server有多级,有GTM负责负载均衡。

2.2 域名解析记录

下面主要分为A记录、MX记录、CNAME记录、NS记录和TXT记录。

  • A记录,A代表Address,用来指定域名对应的IP地址。比如将www.baidu.com指定到202.108.22.xxx。
  • CNAME记录,也就是Canonical Name(规范名称),Aliases(别名)。
    比如在我们在Ping www.baidu.com时会发现PING的结果如下:
    这里写图片描述
    这里www.baidu.com就是www.a.shifen.com的别名。
    关于为什么www.baidu.com要通过cname到www.a.shifen.com,请看博客为什么www.baidu.com要通过cname到www.a.shifen.com
  • NS记录,为某个域名指定解析服务器,即这个域名有指定的IP地址的DNS服务器去解析。比如a.shifen.com. 86411 IN NS ns1.a.shifen.com.就是NS解析。
    具体请看博客关于CNAME与Aliases的解析问题

3.CDN工作机制

CDN的全称是Content Delivery Network, 简称内容分发网络。目的是通过在现有的internet中增加一层新的网络架构,将网站的内容发布到最近用户的网络边缘,使得用户可以就近取得所需内容(一个域名对应多台主机)。

3.1 CDN架构

这里写图片描述
如图所示,一个用户访问某个静态文件(如CSS文件),这个静态文件的域名假如是csd.taobao.com,那么首先要向Local DNS服务器发起请求,一般经过迭代分析后回到这个域名的注册服务器去解析,一般每个公司都会有一个DNS解析服务器。此时这个DNS解析服务器通常会把它CNAME到另外一个域名,而这个域名最终会被指向CDN全局中的DNS负载均衡服务器,再由这个GTM来最终分配是哪个地方大访问用户,返回给离这个访问用户最近的CDN节点。拿到DNS解析结果,用户会直接去这个CDN节点访问这个静态文件,如果这个节点中所请求的文件不存在,就会再回到源站去获取这个文件,然后再返回给用户。

3.3 负载均衡

负载均衡就是对工作任务进行平衡、分摊到多个操作单元上执行,通常有三种负载均衡架构,分别是链路负载均衡、集群负载均衡、操作系统负载均衡。
3.3.1 链路负载均衡
比如通过DNS解析成不同的IP,然后用户根据这个IP来访问不同的目标服务器,如图所示。
这里写图片描述
负载均衡是由DNS解析完成的,用户最终访问哪个Web Server是由DNS Server来控制的,在这里是由Global Server来进行动态解析域名服务。
优点:速度快,直接访问目标服务器。
缺点:DNS在用户本地已经Local DNS Server都有缓存,一旦某台Web Server出现故障,如果没有及时更新,用户将无法访问这个域名。
3.3.2 集群负载均衡
集群负载均衡分为硬件负载均衡和软件负载均衡。
(1)硬件负载均衡通过一台专门的硬件来转发请求。
这里写图片描述
优点:性能好。
缺点:贵,访问量陡然增大到服务极限时,不能动态扩容。
(2)软件负载均衡
软件负载均衡是最普遍的一种负载方式,优点:成本低,缺点:一次访问请求需要经过多次代理服务器,会增加网络延时。
3.3.3 操作系统负载均衡
利用操作系统级别的软中断或者硬件终端来达到负载均衡。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值