14.1 什么是HTTP? HTTP 和 HTTPS 的区别?
HTTP
(HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范,http和https的区别是HTTPS为了保证这些隐私数据能加密传输,让
HTTP
运行安全的SSL/TLS
协议上,即 HTTPS = HTTP + SSL/TLS,通过SSL
证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密SSL
协议位于TCP/IP
协议与各种应用层协议之间,浏览器和服务器在使用SSL
建立连接时需要选择一组恰当的加密算法来实现安全通信,为数据通讯提供安全支持两者的区别是
HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理,相对更安全
HTTP 和 HTTPS 使用连接方式不同,默认端口也不一样,HTTP是80,HTTPS是443
HTTPS 由于需要设计加密以及多次握手,性能方面不如 HTTP
HTTPS需要SSL,SSL 证书需要钱,功能越强大的证书费用越高
14.2 说说地址栏输入 URL 敲下回车后发生了什么?
简单的分析,从输入
URL
到回车后发生的行为如下:
URL解析
DNS 查询
TCP 连接
HTTP 请求
响应请求
页面渲染
14.3 页面渲染的过程
解析HTML,构建 DOM 树
解析 CSS ,生成 CSS 规则树
合并 DOM 树和 CSS 规则,生成 render 树
布局 render 树( Layout / reflow ),负责各元素尺寸、位置的计算
绘制 render 树( paint ),绘制页面像素信息
浏览器会将各层的信息发送给 GPU,GPU 会将各层合成( composite ),显示在屏幕上
14.4 http缓存中,强缓存和协商缓存的区别?
缓存可以减少冗余的数据传输。节省了网络带宽,从而更快的加载页面。也可以降低了服务器的要求,从而服务器更快的响应
协商缓存: 客户端向服务器端发出请求,服务端会检测是否有对应的标识,如果没有对应的标识,服务器端会返回一个对应的标识给客户端,客户端下次再次请求的时候,把该标识带过去,然后服务器端会验证该标识,如果验证通过了,则会响应304,告诉浏览器读取缓存。如果标识没有通过,则返回请求的资源。直白说就是客户端和服务器商量那些东西进行缓存.
协商缓存的标识有2种:ETag/if-None-Match 和 Last-Modified/if-Modify-Since
强制缓存: 浏览器在加载资源的时候,会先根据本地缓存资源的header中的信息(Expires 和 Cache-Control)来判断是否需要强制缓存。如果命中的话,则会直接使用缓存中的资源。否则的话,会继续向服务器发送请求。直白来说就是我不管,我要全部缓存.
强缓存的优先级高于协商缓存,如果强缓存生效,浏览器直接从缓存中获取资源,不发送请求到服务器。 强缓存通过缓存标识判断资源是否过期,而协商缓存通过与服务器通信判断资源是否发生变化。 强缓存效率高,但判断精确度低;协商缓存效率相对较低,但判断精确度高。
14.5 常用的网络状态码?以及出现状态如何解决
HTTP状态码(英语:HTTP Status Code),用以表示网页服务器超文本传输协议响应状态的3位数字代码,简单来讲,
http
状态码的作用是服务器告诉客户端当前请求响应的状态,通过状态码就能判断和分析服务器的运行状态状态码中
1 表示消息
2 表示成功
200(成功):请求已成功,请求所希望的响应头或数据体将随此响应返回
3 表示重定向
300(多种选择):针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择
301(永久移动):请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置
302(临时移动): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
303(查看其他位置):请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码
305 (使用代理): 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理
307 (临时重定向): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
4 表示请求错误
400(错误请求): 服务器不理解请求的语法
401(未授权): 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403(禁止): 服务器拒绝请求
404(未找到): 服务器找不到请求的网页
405(方法禁用): 禁用请求中指定的方法
406(不接受): 无法使用请求的内容特性响应请求的网页
407(需要代理授权): 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理
408(请求超时): 服务器等候请求时发生超时
5 表示服务器错误
500(服务器内部错误):服务器遇到错误,无法完成请求
501(尚未实施):服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码
502(错误网关): 服务器作为网关或代理,从上游服务器收到无效响应5
503(服务不可用): 服务器目前无法使用(由于超载或停机维护)00.
504(网关超时): 服务器作为网关或代理,但是没有及时从上游服务器收到请求
505(HTTP 版本不受支持): 服务器不支持请求中所用的 HTTP 协议版
重点
100:客户端在发送POST数据给服务器前,征询服务器情况,看服务器是否处理POST的数据,如果不处理,客户端则不上传POST数据,如果处理,则POST上传数据。常用于POST大数据传输
206:一般用来做断点续传,或者是视频文件等大文件的加载
301:永久重定向会缓存。新域名替换旧域名,旧的域名不再使用时,用户访问旧域名时用301就重定向到新的域名
302:临时重定向不会缓存,常用 于未登陆的用户访问用户中心重定向到登录页面
304:协商缓存,告诉客户端有缓存,直接使用缓存中的数据,返回页面的只有头部信息,是没有内容部分
400:参数有误,请求无法被服务器识别
403:告诉客户端进制访问该站点或者资源,如在外网环境下,然后访问只有内网IP才能访问的时候则返回
404:服务器找不到资源时,或者服务器拒绝请求又不想说明理由时
503:服务器停机维护时,主动用503响应请求或 nginx 设置限速,超过限速,会返回503
504:网关超时
14.6 说说对WebSocket的理解?应用场景?
WebSocket,是一种网络传输协议,位于
OSI
模型的应用层。可在单个TCP
连接上进行全双工通信,能更好的节省服务器资源和带宽并达到实时通迅,客户端和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输### 他的优点是:
较少的控制开销:数据包头部协议较小,不同于http每次请求需要携带完整的头部
更强的实时性:相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少
保持创连接状态:创建通信后,可省略状态信息,不同于HTTP每次请求需要携带身份验证
更好的二进制支持:定义了二进制帧,更好处理二进制内容
支持扩展:用户可以扩展websocket协议、实现部分自定义的子协议
更好的压缩效果:Websocket在适当的扩展支持下,可以沿用之前内容的上下文,在传递类似的数据时,可以显著地提高压缩率
应用场景
基于
websocket
的事实通信的特点,其存在的应用场景大概有:
弹幕
媒体聊天
协同编辑
基于位置的应用
体育实况更新
股票基金报价实时更新