输入网址到网页显示的过程

1. 浏览器中输入URL
  • URL(Uniform Resource Locator)统一资源定位符,用来表示从互联网上得到的资源位置和访问这些资源的方法。URL实际上就是在互联网上的资源的地址。
  • URL一般由以下四部分组成:<协议>://<主机>:<端口>/<路径>
  1. 这里的<协议>就是指出使用什么协议来获取该万维网文档。现在最常用的协议就是HTTP (超文本传输协议HTTP),其次是FTP(文件传输协议)。
  2. <协议>后面://的是规定的格式。
  3. 这里的<主机>就是指该主机在互联网上的域名。
  4. <端口><路径>有时可以省略。HTTP的默认端口号是80。
2. 浏览器根据输入的URL寻找对应的IP地址(域名解析)
  • IP(Internet Protocol 网际协议)地址就是给互联网上的每一台主机 (或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。
  • 对主机或路由器来说,IP地址都是32位的二进制代码。为了提高可读性,我们常常把 32位的IP地址中的每8位插入一个空格(但在机器中并没有这样的空格)。为了便于书 写,可用其等效的十进制数字表示,并且在这些数字之间加上一个点.。这就叫做点分十进制记法。显然,128.11.3.3110000000 00001011 00000011 00011111书写起来要方便得多。
  1. 查找浏览器缓存。如果你先前在浏览器曾经到访过网站。浏览器会缓存DNS(Domain Name System 域名系统)记录一段时间,这样就找到对应的 IP 地址。如果没找到则继续进行域名解析。
  2. 查找系统缓存。从电脑系统中 Hosts 的文件查找有没有DNS记录,是否有相关的对应的 IP 地址。如果没有,域名解析继续。
  3. 查找路由器缓存。如果有其他设备使用的路由器曾经到访过网站。路由器也会缓存DNS记录,是否有相关的对应的 IP 地址。如果没有,域名解析继续。
  4. 查找 ISP DNS 缓存。以上还是没有,就会向你的网络供应商 (Internet Service Provider, ISP) 查找有没有相关DNS记录。
  5. 查找根域名服务器供应商。ISP DNS 缓存还是没有,就会向根域名服务器供应商,查找相关对应的 IP 地址。根域名伺服器把请求转发给下一级,直到找到对应的IP为止。
3. 与对应IP地址的WEB服务器建立TCP连接
4. 浏览器向WEB服务器发送相应的HTTP请求
  • 当建立TCP连接的三报文握手的前两部分完成后(即经过了一个RTT(Round-Trip Time 往返时延)时间后),万维网客户就把HTTP请求报文,作为建立TCP连接的三报文握手中的第三个报文的数据,发送给万维网服务器。

HTTP请求报文和响应报文都是由三部分组成的:

  1. 开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行,而在响应报文中的开始行叫做状态行。在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”。
  2. 首部行,用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
  3. 实体主体,在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。

请求报文的第一行“请求行”只有三个内容,即方法请求资源的URL,以及HTTP的版本

在这里插入图片描述
下面是HTTP的请求报文的开始行(即请求行)的格式。请注意,在GET后面有一个空格,接着是某个完整的URL,其后面又有一个空格,最后是HTTP/1.1。

GET  http://www.xyz.edu.cn/dir/index.htm  HTTP/1.1

下面是一个完整的HTTP请求报文的例子:

GET  /dir/index.htm  HTTP/1.1				//请求行使用了相对URL
Host: www.xyz.edu.cn						//此行是首部行的开始。这行给出主机的域名
Connection: close							//告诉服务器发送完请求的文档后就可释放连接
User-Agent: Mozilla/5.0						//表明用户代理是使用火狐浏览器Firefox
Accept-Language: cn							//表示用户希望优先得到中文版本的文档
//请求报文的最后还有一个空行
5. 服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户

在这里插入图片描述
响应报文的第一行“状态行”只有三个内容,即HTTP的版本状态码,以及解释状态码的简单短语
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。想具体了解状态码可以前往HTTP状态码

下面三种状态行在响应报文中是经常见到的。

HTTP/1.1  202  Accepted			//接受
HTTP/1.1  400  Bad Request		//错误的请求
HTTP/1.1  404  Not Found		//找不到

若请求的网页从http://www.ee.xyz.edu/index.html 转移到了 一个新的地址,则响应报文的状态行和一个首部行就是下面的形式:

HTTP/1.1  301  Moved Permanently				//永久性地转移了
Location: http://www.xyz.edu/ee/index.html 		//新的URL

这时候,客服端需要重新发送一个新的HTTP请求去获取新的URL上的文档。

6. 浏览器收到HTML文档后进行处理
  • 浏览器进行处理过程主要分为:载入解析渲染
  • 载入:由于浏览器对 HTML 页面加载顺序是从上而下的。如果加载过程中遇到外部 css 文件(如下),浏览器会另外发出一个请求,来获取 CSS 文件。遇到图片资源,浏览器也会另外发出一个请求,来获取图片资源。但必须留意当文档加载过程中遇到 Javascript(js) 文件(如下),HTML 文档加载解析渲染同步,不仅要等待文档中 js 文件加载完毕,还要等待解析执行完毕,才可以恢复 HTML 文档的渲染线程,导致 mystyles.css 样式文件和<body>标签都无法被加载,这会影响到页面加载的速度,带来不良用户体验。
<html>
	<head>
		<script type="text/javascript" src="style.js"></script>
		<script type="text/javascript" src="style1.js"></script>
		<script type="text/javascript" src="style2.js"></script>
		<link rel="stylesheet" type="text/css" href="mystyle.css">
	</head>
	<body>
		hello, world!
	</body>
</html>
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值