前端经典面试题---网络篇
来源:互联网 发布:vps监控软件 windows 编辑:程序博客网 时间:2024/05/17 23:14
- 一个页面从输入 URL 到页面加载显示完成这个过程中都发生了什么
- HTTP状态码
- cookiessessionStorage 和 localStorage 的区别
一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
在浏览器地址栏输入URL;
浏览器查看缓存:
a. 如果资源未缓存,发起新请求;
b. 如果已缓存且足够新鲜,直接提供给客户端,否则与服务器进行验证。
检验新鲜通常有两个HTTP头进行控制Expires和Cache-Control:
1) HTTP1.0提供Expires,值为一个绝对时间表示缓存新鲜日期
2) HTTP1.1增加了Cache-Control: max-age=,值为以秒为单位的最大新鲜时间;浏览器解析URL获取协议,主机,端口,path;
浏览器组装一个http请求报文;
浏览器获取主机IP地址,过程如下:
浏览器缓存 > 本机缓存 > hosts文件 > 路由器缓存 > ISP DNS缓存 > DNS递归查询(可能存在负载均衡导致每次IP不一样)打开一个socket与目标IP地址,端口建立TCP链接,三次握手如下:
a. 客户端发送一个TCP的SYN=1,Seq=X的包到服务器端口;
b. 服务器发回SYN=1,ACK=X+1,Seq=Y的响应包;
c. 客户端发送ACK=Y+1,Seq=Z;TCP链接建立后发送HTTP请求;
服务器接受请求并解析,将请求转发到服务程序,如虚拟主机使用HTTP Host头部判断请求的服务程序;
服务器检查HTTP请求头是否包含缓存验证信息如果验证缓存新鲜,返回304等对应状态码;
处理程序读取完整请求并准备HTTP响应,可能需要查询数据库等操作;
服务器将响应报文通过TCP连接发送回浏览器;
浏览器响应,根据情况选择关闭TCP连接或保留重用,
关闭TCP连接的四次挥手如下:
a. 主动方发送Fin=1,Ack=Z,Seq=X的报文
b. 被动方发送Ack=X+1,Seq=Z报文
c. 被动方发送Fin=1,Ack=X,Seq=Y报文
d. 主动方发送ACK=Y+1,Seq=X报文浏览器检查响应状态码;
如果资源可缓存,进行缓存;
对响应进行解码;
根据资源类型决定如何处理(假设资源为HTML文档);
解析HTML文档,构件DOM树,下载资源,构造CSSOM树,根据DOM树和CSSOM树构建渲染树,执行js脚本;
显示页面
(1)当发送一个URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询。这能使浏览器获得请求对应的IP地址。
(2)浏览器与远程Web服务器通过TCP三次握手协商来建立一个TCP/IP连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。
(3)一旦TCP/IP连接建立,浏览器会通过该连接向远程服务器发送HTTP的GET请求。远程服务器找到资源并使用HTTP响应返回该资源,值为200的HTTP响应状态表示一个正确的响应。
(4)此时,Web服务器提供资源服务,客户端开始下载资源。
HTTP状态码
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
200 OK 正常返回信息
201 Created 请求成功并且服务器创建了新的资源
202 Accepted 服务器已接受请求,但尚未处理
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 临时性重定向。
303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
304 Not Modified 自从上次请求后,请求的网页未修改过。
400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized 请求未授权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源。
500 Internal Server Error 最常见的服务器端错误。
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
cookies,sessionStorage 和 localStorage 的区别
- cookie在浏览器和服务器间来回传递,服务器可修改cookie;
- cookie有path概念,子路径可以访问父路径cookie,父路径不能访问子路径cookie
- 有效期:cookie在设置的有效期内有效,默认为浏览器关闭;sessionStorage在窗口关闭前有效,localStorage长期有效,直到用户删除;
- 共享:sessionStorage不能共享,localStorage在同源文档之间共享,cookie在同源且符合path规则的文档之间共享;
- sessionStorage和localStorage的存储空间更大,有更多丰富易用的接口和各自独立的存储空间。浏览器不能保存超过300个cookie,单个服务器不能超过20个,每个cookie不能超过4k。web storage大小支持能达到5M
- 前端经典面试题---网络篇
- 经典前端面试题
- 前端面试题(经典)
- 前端经典面试题---JS篇
- 前端经典面试题---CSS篇
- 前端经典面试题---Ajax篇
- web前端经典面试题
- 前端经典面试题1
- 前端经典面试题2
- 前端面试题(经典)
- WEB前端经典笔试/面试题
- 经典前端面试题(三)
- 分享一套经典的前端面试题
- 前端经典面试题(一)
- 前端面试题 js篇
- 前端js和css的经典面试题
- Web前端面试题笔记_JavaScript篇
- 前端常见面试题总结---第二篇
- 习题 2.4(2)依次将10个数输入,要求输出其中最大的数。
- Java方法参数传递方式
- 三目运算符
- SDUT——2498AOE网上的关键路径
- js实现简单计算器
- 前端经典面试题---网络篇
- 【DSP】TMS320F28035 GPIO外部中断例程
- XMind带你揭秘《战狼2》的心路历程
- 面试总结
- 我自己的计算机视觉知识结构
- 从页面或者后台的角度格式化json或xml报文
- Android 4.4 Graphic系统详解(2) VSYNC的生成
- LayerColor
- Struts理解