从输入url到页面(一):URL与DNS

浏览器引擎默认:webkit内核

一、输入地址

  当我们开始在浏览器中输入网址的时候,现代浏览器就可以智能的匹配完整 url了,它会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。

  如果输入的地址和候选项很匹配,在敲下回车之前,chromium就可以开始尝试建立TCP链接,chrome 的浏览器,他甚至会直接从缓存中把网页展示出来。

  1、主机名扩展。将输入的主机名扩展为完整的主机名,如输入baidu,浏览器会尝试插入www. 和 .com。但此技巧可能会为其他HTTP应用程序带来问题,比如代理,详见第6节。

2、历史扩展。即从历史记录中进行匹配,给出完整的选项建议。

二、URL解析

  URI:统一资源标识符,目前主要子集是URL统一资源定位符,另外还有处于试验阶段的URN统一资源名称。

  (一)URL组成

  把URL分割成几个部分:方案协议、主机名、资源路径等。

    协议是规定如何访问指定资源的主要标识符,常见的是HTTP、HTTPS、FTP,不同协议有不同的通讯内容格式;

    其中主机名指示服务器的位置,可以是域名或者IP地址,可以包括端口号,很多协议都有默认的端口号,HTTP的默认端口是80 ;

    资源路径指示资源位于服务前的什么位置。

  还有详细的URL组件包括:

  1、用户名和密码。例如FTP服务器需要携带,如未提供,浏览器会插入默认的值。

  2、参数。每个路径段可以有自己的参数值。以分号;分割,key=value形式。

  例如:

http://www.xxx.com/hammers;sale=false/index.html;graphics=true

  3、查询字符串。?item=1223

  4、片段。URL的hash值,对于大型的文本页面,可以指定资源的确定锚点位置。客户端不会将其传送给服务器,浏览器获取整个资源后,会根据hash值显示指定的内容。它的改变不会向服务器发送请求,单页面应用常用于实现前端路由。

  (二)相对URL

  URL有两种方式:绝对和相对的。绝对URL包含有访问资源的全部信息。相对URL是不完整的,必须相对于另一个base基础URL进行解析,可以保持一组资源的可移植性。

  1、基本URL的形式,权重递减:

     在资源中显式提供,html中的标记 <base>;封装资源的URL。

  2、解析相对引用。将其分解成组件,和基础URL进行合并算法。

  

  (三)未来展望

  PURL永久统一资源定位符,使用URL来实现URN功能的一个例子。在搜索资源的过程中引入另一个中间层,通过一个中间资源定位符服务器对资源的实际URL进行登记和跟踪。

三、DNS解析

  (一)解析过程

  Chromium中使用HostResolverImpl类来解析域名,调用的函数是阻塞式的,使用单独线程来处理它,所以对性能优化有一定的影响。

  这一步包括 DNS 具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存...

  1、  浏览器会检查缓存中这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。HostCache类可以保存解析后的域名,最多时会有多达1000对域名和IP的映射关系,对缓存的大小和时间都是有限制的。

  2、  查找操作系统缓存中是否有这个域名对应的DNS解析结果,在Windows中可以通过C:\Windows\System32\drivers\etc\hosts文件来设置。在开发或测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是因为有这种本地DNS解析的规程,所以黑客就有可能通过修改你的域名解析来把特定的域名解析到它指定的IP地址上,导致这些域名被劫持。

  3、  查询DNS域名服务器。网络配置中都会有"DNS服务器地址",操作系统会把这个域名发送给这里设置的LDNS,也就是本地区的域名服务器。这个DNS通常都提供给你本地互联网接入的一个DNS解析服务。这个专门的域名解析服务器,一般都会缓存域名解析结果。大约80%的域名解析都到这里就已经完成了,所以LDNS主要承担了域名的解析工作。

  4、  如果LDNS仍然没有命中,就直接到Root Server域名服务器请求解析。

  5、  根域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLD Server)地址。gTLD是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。

  6、  本地域名服务器(Local DNS Server)再向上一步返回的gTLD服务器发送请求。

  7、  接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server通常就是你注册的域名服务器,例如你在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成。

  8、  Name Server域名服务器会查询存储的域名和IP的映射关系表,正常情况下都根据域名得到目标IP记录,连同一个TTL值返回给DNS Server域名服务器。

  9、  返回该域名对应的IP和TTL值,Local DNS Server会缓存这个域名和IP的对应关系,缓存的时间由TTL值控制。

  10、 把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。

  

  (二)DNS性能优化

  1、减少连接重定向。多次解析,阻碍DNS预提取技术的应用。

2、DNS预取机制。开发者可以指定需要预取的URL,

<link rel=”dns-prefetch” href=”http://xxxx”>

  3、  搭建支持SPDY协议的服务器。

  解决网络延迟和安全性问题,新的会话层协议,位于http与tcp之间。核心思想为多路复用,仅适用一个连接来传输一个网页中的众多资源,提高tcp连接的利用率;根据资源的特性和优先级,可以调整这些资源请求的优先级;适用压缩技术,减少字节数;发送网页时,提前发送信息给浏览器,告知之后可能需要哪些内容

  4、  避免错误、无用的链接请求,避免占用网络资源。

原文地址:https://www.cnblogs.com/banyue/p/8445127.html

时间: 2024-10-14 01:14:11

从输入url到页面(一):URL与DNS的相关文章

从输入URL到页面加载发生了什么

从输入URL到页面加载发生了什么 转自: https://segmentfault.com/a/1190000006879700 作者写得很不错,作者忽略了的,我加了上去,完善了一些,如get与post的区别等 总体来说分为以下几个过程: DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束 1.DNS解析 DNS解析的过程就是寻找哪台机器上有你需要资源的过程.当你在浏览器中输入一个地址时,例如www.baidu.com,其实不是百度网站真正意

