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

一、DNS解析(网址->IP地址)

dns是一个域名系统,是万维网上作为bai域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串

从浏览器中查找DNS缓存
如果没有,继续到操作系统中查询DNS缓存
如果没有,开始分级查询

  1. 本地DNS服务器
  2. 根域名服务器
  3. COM顶级域名服务器
  4. goole.com域名服务器
    查到IP地址后,继续下一步

二、TCP连接(三次握手)

http超文本传输协议是TCP/IP协议的子集,TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急)

  1. 第一次握手:客户端 -> 服务端

客户端向服务端发送请求报文,请求建立连接,等待服务端确认。发送字段:
SYN=1(synchronization 同步。请求建立连接)
Seq=x(sequence 客户端序列号)

  1. 第二次握手: 服务端 -> 客户端

服务端表明收到请求报文并同意建立连接,发送确认报文,询问客户端是否准备好。返回字段:
SYN=1(同意建立连接)
ACK=x+1(acknowledgement 答复。客户端序列号+1)
Seq=y(服务端序列号)

  1. 第三次握手:客户端 -> 服务端

客户端表明收到确认报文,再返回服务端一个确认报文,表示准备开始发送信息。发送字段:
SYN=0(开始发送信息)
ACK=y+1(服务端序列号+1)
Seq=x+1(序列号设置为服务端ACK)

第一次表明客户端有发送信息的能力
第二次表明服务端有接收信息和发送信息的能力
第三次表明客户端有接收信息的能力

三、 客户端发送HTTP请求

四、服务端处理请求,并返回HTTP报文

五、浏览器解析并渲染页面过程

浏览器解析页面过程:
  1. 浏览器接收到HTML模板文件,自上而下解析HTML
  2. 浏览器遇到CSS样式文件表,暂停解析HTML,请求CSS文件
  3. 服务端返回CSS文件,浏览器开始解析CSS
  4. 浏览器解析完CSS,继续解析HTML,遇到DOM节点,解析DOM
  5. 浏览器遇到img图片,异步请求图片,继续解析后面的代码
  6. 浏览器返回图片,由于图片占有面积影响布局,浏览器重绘
  7. 浏览器遇到js脚本文件,停止所有文件加载和解析,请求并执行脚本文件(js阻塞,所以js标签尽量放在body最后)
  8. 浏览器执行完脚本文件,如果后面还有代码,继续解析
  9. 加载并解析完所有HTML、CSS、JS文件,页面出现
浏览器渲染页面过程:

1.解析HTML,构建DOM树;解析CSS,生成CSS规则
2.构建render树(渲染树,HTML + CSS,不包括display:none)
3.布局render树(layout过程,计算宽高、定位、坐标、换行、positions、overflow、z-index等属性)
4.绘制render树(painting过程,背景 —> 浮动 -> content -> padding -> border)

引起浏览器重新布局layout:
js 修改 DOM 属性或 css 属性,分为两种情况:
1. 重绘,不改变定位、宽高等,只改变元素展示方式
2. 重排/回流,影响文档内容、结构或元素定位
优化:
1. 脱离文档流的重排只影响自己子孙元素
2. 读取element属性会造成重排,尽量避免。如offsetTop/scrollTop/clientTop系列

六、TCP连接结束(四次挥手)

  1. 第一次挥手:客户端 -> 服务端
    客户端发送断开连接的请求
    FIN (finish 结束)
    ACK=1000 (acknowledgement 答复)
    Seq=x (sequence 客户端序列号)
  2. 第二次挥手:服务端 -> 客户端
    服务端接收并同意断开连接的请求
    ACK=x+1 (acknowledgement 答复,客户端序列号+1)
    Seq=1000 (服务端序列号设置为客户端ACK)
  3. 第三次挥手:服务端 -> 客户端
    服务端发送断开连接的请求
    FIN(finish 结束)
    ACK=x+1 (客户端序列号+1)
    Seq=1000(服务端序列号)
  4. 第四次挥手:客户端 -> 服务端
    客户端断开连接,完成通讯
    ACK=1000+1 (服务端序列号+1)
    Seq=x+1(客户端序列号设置为服务端ACK)
第一次表明发完了
第二次表明知道发完了
第三次表明收完了
第四次表明知道收完了
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容