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

1、在浏览器中输入URL

如:https://www.cnblogs.com/loveapple/

URL分成协议、地址、路径三部分

  • 协议:http、https、ftp
  • 地址:www.cnblogs.com、localhost:4000
  • 路径:/loveapple/

2、通过DNS解析获得对应的IP地址

DNS作用:将域名转化成IP,域名是方面我们记忆的,但是网络上的资源最终是要通过ip取获得的。

DNS查找过程:

  • 浏览器缓存——浏览器会缓存DNS记录一段时间(2分钟到30分钟),你可以在chrome浏览器输入chrome://net-internals/#dns.可看到目前浏览器缓存了哪些ip
  • 系统缓存——如何浏览器缓存中没有,浏览器会做一个系统系统调用,查找系统缓存中的记录,常见的hosts文件
  • 路由缓存——如果系统缓存也没有需要的记录,会向本地路由器发送一条DNS查询请求,一般会有自己的dns缓存
  • ISP DNS缓存——如果本地路由器没有再查看本地网络提供商(移动啦、电信啦)的DNS服务器,一般都能找到相应的缓存记录
  • 递归查找——DNS服务器从根域名开始进行递归查找,从.com顶级域名服务器到facebook的域名服务器

3、浏览器向服务器发送一个HTTP请求

  • 首先通过三次握手建立TCP连接,
  • 浏览器通过TCP连接向服务器发送一个http请求

4、服务器发出重定向响应

  • facebook.com→www.facebook.com
  • 目的是提高搜索引擎www.facebook.com的权重,使www.facebook.com排名靠前

5、跟随重定向

  • 浏览器发起新的请求——www.facebook.com

6、服务器开始处理请求并返回响应

  • 响应:html、json、gzip

7、服务器返回HTML响应

  • gzip常表现为乱码,经过浏览器解压后可看到正常的html

8、浏览器开始渲染HTML

9、浏览器发送请求去获取HTML中的一些内嵌对象

  • 内嵌对象,页面资源中可见
  • 带src的如js文件,img文件
  • 不带src的如css文件

10、浏览器发送异步的ajax请求

  • 局部刷新

二、扩展知识

1、静态页面和动态页面的区别

2、简述TCP三次握手建立连接的过程

第一次握手:客户端对服务器说:“服务器哥哥,我想跟你说说话!(SYN联机请求)”

第二次握手:服务器对客户端说:“我知道了(ACK确认),我这边已经准备好了,你准备好了吗?(SYN联机请求)”

第三次握手:客户端对服务器说:“好的(ACK确认),咱们开始说话吧”

3、简述TCP四次挥手断开连接的过程

第一次挥手:客户端对服务器说:“我说完了(FIN结束请求)”

第二次挥手:服务器说:“我知道你说完了(ACK确认),我再给你说两句,&*……%¥”。

第三次挥手:服务器说完了,告诉客户端:“我说完了,咱们断了吧(FIN结束请求)”

第四次挥手:客户端说:“好的(ACK确认)”并礼貌地等服务端挂断电话后才挂电话(确保自己最后说的话服务器听到了)

4、AJAX

AJAX=异步JavaScript和xml

通过在后台与服务器进行少量数据交互,是网页实现异步更新。

(四)从输入URL到页面加载发生了什么的更多相关文章

  1. 【ASP.NET Core】EF Core - “影子属性” 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1

    [ASP.NET Core]EF Core - “影子属性”   有朋友说老周近来博客更新较慢,确实有些慢,因为有些 bug 要研究,另外就是老周把部分内容转到直播上面,所以写博客的内容减少了一点. ...

  2. 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3

    备注: 因为文章太长,所以将它分为三部分,本文是第三部分. 第一部分:深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1 第二部分:深入浅出经典面试题:从浏览器中输入URL ...

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

    大体过程 浏览器的地址栏输入URL并按下回车 浏览器检查当前URL是否存在缓存,并比较缓存是否过期 DNS解析URL对应的IP 根据IP建立TCP连接(三次握手) HTTP发起请求 服务器处理请求,浏 ...

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

    总体来说分为以下几个过程: DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束 具体内容点这里

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

    从输入 URL 到页面加载完成的过程中都发生了什么 过程描述 浏览器查找域名对应的 IP 地址: 浏览器根据 IP 地址与服务器建立 socket 连接: 浏览器与服务器通信: 浏览器请求,服务器处理 ...

  6. 一个页面从输入url到页面加载显示完成,中间都经历了什么

    第一种解释: 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容.若没有,则跳到第三步操作. 3 ...

  7. 从输入URL到页面加载的全过程

    前面的话 本文将详细介绍从输入URL到页面加载的全过程 概述 从输入URL到页面加载的主干流程如下: 1.浏览器构建HTTP Request请求 2.网络传输 3.服务器构建HTTP Response ...

  8. 从输入 URL 到页面加载完成的过程详解---【XUEBIG】

    从输入 URL 到页面加载完成的过程中都发生了什么事情? 这是一道经典的面试题,涉及面非常广,要答出来并不困难,当要将问题回答好却不是那么容易 过程概述 浏览器查找域名对应的 IP 地址: 浏览器根据 ...

  9. 从浏览器中输入URL到页面加载的发生了什么-转载

    转:https://www.cnblogs.com/confach/p/10050013.html 背景 “从浏览器中输入URL到页面加载的发生了什么“,这是一道经典的面试题,涉及到的知识面非常多,但 ...

随机推荐

  1. Python with MYSQL - sytax problem

    Con= MySQLdb.connect(host=',db='test') cur=Con.cursor() cur.execute('insert into staff_daily(Date,Na ...

  2. java支付宝开发-异常-01-"sub_code":"isv.invalid-app-id","sub_msg":"无效的AppID参数"

    一.现象 无论请求哪个接口都报这个错误 二.异常原因 后来检查了一下,发现是因为 我支付宝网关写错了.沙箱环境和正式环境 的支付宝网关不同,如下 //支付宝网关名-正式环境 //public stat ...

  3. OpenCV——饱和度调整

    参考: 闲人阿发伯的博客 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED ...

  4. NOI 模拟赛 #2

    得分非常惨惨,半个小时写的纯暴力 70 分竟然拿了 rank 1... 如果 OYJason 和 wxjor 在可能会被爆踩吧 嘤 T1 欧拉子图 给一个无向图,如果一个边集的导出子图是一个欧拉回路, ...

  5. poj3585 Accumulation Degree[树形DP换根]

    思路其实非常简单,借用一下最大流求法即可...默认以1为根时,$f[x]$表示以$x$为根的子树最大流.转移的话分两种情况,一种由叶子转移,一种由正常孩子转移,判断一下即可.换根的时候由頂向下递推转移 ...

  6. 【转】LCS

    动态规划法 经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题.简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加. 为了节 ...

  7. select元素选择时间以及jQuery对select的属性操作

    <select class="input04" id="1" name="in_class1" onchange="setc ...

  8. SpringMVC 学习笔记(拦截器的配置))

    在设置SpringMVC的拦截器时,需要在SpringMVC中配置 拦截器对象,拦截器的的对象要 实现 HandlerInterceptor 接口 拦截器类的设置: public class inte ...

  9. ubuntu部署supersor

     1.安装pip $ sudo apt-get install python-pip –y $ sudo pip install - -upgrade pip //升级pip 2.安装supervis ...

  10. cisco 2901 配置拨号上网

    1.输入en,然后输入密码确认后按conf t2.Router(config)# vpdn enable        interface dialer 1   // 进入拨号器13.Router(c ...