前端八股文(四)计网 持续更新中。。。

计网相关面试题

1.http缓存的方式

缓存是为了重复使用而被存储的,可以减少浏览器和服务器之间通信的次数、降低网络延迟、加速页面加载、提高用户体验性等。不但能使网页打开速度更快,还能减少服务器的压力。

浏览器缓存策略:

强缓存:cache-control/Expires

  1. 服务器通知浏览器一个缓存时间,在缓存时间内,下次请求直接从本地缓存中读取资源而不发起请求。

  2. cache-control是相对时间(http1.1),expires是绝对时间(http1)

  3. cache-control优先级高于expires

协商缓存:Etag/Last-modified

如果强制缓存未命中,但协商缓存可用,则会向服务器发送条件请求,请求头中设置了If-Modified-Since 或者 If-None-Match的值, 服务端根据这两个值,去验证是否命中协商缓存。如果命中了协商缓存,会返回 304 状态,直接使用浏览器缓存。

  1. Last-Modified / If-Modified-since表示的是服务器的资源最后一次修改的时间;

  2. Etag / If-None-match表示的是服务器资源的唯一标识,只要资源变化,Etag就会重新生成;

2.http和https区别

  1. 安全性:这是HTTP和HTTPS最本质的区别。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等,而HTTPS使用SSL/TLS协议对数据进行加密传输,使得攻击者无法截获并解析数据包中的内容。,安全性大大提高。

  2. 连接方式:HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。这就说明它们使用的协议是不一样的,前者是超文本传输协议,而后者则是SSL加HTTP的协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

  3. 响应速度:由于HTTPS协议需要进行加密和解密等操作,因此它的响应速度相对于HTTP来说会有所延迟。然而,随着硬件性能和加密算法的改进,这种差异已经变得越来越小。

  4. 费用:使用HTTPS协议需要购买SSL证书,并支付一定的费用给证书颁发机构(CA)。而HTTP协议则不需要任何费用。但是,考虑到HTTPS带来的安全性和用户体验的提升,这种费用通常被认为是值得的。

3.tcp和udp的区别

  1. TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付

  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

  4. UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

  5. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

  6. TCP首部开销20字节;UDP的首部开销小,只有8个字节

  7. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

4.http常见响应码

  • 200:请求成功

  • 301:永久重定向

  • 302:临时重定向

  • 304:资源重复请求

  • 400:请求格式错误

  • 403:服务器拒绝访问

  • 404:请求资源不存在

  • 500:服务器内部错误

  • 501:服务器不支持请求的功能

5.OSI七层模型

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

tcp/ip模型:

网络接口层 、网际层、传输层、应用层

image-20240616144839972

输入url到页面展示出来用到的协议

流程:

输入URL之后,浏览器需要将URL解析为IP地址,解析需要用到DNS协议

DNS协议是基于UDP的,需要用到UDP协议

得到iP地址之后,浏览器需要与服务器建立HTTP连接,需要用到HTTP协议

HTTP生成GET请求报文,传给TCP处理,需要用到TCP协议(如果用的是HTTPS协议的话,传之前会先对报文加密)。

TCP层可能会对HTTP数据包分片,分片是根据路径最大传输单元MTU和最大报文段长度MSS的。然后TCP数据包发送给IP层,需要用到IP协议

IP层经过路由选择,一跳一跳发送到目的地址。一个网段内的寻址通过以太网协议实现(也可以是其他物理层协议,如PPP,SLIP),以太网协议需要知道目的IP地址的MAC地址,需要ARP协议

总结: 应用层:DNS,HTTP,HTTPS 传输层:TCP,UDP 网络层:IP,ARP

输入url之后发生了什么

  1. url解析:判断输入的是url还是搜索内容

  2. 查找缓存:查找浏览器缓存,有就返回页面,没有就发起请求

  3. DNS域名解析 (DNS协议、UDP协议)

  4. TCP三次握手建立连接 (TCP协议)

  5. 发送http请求 (http协议)(tcp数据包发送给IP层:ip协议)(获取IP地址的MAC地址:ARP协议)

  6. 服务器响应并返回结果

  7. TCP四次挥手断开连接

  8. 浏览器渲染

  9. js引擎解析

6.TCP三次握手、四次挥手

tcp三次握手:

  1. 第一次握手:客户端向服务器发送syn数据包,告诉服务器要发请求了,客户端进入syn_sent状态,等待服务器响应

  2. 第二次握手:服务器接收syn包,发送syn+ack包,服务器进入syn_rcvd状态,表示收到消息,同意建立连接

  3. 第三次握手:客户端收到syn+ack包后,发送ack包,进入establish状态;当服务器收到ack包后,也进入establish状态,自此建立tcp连接

为什么不能是两次握手?

如果第一次握手因为网络阻塞问题,导致服务器在很晚后才收到syn包,这个包已经失效,但服务器会以为是新的请求,于是发送syn+ack包给客户端,虽然客户端没有跟服务器建立连接,但是服务器误以为连接已建立,导致资源浪费

