在浏览器输入url回车后发生了什么?
1. DNS解析:把url的地址解析为IP地址,DNS是一个数据库
2. 建立TCP连接:TCP三次握手
- 客户端发送SYN数据包来表示请求连接
- 服务器响应SYN和ACK的数据包来表示同意建立连接
- 客户端再发送ACK数据包来表示成功连接
3. 发送http请求
请求报文:
- 请求行——http协议:请求地址 ,请求方法
- 请求头部——一些浏览器的信息,由键值对组成,一行一对
- 空行——遇到空行,说明下面没有请求头部了
- 请求数据
4. 响应http请求
响应报文:
- 状态行——200,404
- 响应头部——由键值对组成,一行一对
- 空行——遇到空行,说明下面没有响应头部了
- 响应数据
5. 页面渲染
6. 关闭TCP连接:TCP四次挥手
浏览器渲染页面的流程?
构建DOM树
构建CSSOM树
构建渲染树
布局:获取渲染树的结构、节点位置和大小,依据盒子模型来进行,即每个元素都用一个盒子表示,然后这些盒子在页面上进行排列和嵌套
绘制:把渲染树以像素的形式绘制在页面上
TCP三次挥手失败会发生什么?
三次握手如果第三次失败了会怎么样:失败了服务端收到不确认包,会超时重发5次,若还是没有收到确认包,或者收到了数据包,则服务端直接发送reset重置包结束本次连接
四次挥手之所以结束时需要多一次请求是因为:客户端单方面无数据发送认为可以结束了,但是服务端不一定没有数据发送,所以服务端要将确信信息和自身发起断开分作两步