美文网首页前端面试之路
「Network」关于网络方面的一些面试问题

「Network」关于网络方面的一些面试问题

作者: ybrelax | 来源:发表于2019-07-30 22:10 被阅读0次

Http请求中的keep-alive有了解嘛?

答案:
在http早期,每个http请求都要求打开一个tcp socket连接,并且使用一次之后就断开这个tcp连接了。而keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。使用keep-alive可以减少tcp连接的次数,减少了等待时长。但是tcp的长时间占用也会导致资源的占用。
当需要建立 HTTP 长连接时,HTTP 请求头将包含如下内容:
Connection: Keep-Alive
如果服务端同意建立长连接,HTTP 响应头也将包含如下内容:
Connection: Keep-Alive
当需要关闭连接时,HTTP 头中会包含如下内容:
Connection: Close
https://www.jianshu.com/p/49551bda6619

Http2的多路复用

在 HTTP/1 中,每次请求都会建立一次HTTP连接,也就是我们常说的3次握手4次挥手,这个过程在一次请求过程中占用了相当长的时间,即使开启了 Keep-Alive ,解决了多次连接的问题,但是依然有两个效率上的问题:

  • 第一个:串行的文件传输。当请求a文件时,b文件只能等待,等待a连接到服务器、服务器处理文件、服务器返回文件,这三个步骤。我们假设这三步用时都是1秒,那么a文件用时为3秒,b文件传输完成用时为6秒,依此类推。(注:此项计算有一个前提条件,就是浏览器和服务器是单通道传输)
  • 第二个:连接数过多。我们假设Apache设置了最大并发数为300,因为浏览器限制,浏览器发起的最大请求数为6,也就是服务器能承载的最高并发为50,当第51个人访问时,就需要等待前面某个请求处理完成。

HTTP/2的多路复用就是为了解决上述的两个性能问题。
在 HTTP/2 中,有两个非常重要的概念,分别是帧(frame)和流(stream)。
帧代表着最小的数据单位,每个帧会标识出该帧属于哪个流,流也就是多个帧组成的数据流。
多路复用,就是在一个 TCP 连接中可以存在多条流。换句话说,也就是可以发送多个请求,对端可以通过帧中的标识知道属于哪个请求。通过这个技术,可以避免 HTTP 旧版本中的队头阻塞问题,极大的提高传输性能

为什么HTTPS要比HTTP更安全

HTTP存在TLS/SSL协议层 HTTP= HTTP + TLS/SSL

HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免此类问题发生。

简单了解下:TLS/SSL主要依赖于三类基本算法:散列函数 Hash、对称加密和非对称加密
https://juejin.im/post/5af557a3f265da0b9265a498

HTTP状态码了解一下

状态码 类别 描述
1xx Informational(信息性状态码) 请求正在被处理
2xx Success(成功状态码) 请求处理成功
3xx Redirection(重定向状态码) 需要进行重定向
4xx Client Error(客户端状态码) 服务器无法处理请求
5xx Server Error(服务端状态码) 服务器处理请求时出错

常见应答状态码:

image.png

401, 可能还存在未认证的情况
405: 请求头方法错误; 一般是将post请求做成get的请求方式
415:后台程序不支持提交的content-type
422 则表现为请求格式错误,但出现了 语义 错误
417: 预期结果失败
499: 这种情况,出现了请求服务器时间过长

UDT和TCP的区别

TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。

UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。

ajax 和 websocket的区别

  1. 本质不同:
    ajax即是异步Javascript和xml,是一种创建交互式网页的网页开发技术
    websocket: 是h5的一种新协议,是基于tcp连接进行的实时通信
  2. 生命周期不同:
    websocket是一种长连接,在一个会话种一直存在。
    ajax: 是一个短连接
  3. 适用范围
    websocket使用前后端实时通信,而ajax则是非实时通信
  4. 发起人不同
    ajax是客户端发起请求,websocket是客户端和服务端相互推送消息
    5 用法
ajax:
$.ajax({
type:"post",
url:"http://localhost:8080/target",
data:"state = yes",
dataType:"json",
success:funciont(data){
}
});
 
websocket:
var monitor = new webSocket('''')
onOpen 、onMessage、onClose

说下你了解的HTTP缓存机制

  • 浏览器的缓存,HTTP缓存有多种规则,那么我可以根据是否需要向服务端发起请求来分类,可以将其分为强制缓存,对比缓存

  • 强制缓存 HTTP头部字段:cache-control, expires(这个字段很少用了,服务端的时间可能客户端时间不一致, 而expires代表的是服务端时间,可以考虑用 max-age

  • 对比缓存通过对比HTTP的last-modifyed, etag字段,下一次请求服务器资源的时候可以发送if-modified-since与服务器的last-modiy对比来是否请求缓存。如果时间一直则继续使用缓存

https://juejin.im/post/5c1869ab6fb9a049f154207a

相关文章

  • 「Network」关于网络方面的一些面试问题

    Http请求中的keep-alive有了解嘛? 答案:在http早期,每个http请求都要求打开一个tcp soc...

  • 谈一谈面试

    面试,是招聘方和应试方首次沟通。对应试方而言,其中的关键便是沟通。面试官会提问一些问题,一般是技术方面的。应聘者应...

  • 如何规划自己的未来

    在当今这个社会中,面试的考官不再是单纯的问一些关于个人信息方面的问题,慢慢的会出现一些关于个人职业规划的问题,从个...

  • CPAN

    CPAN(Comprehensive Perl Archive Network:全面的Perl存档网络)是查找任何...

  • 【网络】关于应用网络层面的问题排查

    一、背景 涉及到网络层面的问题一般都比较复杂,场景多,定位难,成为了大多数开发的噩梦,应该是最复杂的了。 这里会举...

  • 计算机网络面试集锦

    本文对面试/笔试过程中经常会被问到的一些关于计算机网络的问题进行了梳理和总结,一方面方便同学们温故知新,另一方面也...

  • docker-cli(网络)

    关于docker网络通信模块的手册 --network指定网络--ip指定具体ipdocker支持3种网络模式no...

  • centos 7/rhel7: 如何重启/停止/启动网络服务

    CentOS 7 重启网络服务,输入下面的命令: systemctl retart network.service...

  • ubuntu 16.04 VPN服务设置

    直接设置里面的网络,“+” create的时候,你可能只有一个选项 to install the network ...

  • 网络协议的认知

    最近一直在看一些网络基础相关的知识,以便解决在工作中遇到的关于网络传输方面的问题。因此觉得有必要对最近学习的网络协...

网友评论

    本文标题:「Network」关于网络方面的一些面试问题

    本文链接:https://www.haomeiwen.com/subject/jimorctx.html