输入URL到页面加载过程
URL(uniform resource location) : 统一资源定位符,用来作为互联网上各种资源的标识符,可理解为身份证号 。
注意点:浏览器为了保证安全性,设定了跨域保护策略, 即窗口之间的通信必须满足使用相同协议, 相同域或者子域, 相同端口, 因此深入理解URL各组成部分的含义有助于我们判断两个窗口之间是否能互相通信。
HTTP(HyberText Transfer Protocol) : 超文本传输协议,万维网中传输超文本都要遵从的一个协议,可以理解为HTML文件的传输就是靠它。
IP(Internet Protocol) :互联网中设备间进行通信都要遵从的一种协议,它规定了每台设备都要有且唯一的IP地址,用来标识自己在互联网中的地址。格式通常为http://XXX.XXX.XXX.XXX,不同网段下IP地址的范围也不同。如
域名(Domain Name) :由于IP协议规定的纯数字IP地址在日常中难以记忆,因此人们便产生使用更加常见,好记的字符标识设备的地址,域名应运而生。一个域名就是一个更加容易记忆的目标主机的地址标识符。例如:百度的域名就为 www.baidu.com ,实际对应的IP地址为119.75.217.109
DNS(Domain Name System): 互联网中实际定位设备时还是使用IP地址来定位,因此产生了DNS,一种专门用来将域名转换为IP地址的协议,提供该协议服务的服务器就叫DNS服务器。
输入地址
当我们开始在浏览器中输入网址的时候,浏览器其实已经开始在智能的匹配可能得到的URL了,他会从历史记录、书签等地方,找到已经输入的字符串可能对应的URL,然后给出智能的提示,对于Google chrome这种聪明的浏览器,他甚至会直接从缓存中把网页展示出来,也就是说在你还没有戳下enter键的时候,页面就已经加载完成了。
查询缓存
输入地址后,为了找到这个url域名的服务器ip,浏览器首先会寻找缓存,查看缓存中是否有记录。缓存的查找记录为:浏览器缓存 —> 系统缓存 —> 路由器缓存,缓存中没有则查找系统的hosts文件中是否有记录。
DNS解析
查询 本地的路由器中的DNS缓存中是否有目标域名的信息。
查询 ISP(互联网服务提供商,例如电信,移动)中的DNS服务器 中是否有目标域名的信息。
查询 根域名服务器 是否有目标域名的信息,如果没有,则传至子域名服务器进行查询,得到服务器的ip地址
TCP连接、发送HTTP请求
浏览器之后会根据这个ip以及相应的端口号,构造一个http请求。这个请求报文会包括这次请求的信息(请求方法,请求说明和请求附带的数据),并将这个http请求封装在一个tcp包中,这个tcp包会依次经过传输层,网络层,数据链路层,物理层到达服务器。
服务器处理请求、并返回HTTP报文
服务器解析这个请求来作出响应,返回相应的html给浏览器。
浏览器解析渲染页面
浏览器根据这个html来构建DOM树,在DOM树的构建过程中如果遇到JS脚本和外部JS连接,则会停止构建DOM树来执行和下载相应的代码,造成阻塞,因此推荐JS代码应该放在html代码的后面。之后根据内外样式、内联样式构建一个CSS对象模型树,和DOM树合并为渲染树。
输入URL到页面加载过程的更多相关文章
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
		
这个问题是老生常谈的问题啦,虽然说到处百度都有的答案,还是希望自己能总结一下. 如今有很多答案,都是从硬件开始讲起,比如键盘的响应或者触屏的响应,然后CPU处理到OS的内核等等.这里不作为重点来讲,要 ...
 - 从输入 URL 到页面加载完成的过程中都发生了什么
		
从输入 URL 到页面加载完成的过程中都发生了什么 过程描述 浏览器查找域名对应的 IP 地址: 浏览器根据 IP 地址与服务器建立 socket 连接: 浏览器与服务器通信: 浏览器请求,服务器处理 ...
 - 从输入 URL 到页面加载完成的过程详解---【XUEBIG】
		
