HTTP面试题必背

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的事实通信的特点,其存在的应用场景大概有:

  • 弹幕

  • 媒体聊天

  • 协同编辑

  • 基于位置的应用

  • 体育实况更新

  • 股票基金报价实时更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值