tcp四次挥手:

  1. 第一次挥手:客户端向服务器发送fin包,告诉服务器准备关闭连接,客户端进入fin_wait_1状态,此时客户端只能接收数据,不能发送数据

  2. 第二次挥手:服务器收到fin包,向客户端发送ack包,告诉客户端收到消息,准备关闭连接,服务器进入close_wait状态,此时服务器只能发送数据,不能接收数据

  3. 客户端收到ack包后进入fin_wait_2状态,等待服务器发送fin包

  4. 第三次挥手:服务器向客户端发送fin包,表示数据发送完毕,准备关闭连接,服务器进入last_ack状态,不能接收也不能发送数据

  5. 第四次挥手:客户端收到fin包后,发送ack包表示确认关闭,服务器收到后进入close状态,客户端等待一段时间,确保服务器收到ack包后,也进入close状态,释放网络资源

7.介绍下 http1.0http1.1http2.0 协议的区别?

http1.0

它的特点是每次请求和响应完毕后都会销毁 TCP 连接,同时规定前一个响应完成后才能发送下一个请求。这样做有两个问题:

  1. 无法复用连接

每次请求都要创建新的 TCP 连接,完成三次握手和四次挥手,网络利用率低

  1. 队头阻塞

如果前一个请求被某种原因阻塞了,会导致后续请求无法发送。

http1.1

http1.1 是 http1.0 的改进版,它做出了以下改进:

  • 长连接

http1.1 允许在请求时增加请求头connection:keep-alive,这样便允许后续的客户端请求在一段时间内复用之前的 TCP 连接

  • 管道化

基于长连接的基础,管道化可以不等第一个请求响应继续发送后面的请求,但响应的顺序还是按照请求的顺序返回。

  • 缓存处理

新增响应头 cache-control,用于实现客户端缓存。

  • 断点传输

在上传/下载资源时,如果资源过大,将其分割为多个部分,分别上传/下载,如果遇到网络故障,可以从已经上传/下载好的地方继续请求,不用从头开始,提高效率

http2.0

http2.0 进一步优化了传输效率,它主要有以下改进:

  • 二进制分帧

将传输的消息分为更小的二进制帧,每帧有自己的标识序号,即便被随意打乱也能在另一端正确组装

  • 多路复用

基于二进制分帧,在同一域名下所有访问都是从同一个 tcp 连接中走,并且不再有队头阻塞问题,也无须遵守响应顺序

  • 头部压缩

http2.0 通过字典的形式,将头部中的常见信息替换为更少的字符,极大的减少了头部的数据量,从而实现更小的传输量

  • 服务器推

http2.0 允许服务器直接推送消息给客户端,无须客户端明确的请求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/6775.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

项目一:使用 Spring + SpringMVC + Mybatis + lombok 实现网络五子棋

一:系统展示: 二:约定前后端接口 2.1 登陆 登陆请求: GET /login HTTP/1.1 Content-Type: application/x-www-form-urlencodedusernamezhangsan&password123登陆响应: 正常对象:正常对象会在数据库中存储&…

vue 插槽

参考文档 插槽 Slots | Vue.js 1. 基本概念 Vue的插槽&#xff08;slot&#xff09;&#xff0c;简单来说&#xff0c;就是一种 定义在组件中的 “占位符”。用于实现现组件的内容分发和复用。如下&#xff0c;是一个简单的默认插槽&#xff1a; <!-- Parent.vue --> &…

信息流不同行业账户流量池有区别吗?

在投放过程中&#xff0c;我们经常遇到这么一个问题&#xff0c;不同行业账户投放&#xff0c;流量池会有区别嘛&#xff1f;我认为是有的&#xff0c;那么对于我们而言&#xff0c;怎么样才能利用好媒体对于流量池的划分效果&#xff0c;可以从以下几个方面来进行考虑&#xf…

[Tex] Ubuntu 搭建 TexWork

更新软件库 打开终端&#xff1a; sudo apt --update sudo apt --upgrade 安装 texlive 完整版与 TexWorks 界面 sudo apt install texlive-full sudo apt install texworks

从0开始深度学习(26)——汇聚层/池化层

池化层通过减少特征图的尺寸来降低计算量和参数数量&#xff0c;同时增加模型的平移不变性和鲁棒性。汇聚层的主要优点之一是减轻卷积层对位置的过度敏感。 1 最大汇聚层、平均汇聚层 汇聚层和卷积核一样&#xff0c;是在输入图片上进行滑动计算&#xff0c;但是不同于卷积层的…

地图带你看三山五岳-基于Leaflet的重点旅游专题实现

目录 前言 一、关于三山五岳 1、三山五岳简介 2、位置信息检索 二、使用Leaflet进行WebGIS标注 1、基础数据准备 2、点位标绘 三、实际效果 1、整体效果 2、东岳泰山 3、西岳华山 4、南岳衡山 5、北岳恒山 6、 中岳嵩山 四、总结 前言 在信息技术飞速发展的今…

营销邮件策略:提升打开率和转化率的技巧!

营销邮件的发送技巧有哪些&#xff1f;如何提高营销邮件召唤力&#xff1f; 随着邮件数量的激增&#xff0c;如何确保您的营销邮件能够脱颖而出&#xff0c;提升打开率和转化率&#xff0c;成为了每个营销人员必须面对的挑战。MailBing将深入探讨一系列有效的营销邮件策略&…