从输入 URL 到页面加载完成的过程中都发生了什么事情? 这是一道经典的面试题,涉及面非常广,要答出来并不困难,当要将问题回答好却不是那么容易 过程概述 浏览器查找域名对应的 IP 地址: 浏览器根据 ...
 - 【转】 从输入 URL 到页面加载完成的过程中都发生了什么事情?
		
该问题总结 一. 往浏览器输入URL后给你一个页面,你天天在使用的东西,学过计算机网络的知道是怎么回事,就DNS解析然后页面的回馈,不过要讲好还是有难度. 之前fex团队的nwind专门写过这个问题的 ...
 - Web访问原理-从输入URL到页面加载完成的过程中都发生了什么事情?
		
从输入URL到页面加载完成的过程中都发生了什么事情?--这是一个经典的面试题: 主要是关于计算机网络方面的知识基础,对于非科班计算机自学web开发的同学可能理解起来就很困难. StackOverFlo ...
 - 一个页面从输入url到页面加载显示完成,中间都经历了什么
		
第一种解释: 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容.若没有,则跳到第三步操作. 3 ...
 - 从输入URL到页面加载的全过程
		
前面的话 本文将详细介绍从输入URL到页面加载的全过程 概述 从输入URL到页面加载的主干流程如下: 1.浏览器构建HTTP Request请求 2.网络传输 3.服务器构建HTTP Response ...
 - 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3
		
备注: 因为文章太长,所以将它分为三部分,本文是第三部分. 第一部分:深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1 第二部分:深入浅出经典面试题:从浏览器中输入URL ...
 - 从浏览器中输入URL到页面加载的发生了什么-转载
		
转:https://www.cnblogs.com/confach/p/10050013.html 背景 “从浏览器中输入URL到页面加载的发生了什么“,这是一道经典的面试题,涉及到的知识面非常多,但 ...
 
随机推荐
- bom案例2-弹出层
			
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
 - linux计划任务之cron
			
目录 cron计划任务之用户级 cron计划任务之系统级 cron计划任务之用户级 1.安装crond centos7 执行命令: # yum install -y crontabs /bin/sys ...
 - homestead 入坑安装
			
1.在使用 Homestead 之前,需要先安装 Virtual Box.VMWare.Parallels 或 Hyper-V (四选一,我们通常选择 VirtualBox,因为只有它是免费的)以及 ...
 - go基础——switch语法
			
package main import "fmt" /* switch语法结构: switch 变量名 { case 数值1:分支1 case 数值2:分支2 ... defaul ...
 - 一站式超全JavaScript数组方法大全
			
一站式JavaScript数组方法大全(建议收藏) 方法一览表 详细操作 本人总结了JavaScript中有关数组的几乎所有方法(包含ES6之后新增的),并逐一用代码进行演示使用,希望可以帮助大家! ...
 - 国产操作系统deepin安装与配置Node-RED环境
			
1.1. 测试机配置清单 部件名称 版本号 备注 处理器 Intel Core i5 3320M 显卡 自带集显 内存 8G DDR3单通道 显示插口 VGA*1,HDML*1 1.2. 系统安装及配 ...
 - 《PHP程序员面试笔试宝典》——如何回答快速估算类问题?
			
如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 有些大企业的面试官,总喜欢出一些快速估算类问题,对他们而言,这些问题只是手段,不是目的,能够得到一个满意的结果固然是他们 ...
 - Solution -「POI 2010」「洛谷 P3511」MOS-Bridges
			
\(\mathcal{Description}\) Link.(洛谷上这翻译真的一言难尽呐. 给定一个 \(n\) 个点 \(m\) 条边的无向图,一条边 \((u,v,a,b)\) 表示从 ...
 - Office RTF远程模板注入
			
远程模板插入 ProofPoin最近写了一篇文章,报告中提到近年来RTF模板注入进行office钓鱼攻击的数量增加.之前还没怎么了解过RTF模板注入的,现在和小编一起去看看吧(笑hhh). 相 ...
 - 第三章 in,not in 的理解,limit限制结果集
			
IN 运算符用来判断表达式的值是否位于给出的列表中:如果是,返回值为 1,否则返回值为 0.NOT IN 的作用和 IN 恰好相反,NOT IN 用来判断表达式的值是否不存在于给出的列表中:如果不是 ...