在浏览器url编码输入url 简述发生哪些过程优化解决

从浏览器输入URL回车发生了什么 - 大龄书童 - 博客园
随笔 - 35, 文章 - 0, 评论 - 28, 引用 - 0
在浏览器输入url后回车,整个过程发生了什么?整个过程如果节节细述的话,那非常的复杂。我就简单的描述一下整个过程
1、查询DNS,获取域名对应的IP地址
& &(1)、浏览器搜索自身的DNS缓存
& &(2)、搜索操作系统的DNS缓存
& &(3)、读取本地的HOST文件
& &(4)、发起一个DNS的系统调用
    (4.1)、宽带运营服务器查看本身缓存
& & & & & &(4.2)、运营商服务器发起一个迭代DNS解析请求
2、浏览器获得域名对应的IP地址后,发起HTTP三次握手
3、TCP/IP连接建立起来后,浏览器就可以向服务器发送HTTP请求了
4、服务器接受到这个请求,根据路径参数,经过后端的一些处理生成HTML页面代码返回给浏览器
5、浏览器拿到完整的HTML页面代码开始解析和渲染,如果遇到引用的外部JS,CSS,图片等静态资源,它们同样也是一个个的HTTP请求,都需要经过上面的步骤
6、浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户2504人阅读
计算机网络(1)
我们来看看在自己的浏览器中输入URL:,连接都经历了哪些过程
域名解析DNS
域名是方便人们记忆的,不然那么多网站,人怎么可能记住所有的ip地址。
这个是新浪的域名,在输入该域名之后,进行的就是域名解析了,经过解析之后,变成相应的ip地址。
但是,很多人都会问,在网上查到新浪的IP地址,在自己的电脑上输入为什么就连接不上。原因是大的门户网站可能不止一个ip地址,根据不同的网络他们会有很多的ip来做集群。有的是通过dns来实现负载均衡,有的是用squid来实现的。这里就不对其展开了。
Socket建立连接
Socket连接是通过ip和端口建立的。当dns解析完成,我们就拥有了目标IP和端口号,这样我们就可以开始建立连接,接下来就是大家都清楚的3次握手,这里就不展开了,相关的内容可以去查看网络通信的三次握手。
连接成功建立后,浏览器开始向web服务器发送请求,这个请求一般是GET或POST命令,之后,web服务器接受到这个请求,进行处理,返回给浏览器相应的内容。这之间传送的就是数据包了。至于数据包在网络分层中的漫游经历接下来会具体的讲述
关闭连接就是大家熟悉的网络通信的4次挥手。
数据包在网络中的漫游经历
首先,你要清楚网络分层模型,OSI7层模型,但对我来说我通常习惯去记忆TCP/IP的四层模型:应用层,传输层,网络层(网际层IP),网络接口层(链路层),不同版本的教材对这四层的名字不一样。
TCP/IP参考模型的相关常用协议
FTP、TELNET、HTTP
SNMP、TFTP、NTP
IP、ARP、RARP
注意:这里ARP和RARP是有的教材放到网络层的,但是在OSI模型当中,被划分到链路层,但是讨论ARP协议究竟是属于哪一层一点意义都没有。
1.&&&&&&在应用层中,HTTP协议传输的是web的内容,根据当前的需求和动作,我们确定要发送的数据内容,从而形成了应用层的报文data。
2.&&&&&&这些报文通过传输层发送,tcp协议或者udp协议,在头部加上指定的端口和其他的信息,这样就组成了传输层的数据报文,单位就是segment。注:TCP和UDP的区别
3.&&&&&&带发送的数据段送到网络层,在网络层被打包,包头内部含有源以及目的ip地址,该层数据发送单位被成为packet。
4.&&&&&& 在网络层数据被打包后,网络层就开始负责将这样的数据包在网络上传输。如何穿过路由器,最终到达目的地址,这里就是需要知道路由表和路由选择算法了,在这里不做展开。注:数据包中会有一个最大路由跳数,如果在各个路由传输的时候,个数超过了这个跳数,那么就会丢弃这个数据包
5.&&&&&& 经过路由选择,查找到下一跳的ip地址后,还要知道mac地址,这个mac地址作为链路层数据被装进数据报的头部,这个时候的数据单位是Frame。
注:在这个链路层中,有一个比较重要的协议ARP,在同一网内可能包含有多个主机,所以如果仅仅知道ip地址是没有用的,这个时候会发生ARP请求,该请求包含源IP和MAC地址以及目的IP和MAC地址,在网内进行广播, 所有的网内主机会检查自己的ip和mac,如果对应,就建立连接传送数据,这样也就避免了,传输过来的数据需要发送到同一网内的所有主机。
附:TCP/IP模型中各层主要的协议简介
设备,中继器(repeater),集线器(hub)。对于这一层来说,从一个端口收到数据,会转发到所有端口。
MAC地址表,一个ip下可能会有多个主机,交换机通过目的MAC地址知道应该把这个数据转发到哪个端口。而不会像HUB一样,会转发到所有滴端口。。
四个主要的协议: &&
网际协议IP:负责在主机和网络之间寻址和路由数据包。 & &&
地址解析协议ARP:获得同一物理网络中的硬件主机地址。 & &&
网际控制消息协议ICMP:发送消息,并报告有关数据包的传送错误。 & &&
互联组管理协议IGMP:被IP主机拿来向本地多路广播路由器报告主机组成员。
两个重要协议 TCP
基于tcp:Telnet FTP SMTP DNS HTTP&
基于udp:RIP NTP(网落时间协议)和DNS
(DNS也使用TCP)SNMP TFTP
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:86905次
积分:1760
积分:1760
排名:千里之外
原创:91篇
评论:10条
(3)(2)(6)(2)(6)(9)(3)(2)(1)(1)(2)(4)(6)(2)(8)(1)(2)(7)(29)(1)(1)(1)(1)从输入URL到页面加载完成的过程中都发生了什么情况?
  永州SEO往浏览器输入URL后给你一个页面,你天天在使用的东西,学过计算机网络的知道是怎么回事,就DNS解析然后页面的回馈,不过要讲好还是有难度。
  1.浏览器查询缓存,如果缓存存在跳到第9步。
  2.浏览器询问操作系统服务器的IP地址。
  3.操作系统做DNS查询,返回IP地址给浏览器。
  4.浏览器打开对服务器的TCP连接(如果是HTTPS协议的话会更复杂)。
  5.浏览器通过TCP连接发送HTTP请求。
  6.浏览器接收HTTP响应并且可能关掉TCP连接,或者是重新使用连接处理新请求。
  7.浏览器检查HTTP响应是否为一个重定向(3xx 结果状态码 ),一个验证请求(401),错误(4xx
5xx)等等,这些都是不同响应的正常处理(2xx).
  8.如果响应可缓存,将存入缓存。
  9.浏览器解码响应(例如:如果它是gzziped压缩)。
  10.浏览器决定如何处理这些响应(例如,它是HTML页面,一张图片,一段音乐)。
  11.浏览器展现响应,对未知类型还会弹出下载对话框。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。构建高性能ASP.NET站点之一 剖析页面的处理过程
