在地址栏输入网址敲回车发生了什么?
一.浏览器解析出url中的域名: url由通信协议+域名+端口号+资源路径组成,浏览器需要从url中解析要请求的域名
二.DNS解析:
1.查询浏览器的DNS缓存
2.若浏览器缓存中未找到该域名对应的ip,则查找操作系统的DNS缓存,即hosts文件中的域名与ip的映射关系
3.若在操作系统缓存中也没有找到,则查找本地DNS服务器缓存。
4.若本地DNS缓存中仍然没有找到,则直接请求Root Server域名服务器
5.根域名服务器返回给本地服务器一个所查询域的主域名服务器(gTLD Server)地址,gTLD是顶级域名服务器,如.com、.cn、.org等。
6,.本地域名服务器向上一步返回的gTLD服务器发送解析请求。
7.gTLD接受请求查找并返回此域名对应的Name Server域名服务器的地址
8.本地域名服务器向Name Server域名服务器发送解析请求,Name Server域名服务器找到该域名对应的ip,连同一个TTL值返回给本地域名服务器。
9.本地域名服务器缓存该域名和ip的对应关系,缓存时间由TTL的值控制
10.把解析结果返回给用户,用户根据TTL值进行缓存。
三.客户端与服务器建立TCP连接
第一次握手:客户端向服务器端发送请求(SYN=1) 等待服务器确认;
第二次握手:服务器收到请求并确认,回复一个指令(SYN=1,ACK=1);
第三次握手:客户端收到服务器的回复指令并返回确认(ACK=1)。
四.四次挥手:
浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;
服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;
服务器数据传输完毕后,向客户机发送连接释放报文;
客户机接收到报文后,发出确认,然后等待一段时间后,释放TCP连接;
什么是BFC?什么情况下触发BFC
什么是BFC?
BFC 全称为: 块格式化上下文,
什么情况下触发BFC?
根元素或其它包含它的元素
浮动元素 (元素的 float 不是 none)
绝对定位元素 (元素具有 position 为 absolute 或 fixed)
内联块 (元素具有 display: inline-block)
表格单元格 (元素具有 display: table-cell,HTML表格单元格默认属性)
表格标题 (元素具有 display: table-caption, HTML表格标题默认属性)
具有overflow 且值不是 visible 的块元素,
display: flow-root