libaom 源码分析:帧间运动矢量预测

AV1 帧间运动矢量预测原理 运动矢量可以被相邻块预测,这些相邻块可以是空域相邻块,或位于参考帧中的时域相邻块;通过检查所有这些块,将确定一组运动矢量预测器,并用于编码运动矢量信息。空域运动矢量预测 两组空域相邻块可以被利用寻找空域 MV 预测器,第一组包括当前块的…

轮播图【HTML+CSS+JavaScript】

给大家分享一个很好看的轮播图&#xff0c;这个也是之前看到别人写的效果感觉很好看&#xff0c;所以后面也自己实现了一下&#xff0c;在这里分享给大家&#xff0c;希望大家也可以有所收获 轮播图效果&#xff1a; 视频效果有点浑浊&#xff0c;大家凑合着看&#xff0c;大家…

OneRestore: A Universal Restoration Framework for Composite Degradation 论文阅读笔记

这是武汉大学一作单位的一篇发表在ECCV2024上的论文&#xff0c;文章代码开源&#xff0c;文章首页图如下所示&#xff0c;做混合图像干扰去除&#xff0c;还能分别去除&#xff0c;看起来很牛逼。文章是少见的做混合图像干扰去除的&#xff0c;不过可惜只包含了3种degradation…

基于Springboot的任务发布平台设计与实现(源码齐全+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题&#xff0c;今天给大家介绍…

centos7 kafka高可用集群安装及测试

前言 用三台虚拟机centos7 搭建高可用集群&#xff0c;及测试方法 高可用搭建的方法&#xff0c;参考&#xff1a;https://blog.csdn.net/u011197085/article/details/134070318 高可用搭建 1、安装配置zookeeper集群 下载zookeeper 注&#xff1a;zookeeper链接如果失效&a…

30条勒索病毒处置原则

当前&#xff0c;勒索病毒在全球范围内肆虐&#xff0c;成为企业数据资产安全的头号威胁。这些狡猾的恶意软件&#xff0c;如同网络空间中的幽灵&#xff0c;不断寻找并利用系统的漏洞&#xff0c;通过加密数据或窃取敏感信息&#xff0c;向企业索取高额赎金。一旦感染&#xf…

推荐一款业内领先的建模工具:SAP PowerDesigner

SAP PowerDesigner是一款业内领先的建模工具&#xff0c;帮助您改进商务智能&#xff0c;打造更卓越的信息架构。通过该软件的元数据管理功能&#xff0c;可以构建关键信息资产的 360 度全方位视图&#xff0c;从而使数据管理、BI、数据集成和数据整合工作大获裨益。其分析功能…

6本SCI/SSCI被解除「On Hold」, 重新回归, 单位如何认定?还能投吗?

【SciencePub学术】截止至2024年10月&#xff0c;被WOS数据标记的on hold 期刊&#xff0c;共计25本&#xff0c;其中已有6本解除on hold, 重回SCI,SSCI。今天小编就带大家盘点这些“出狱”期刊情况&#xff0c;分析一下这些期刊是否还能投&#xff0c;值得投&#xff1f; 01In…

Linux下GCC编译器的安装

Linux下GCC编译器的安装 以下所有的版本都可以在https://gcc.gnu.org/pub/gcc/infrastructure/这里找最新的 通过apt-get方式下载的Qt5.9的gcc编译器版本只是4.8.3&#xff0c;无法打开一些Qt5的库头文件&#xff0c;所以准备在Llinux下再安装一个gcc5.3.0。 查看gcc版本 ubu…

【Linux】

软件包管理器 yum yum类似应用商店客户端&#xff0c;有人已经把软件写好放在服务器上了&#xff0c;通过yum找到服务器上的软件下载 软件操作 yum list 可以显示所有可下载软件&#xff0c;我们要找lrzsz软件 yum install 下载 yum remove 卸载 yum源 yum下载软件是通过…

【论文复现】基于图卷积网络的轻量化推荐模型

本文所涉及所有资源均在这里可获取。 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐、摄影的一位博主。 &#x1f4d7;本文收录于论文复现系列&#xff0c;大家有兴趣的可以看一看…

天命人开店日记之门店经营调研(下)

在调研前拟定了一些想要去了解的信息&#xff0c;包括&#xff1a;月销量、净利润、用户购买的主要担忧、与电商平台的竞争差异等关键内容&#xff0c;然而当自己去实地考察线下门店时&#xff0c;确发现实际情况与自己的预期相差非常大。大大出乎预料的包括三方面&#xff1a;…

桑基图在医学数据分析中的更复杂应用示例

桑基图&#xff08;Sankey Diagram&#xff09;能够有效地展示复杂的流动关系&#xff0c;特别适合用于医学数据分析中的多种转归和治疗路径的可视化。接下来&#xff0c;我们将构建一个稍微复杂的示例&#xff0c;展示不同疾病患者在治疗过程中的流动&#xff0c;以及他们的治…