【转】 从输入 URL 到页面加载完成的过程中都发生了什么事情?

该问题总结 一. 往浏览器输入URL后给你一个页面,你天天在使用的东西,学过计算机网络的知道是怎么回事,就DNS解析然后页面的回馈,不过要讲好还是有难度. 之前fex团队的nwind专门写过这个问题的博客: http://fex.baidu.com/blog/2014/05/what-happen/ 厉害的地方是将整个计算机体系和硬件都涉及进来,很广很深,太强大了. 然后找到一个StackOverFlow的答案: what happens when you type in a URL in br

输入url到页面返回的全过程

1.      我们输入一个域名:www.baidu.com,然后点击确认: 2.      浏览器查找域名的IP地址.查找过程如下: 首先是浏览器缓存,浏览器会缓存DNS记录一段时间: 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用,获取系统缓存中的记录: 然后是路由器缓存,路由器一般会有自己的缓存: 如果前者都没有找到,就需要从本地域名服务器开始进行DNS查询了.详细的DNS查询过程我在DNS工作原理及过程中讲到过. 3.      现在浏览器找到了域名的IP地址,则需要向We

老生常谈-从输入url到页面展示到底发生了什么

阅读目录 1.输入地址 2.浏览器查找域名的 IP 地址 3.浏览器向 web 服务器发送一个 HTTP 请求 4.服务器的永久重定向响应 5.浏览器跟踪重定向地址 6.服务器处理请求 7.服务器返回一个 HTTP 响应 8.浏览器显示 HTML 9.浏览器发送请求获取嵌入在 HTML 中的资源(如图片.音频.视频.CSS.JS等等) 刚开始写这篇文章还是挺纠结的,因为网上搜索"从输入url到页面展示到底发生了什么",你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候

从输入URL 到页面加载完成的过程

转载自:http://www.tuicool.com/articles/V7JN32Z 根据 URL 请求页面过程 说实话,这类文章网上一抓一大把,而我仍想写这篇博客,一方面是想再仔细缕一下这个过程,另一方面是希望用清晰的语言和结构来解释,也算是小小地挑战一下自己. 过程概述 浏览器查找域名对应的 IP 地址: 浏览器根据 IP 地址与服务器建立 socket 连接: 浏览器与服务器通信: 浏览器请求,服务器处理请求: 浏览器与服务器断开连接. 天啦撸,结束了?也太简单了吧...各位看官,不急,

老生常谈-从输入url到页面展示到底发生了什么2

阅读目录 1.输入地址 2.浏览器查找域名的 IP 地址 3.浏览器向 web 服务器发送一个 HTTP 请求 4.服务器的永久重定向响应 5.浏览器跟踪重定向地址 6.服务器处理请求 7.服务器返回一个 HTTP 响应 8.浏览器显示 HTML 9.浏览器发送请求获取嵌入在 HTML 中的资源(如图片.音频.视频.CSS.JS等等) 刚开始写这篇文章还是挺纠结的,因为网上搜索"从输入url到页面展示到底发生了什么",你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候

一个页面从输入URL到页面加载显示完成的详细过程

下面以访问baidu页面来做一个过程分析 输入 URL:http://www.baidu.com DNS 域名解析 计算机无法识别域名,计算机与计算机之间要想进行通信,必须通过ip地址用来定位该计算机所在的位置 在浏览器中,输入的ip地址或者域名,默认给你加了一个80端口号(对方的服务器监听的就是80端口) 158.12.25.652 域名就是为了好记 为了好记,所以我们的万维网提供了 一个 域名这样的概念 当你输入了 ip 地址后,浏览器会自动去 找DNS域名解析服务器, 建立 TCP 连接(

从输入 URL 到页面加载完成的过程中都发生了什么

根据 URL 请求页面过程 过程概述 浏览器查找域名对应的 IP 地址: 浏览器根据 IP 地址与服务器建立 socket 连接: 浏览器与服务器通信: 浏览器请求,服务器处理请求: 浏览器与服务器断开连接. 天啦撸,结束了?也太简单了吧...各位看官,不急,都说了是概述,且向下看. 根据域名查找 IP 地址 概念解释 IP 地址:IP 协议为互联网上的每一个网络和每一台主机分配的一个逻辑地址.IP 地址如同门牌号码,通过 IP 地址才能确定一台主机位置.服务器本质也是一台主机,想要访问某个服务

从输入 URL 到页面加载完成的过程中都发生了什么(转)

从输入 URL 到页面加载完成的过程中都发生了什么 过程描述 浏览器查找域名对应的 IP 地址: 浏览器根据 IP 地址与服务器建立 socket 连接: 浏览器与服务器通信: 浏览器请求,服务器处理请求: 浏览器与服务器断开连接. 根据域名查找IP地址 概念解析 IP地址:IP协议为互联网上的每一个网络和每一台主机分配的一个逻辑地址.IP地址如同门牌号码,通过 IP地址才能确定一台主机位置.服务器本质也是一台主机,想要访问某个服务器,必须先知道它的IP地址: 域名(HOST):IP 地址由四个

从输入 URL 到页面加载显示完成的过程

前言:"一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?" 这个问题我想大多数人都不会陌生,好像是前端面试题经常会出现的,在此我也好好梳理梳理了一番,总结成这篇文章,希望能对和我一样在前端道路上奋进的小白们有所帮助,一起学习,交流. 我把这个问题拆解成两个过程: 1. 用户输入 url ---> 客户端(浏览器)拿到服务端的数据 2. 浏览器拿到数据 ---> 呈现页面(也就是浏览器工作过程) 搞清楚这两个过程后,我们也算是完整的回答了前言部分所提的问题