在浏览器中输入url到显示网页主要包含两个部分: 网络通讯和页面渲染
互联网内各网络设备间的通讯都遵循TCP/IP协议,利用TCP/IP协议族进行网络通讯时,会经过分层顺序与对方进行通讯。分层由高到低分别为:应用层、传输层、网络层、数据链路层。发送端从应用层往下走,接收端从数据链路层网上走css
咱们常见的RUL是这样的:www.baidu.com,域名一般由3部分组成:协议 域名 端口号
前端
涉及知识点: 跨域
在前端进行数据请求时,因为浏览器的同源策略,协议,域名,端口号有一个不一样会存在跨域请求,须要进行跨域处理,相关的跨域方法点击user-gold-cdn.xitu.io/2018/11/19/…chrome
互联网上每一台计算机的惟一标识是它的IP地址,可是IP地址并不方便记忆。用户更喜欢用方便记忆的网址去寻找互联网上的其它计算机,也就是上面提到的百度的网址。因此互联网设计者须要在用户的方便性与可用性方面作一个权衡,这个权衡就是一个网址到IP地址的转换,这个过程就是DNS解析,即实现了网址到IP地址的转换跨域
DNS解析是一个递归查询的过程。 浏览器
DNS缓存和DNS负载均衡缓存
DNS存在着多级缓存,从离浏览器的距离排序的话,有如下几种: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。服务器
在你的chrome浏览器中输入:chrome://dns/,你能够看到chrome浏览器的DNS缓存。网络
系统缓存主要存在/etc/hosts(Linux系统)中: 负载均衡
真实的互联网世界背后存在成千上百台服务器,大型的网站甚至更多。可是在用户的眼中,它须要的只是处理他的请求,哪台机器处理请求并不重要。DNS能够返回一个合适的机器的IP给用户,例如能够根据每台机器的负载量,该机器离用户地理位置的距离等等,这种过程就是DNS负载均衡,又叫作DNS重定向优化
在经过DNS域名解析后,获取到了服务器的IP地址,在获取到IP地址后,便会开始创建一次链接,这是由TCP协议完成的,主要经过三次握手进行链接。
完整的HTTP请求包含请求起始行、请求头部、请求主体三部分。
服务器在收到浏览器发送的HTTP请求以后,会将收到的HTTP报文封装成HTTP的Request对象,并经过不一样的Web服务器进行处理,处理完的结果以HTTP的Response对象返回,主要包括状态码,响应头,响应报文三个部分。
状态码主要包括如下部分:
1xx:指示信息–表示请求已接收,继续处理。
2xx:成功–表示请求已被成功接收、理解、接受。
3xx:重定向–要完成请求必须进行更进一步的操做。
4xx:客户端错误–请求有语法错误或请求没法实现。
5xx:服务器端错误–服务器未能实现合法的请求。
响应头主要由Cache-Control、 Connection、Date、Pragma等组成。
响应体为服务器返回给浏览器的信息,主要由HTML,css,js,图片文件组成。
若是说响应的内容是HTML文档的话,就须要浏览器进行解析渲染呈现给用户。整个过程涉及两个方面:解析和渲染。在渲染页面以前,须要构建DOM树和CSSOM树。 在浏览器还没接收到完整的 HTML 文件时,它就开始渲染页面了,在遇到外部链入的脚本标签或样式标签或图片时,会再次发送 HTTP 请求重复上述的步骤。在收到 CSS 文件后会对已经渲染的页面从新渲染,加入它们应有的样式,图片文件加载完马上显示在相应位置。在这一过程当中可能会触发页面的重绘或重排。这里就涉及了两个重要概念:Reflow和Repaint。
- Reflow,也称做Layout,中文叫回流,通常意味着元素的内容、结构、位置或尺寸发生了变化,须要从新计算样式和渲染树,这个过程称为Reflow。
- Repaint,中文重绘,意味着元素发生的改变只是影响了元素的一些外观之类的时候(例如,背景色,边框颜色,文字颜色等),此时只须要应用新样式绘制这个元素就OK了,这个过程称为Repaint。
因此说Reflow的成本比Repaint的成本高得多的多。DOM树里的每一个结点都会有reflow方法,一个结点的reflow颇有可能致使子结点,甚至父点以及同级结点的reflow。
经过四次挥手关闭链接(FIN ACK, ACK, FIN ACK, ACK)。
- 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
- 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
- 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
- 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。