剖析页面的解析过程&&& 页面的解析过程,这里说的过程不是我们常说的ASP.NET页面的生命周期的过程,而且浏览器请求一个页面,然后浏览器呈现页面的过程。&&& 在本篇的文章中,我会先阐述页面的解析过程,显示从整体上阐述,然后在每一个点上提出优化的方法。先整体,后局部。&&& 当浏览器在请求一个Web页面是从URL开始的。下面就是过程描述:&&& 1. 输入URL地址或者点击URL的一个链接。&&& 2. 浏览器根据URL地址,结合DNS,解析出URL对应的IP地址。&&& 3. 发送HTTP请求。&&& 4. 开始连接请求的服务器并且请求相关的内容(至于请求时怎么被处理的,我们这里暂时不讨论,只是后面的文章要讨论的问题)。&&& 5. 浏览器解析从服务器端返回的内容,并且把页面显现出来,同时也继续进行其他的请求。&&& 上面基本上就是一个页面被请求到现实的过程。下面我们就开始剖析这个过程。&&& 当输入URL之后,浏览器就要知道这个URL对应的IP是什么,只有知道了IP地址,浏览器才能准备的把请求发送到指定的服务器的具体IP和端口号上面。&&& 浏览器的DNS解析器负责把URL解析为正确的IP地址。这个解析的工作是要花时间的,而且这个解析的时间段内,浏览器不是能从服务器那里下载到任何的东西的。但是这个解析的过程是可以优化的。试想,如果每次浏览器每次请求一个URL都需要解析,那么每次的请求都有一点的时间消耗,可能这个时间消耗很短,但是性能的提升就是一点点的&调&出来的。如果把对应URL和IP地址缓存起来,那么当再次请求相同的URL时,浏览器就不用去解析,而是直接读取缓存,这样势必会快一点。&&& 其实浏览器和操纵系统是提供了这样的支持的。&&& 当获得了IP地址之后,那么浏览器就向服务器发送HTTP的请求,下面我们就稍微看下这个发送请求是怎么样被发送的:&&& 1.&&& 浏览器通过发送一个TCP的包,要求服务器打开连接。&&& 2.&&& 服务器也通过发送一个包来应答客户端的浏览器,告诉浏览器连接开了。&&& 3.&&& 浏览器发送一个HTTP的GET请求,这个请求包含了很多的东西了,例如我们常见的cookie和其他的head头信息。&&& 这样,一个请求就算是发过去了。&&& 请求发送去之后,之后就是服务器的事情了,服务器端的程序,例如,浏览器清楚的文件是一个ASP.NET的页面,那么服务器端就把请求通过IIS交给ASP.NET 运行时,最后进行一系列的活动之后,把最后的结果,当然,一般是以是以html的形式发送到客户端。&&& 其实首先到达浏览器的就是html的那些文档,所谓的html的文档,就是纯粹的html代码,不包含什么图片,脚本,css等的。也就是页面的html结构。因为此时返回的只是页面的html结构。这个html文档的发送到浏览器的时间是很短的,一般是占整个响应时间的10%左右。&&& 这样之后,那么页面的基本的骨架就在浏览器中了,下一步就是浏览器解析页面的过程,也就是一步步从上到下的解析html的骨架了。&&& 如果此时在html文档中,遇到了img标签,那么浏览器就会发送HTTP请求到这个img响应的URL地址去获取图片,然后呈现出来。如果在html文档中有很多的图片,flash,那么浏览器就会一个个的请求,然后呈现。&&& 到这里,大家也许感觉到这种方式有点慢了。确实这个图片等资源文件的请求的部分也是可以优化的。暂不说别的,如果每个图片都要请求,那么就要进行之前说的那些步骤:解析url,打开tcp连接等等。开连接也是要消耗资源的,就像我们在进行数据库访问一样,我们也是尽可能的少开数据库连接,多用连接池中的连接。道理一样,tcp连接也是可以重用的。但是重用也有问题:如果两个图片它们的url地址如下:
代码&&& &img src="q1.gif" height="16" width="16" /&&&& &img src="q2.gif" height="16" width="16" /&&&& &img src="q3.gif" height="16" width="16" /&&&& &img src="q4.gif" height="16" width="16" /&&&& &img src="q5.gif" height="16" width="16" /&&&& &img src="q6.gif" height="16" width="16" /&&&& &img src="q7.gif" height="16" width="16" /&&&& &img src="q8.gif" height="16" width="16" /&&&& &img src="q9.gif" height="16" width="16" /&&&& &img src="q10.gif" height="16" width="16" /&&&& 请求这些图片的时间消耗如下图:&&&& 大家首先看到最上面的黄线的部分,这个黄线就代表了浏览器打开连接,黄线的后半部分为蓝色,就表示浏览器请求到了html的文档。&&& 最上面的第二条蓝线就表示第一个图片已经请求到了,此时请求这个图片使用还是之前的一个tcp的连接。&&& 大家在看到第三条线,前部分是黄色的,表示请求第二个图片的时候又开了一个tcp的连接,这条线的后半部分为蓝色,表示图片已经请求到了。&&& 剩下的要请求的一些图片都使用上一个tcp连接。&&& 确实,tcp的连接时充分的被使用了,但是图片下载的速度确实慢了,从图中看出,图片是一个个的顺序的下载下来的。整个页面的响应时间可想而知。&&& 如果采用下一种方式,如:&&&& 可以看出连接时多了,但是图片的几乎都是并行下载下来的,相比而言就快多了。&&& 其实这就是一个权衡的问题了。&&& 实际上浏览器也是内置了以一些优化方式的,例如缓存图片,脚本等。或者采用并行下载图片的方式,谈到并行下载,就如上图所看到的,势必会消耗更多的连接资源。
相关报道:
新闻热线:010-
责任编辑:lujq
名企动态: |
标志着Windows迈出个性化计算的第一步……
本站特聘法律顾问:于国富律师
Copyright (C) 1997-

我要回帖

更多关于 简述浏览器的渲染过程 的文章

 

随机推荐