前端面试题大合集3----网络篇

一、Http协议详解,http请求方式,http状态码
  • Http协议详解:

全称Hyper Text Transfer Protocol,即超文本传输协议,是互联网上应用最为广泛的一种网络传输协议。

是一个无状态的应用层协议,即不会保存客户端与服务器之间的历史记录,每个请求都是独立的。其主要特点如下:

  1. 基于请求响应模式
  2. 基于文本传输
  3. 支持多媒体传输
  4. 无连接
  • http请求方式:

get、post,常用的

  • http状态码:

1xx(信息性状态码):表示请求已经被接收,继续处理。

2xx(成功状态码):表示请求已经被成功接收、理解和处理。

3xx(重定向状态码):表示需要进行额外操作才能完成请求。

4xx(客户端错误状态码):表示客户端发送的请求有误,服务器无法处理。

5xx(服务器错误状态码):表示服务器在处理请求时发生了错误。

常用的状态码:

200,OK,表示请求成功;

400,Bad Request,表示客户端发送的请求有语法错误;

401,Unauthorized,表示请求需要用户进行身份验证;

403,Forbidden,表示服务器拒绝请求,没有权限访问;

404,Not Found,表示请求的资源不存在;

500,Internal Server Error,表示服务器内部错误;

502,Bad Gateway,表示服务器作为网关或代理,从上游服务器接收到无效的响应;

503,Service Unavailable,表示服务器当前无法处理请求,一般是由于过载或者维护导致;

其他常用状态码:

100,Continue,表示服务器已经接收到请求的头部,并且客户端应该继续发送请求的主体部分;

101,Switching Protocols,表示服务器已经理解了客户端的请求,并且将切换到不用的协议来完成请求;

201,Created,表示请求已成功,并且服务器创建了新的资源;

202,Accepted,表示服务器已接受请求,单尚未处理完成;

204,No Content,表示请求已成功,但服务器没有返回任何内容;

301,Moved Permanently,表示请求的资源已临时移动到新的URL;

302,Found,表示请求的资源已临时移动到新的URL;

304,Not Modified,表示请求的资源未被修改,可以直接使用缓存的版本;


二、Http常见请求方式
  • GET 方法,请求一个指定资源的表示形式. 使用GET的请求应该只被用于获取数据;
  • POST 方法,用于将实体提交到指定的资源,通常导致状态或服务器上的副作用的更改;
  • HEAD 方法,请求一个与GET请求的响应相同的响应,只返回请求头,没有响应体,多数由 JavaScript 发起;
  • PUT 方法,用请求有效载荷替换目标资源的所有当前表示;
  • DELETE 方法,删除指定的资源;
  • CONNECT 方法,建立一个到由目标资源标识的服务器的隧道,多用于 HTTPS 和 WebSocket ;
  • OPTIONS 方法,预检,用于描述目标资源的通信选项。通过该请求来知道服务端是否允许跨域请求;
  • TRACE 方法,沿着到目标资源的路径执行一个消息环回测试,多数线上服务都不支持;
  • PATCH 方法,用于对资源应用部分修改。

三、Http协议与TCP协议的区别和联系
  • OSI网络分层(7层)

全称Open System Interconnection 开放系统互联

TCP、UDP都是传输层协议;

  • TCP建立连接需三次握手,断开连接需四次挥手

建立连接三次握手如下图:

断开连接四次挥手如下图:

  • Http

http是建立在TCP上的应用层协议,超文本传输协议。

http最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

特点:

  • 无状态:协议对客户端没有状态存储,对事物处理没有记忆能力,比如访问一下哎完整需要返回进行登录操作;
  • 无连接:Http/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。
  • 基于请求和响应:由客户端发起请求,服务端响应;
  • 简单快速、灵活;
  • 通信使用明文,请求和响应不会对通信方进行确认、无法保护数据的完整性。
  • Http与TCP区别
  1. Http对应于应用层,TCP协议对应于传输层;
  2. Http协议是在TCP协议之上建立的,HTTP在发起请求时通过TCP协议建立起连接服务器的通道,请求结束后,立即断开TCP连接;
  3. Http是无状态的短连接,TCP是有状态的长连接;
  4. TCP是传输层协议,定义的是数据传输和连接方式的规范,HTTP是应用层协议,定义的是传输数据的内容的规范。

四、Http发展历史

http1.0 :客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接;

http1.1 :可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后就可以再发送一个新的请求;

http2.0 :支持多路复用,一个 TCP 可同时传输多个 http 请求,头部数据还做了压缩;

http3.0 :使用了 QUIC,开启多个 TCP 连接,在出现丢包的情况下,只有丢包的 TCP 等待重传,剩余的 TCP 连接还可以正常传输数据;

五、Http/2对比Http/1.1,特性是什么?是如何解决对头阻塞与压缩头部的?

Http/1.1是1997年发布。为了性能考虑,会引入雪碧图,将小图内联,使用多个域名等方式,但是还是有以下的关键点无法优化;

  • Http/1.1协议的性能缺陷:
  1. 高延迟:页面访问速度下降

  2. 明文传输:不安全

  3. 无状态:头部巨大切重复

  4. 不支持服务器推送

Http/2是2015年发布。有如下特点:

  • Http/2特点:
  1. 二进制传输

  2. Header 压缩(HPACK)

  3. 多路复用

  4. 服务端 Push

  5. 提高安全性

  • Http/2遗留问题:
  1. 存在队头阻塞问题,比如丢包

  2. 慢启动,建立连接时间长

六、说一下Http/3新特性,为什么选择UDP协议?

Http3是超文本传输协议的最新主要版本,其显著特点是放弃了传统的TCP协议作为传输层协议,转而采用基于UDP的QUIC协议,以下是其关键特性:

  1. 低延迟
  2. 多路复用
  3. 连接迁移
  4. 更快的错误恢复
  5. 安全设计
  6. 拥塞控制优化

为什么选择UDP协议?

说白了,其实是为了解决Http/1和Http/2在性能和效率上的问题。

引入UDP主要原因有两个:一是为了提高性能,二是为了实现更好的网络适应性。

在Http/3之前,Http传输协议使用的是TCP作为传输层协议。然后随着互联网的发展,TCP的性能瓶颈逐渐显现出来;TCP的性能瓶颈主要在于其握手过程和重传机制,而UDP的底层协议,就是大名鼎鼎的QUIC协议,一个运行在传输层的协议。QUIC通过改进这些机制,实现了更高的性能。此外,UDP在网络适应性上也有优势,因为他可以更好的处理网络波动和丢包问题。

QUIC协议之所以能提供更好的性能,其中一个重要的原因就是它实现了快速握手和连接迁移。

  • 快速握手

在TCP中,建立连接需要三次握手;相比之下QUIC协议中需要一次握手就可以建立连接。

在QUIC中,客户端发送一个包含客户端初始信息的包给服务器,服务器收到后,会立即回复一个包含服务器初始信息的包。这样,QUIC连接就建立成功了。

  • 连接迁移

在TCP中,如果客户端想要从一个服务器切换到另一个服务器,就需要先断开原来的连接,然后再重新建立一个新的连接。这个过程被称为“连接迁移”。

在QUIC中,客户端可以无缝的从一个服务器切换到另一个服务器,而不需要断开原来的连接。这个过程被称为“连接迁移”。QUIC的连接迁移是通过在客户端和服务器之间维护一个全局的状态来实现的。当客户端想要切换到另一个服务器时,它会向新的服务器发送一个包含当前连接状态信息的包,新的服务器收到后,就可以立即开始处理客户端的请求。

七、有关HTTP缓存的首部字段说一下

常见的HTTP缓存首部字段有:

  • Expires:响应头,代表该资源的过期时间

  • Cache-Control:请求/响应头,缓存控制字段,精确控制缓存策略

  • If-Modified-Since:请求头,资源最近修改时间,由浏览器告诉服务器

  • Last-Modified:响应头,资源最近修改时间,由服务器告诉浏览器

  • Etag:响应头,资源标识,由服务器告诉浏览器

  • If-None-Match:请求头,缓存资源标识,由浏览器告诉服务器

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【管理咨询宝藏92】国际咨询公司为大型药企数字化转型项目规划方案

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏92】国际咨询公司为大型药企数字化转型项目规划方案 【格式】PDF版本 【关键词】国际咨询公司、药企转型、数字化转型 【核心观点】 - 企业业务…

51-48 CVPR 2024 | Vlogger: make your dream a vlog 自编剧制作视频博客

24年1月,上海交大、上海人工智能实验室、中科院联合发布Vlogger:make your dream a vlog。该论文主要工作是生成超过5分钟的视频博客vlog。鉴于现有文本到视频T2V生成方法很难处理复杂的故事情节和多样化的场景,本文提出了一个名为Vlogger的通…

百度文库最新AI旋转验证码

上个月发现百度文库最新出了一个验证码,是AI生成的。内容每次可能都不一样,所以给识别造成 了很大困难。传统的比对放松完全失效。 一、介绍 这个是最近才出的最新验证码,内容主要以工厂、建筑、山峰、机器人、汽车、盆栽植物等为主。如下图…

Elasticsearch:如何使用 Java 对索引进行 ES|QL 的查询

在我之前的文章 “Elasticsearch:对 Java 对象的 ES|QL 查询”,我详细介绍了如何使用 Java 来对 ES|QL 进行查询。对于不是很熟悉 Elasticsearch 的开发者来说,那篇文章里的例子还是不能单独来进行运行。在今天的这篇文章中,我来详…

【DPU系列之】Bluefield 2 DPU卡的功能图,ConnectX网卡、ARM OS、Host OS的关系?(通过PCIe Switch连接)

核心要点: CX系列网卡与ARM中间有一个PCIe Swtich的硬件单元链接。 简要记录。 可以看到图中两个灰色框,上端是Host主机,下端是BlueField DPU卡。图中是BF2的图,是BF2用的是DDR4。DPU上的Connect系列网卡以及ARM系统之间有一个…

第一课为SimaPro的基本特征

问题: 咖啡机的设计中的环境影响指标。 step 1 点击Wizards,看到“Guided tour (with coffee)”。 在这个例子里, 定义了两种咖啡机: Sima型咖啡机 和 Pro型咖啡机, 具有以下规格: Sima型咖啡机 Pro型咖啡…

MySQL——Windows平台下MySQL安装与配置(一)MySQL安装

Windows平台下安装和配置 基于Windows平台的MySQL安装文件有两个版本,一种是以.msi作为后缀名的二进制分发版,一种是以.zip作为后缀的压缩文件。其中.msi的安装文件提供了图形化的安装向导,按照向导提示进行操作即可安装完成,.zip…

7-92 骨牌铺方格

在2n的一个长方形方格中,用一个12的骨牌铺满方格,输入n,输出铺放方案的总数。例如n3时,骨牌的铺放方案有3种,如下图所示。 输入格式: 测试数据有多组,处理到文件尾。每组测试输入一个整数n(0&l…

【华为】AC直连二层组网隧道转发实验配置

【华为】AC直连二层组网隧道转发实验配置 实验需求拓扑配置AC数据规划表 AC的配置顺序AC1基本配置(二层通信)AP上线VAP组关联--WLAN业务流量 LSW1AR1STA获取AP的业务流量 配置文档 实验需求 AC组网方式:直连二层组网。 业务数据转发方式:隧道转发。 DHC…

[JUCE]从一个有关右值引用的bug,探幽移动语义

一、问题 当我尝试在\JUCE\extras\WindowsDLL\Builds\VisualStudio2022目录下编译JUCE库的时候,提示报错如下: 报错提示如下: 这里涉及到两个问题 一、这个std::move是干嘛用的 二、为什么这里会报错? 另外,我在实…

Mybatis进阶2

Mybatis进阶1-CSDN博客 Mybatis入门-CSDN博客 Mybatis入门2-CSDN博客 我们接下来要学习Mybatis的高级查询 我们先在数据库中准备我们需要的数据表 teacher表 课程表:与教师表是一对多的关系,所以有一个外键字段 学生表 由于学生表和课程表是多对多的…

Android selinux权限

一.SE 概述 SELinux 是由美国NSA(国安局)和 SCC 开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以 GNU GPL 发布。从 fedora core 2开始, 2.6内核的版本都支持SELinux。 在 SELinux 出现之前&#…

智慧公厕打造公共厕所智慧化管理模式

智慧公厕如何打造智慧化的管理模式?随着智能科技的快速发展,智慧公厕成为了城市管理的一项重要工作。智慧公厕的智能化管理不仅可以提升公厕的整体管理水平,还能为市民提供更加便捷、舒适的使用体验。本文将以智慧公厕源头实力厂家广州中期科…

Qt QImageWriter类介绍

1.简介 QImageWriter 用于写入图像文件的类。它提供了将 QImage 对象保存到不同图像格式文件的功能,包括但不限于 PNG、JPEG、BMP 等。QImageWriter 可以将图像写入文件,也可以写入任何 QIODevice,如 QByteArray,这使得它非常灵活…

CGAL 网格简化

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 为了提高网格处理的效率,通常需要将过于冗长的3D数据集简化为更简洁而又真实的表示。尽管从几何压缩到逆向工程有许多应用,但简洁地捕捉表面的几何形状仍然是一项乏味的任务。CGAL中则为我们提供了一种通过变分几…

MSYS2 Pacman常用命令--以及实际中安装linux命令

MSYS2 Pacman常用命令--以及实际中安装linux命令: 有时候需要使用linux下的命令,用这个工具就是可以实现内容 虽然现在在windows下的wsl命令以及可以很好的使用linux了,但是MSYS2也是个不错的工具: 如何下载linux下nc&#xff0c…

Nodejs-内存控制(垃圾回收机制)(新生代老生代)(Scavenge算法)

内存控制 v8的垃圾回收机制和内存限制 对于性能敏感的服务器端程序,内存管理的好坏,垃圾回收状态的优良成都,都会对服务器造成影响 Node和V8 Node在JavaScript的执行上受益于v8,随着v8的升级享受到更好的性能和性的语言特征。…

详解基于 RAG 的 txt2sql 全过程

前文 本文使用通义千问大模型和 ChromaDB 向量数据库来实现一个完整的 text2sql 的项目,并基于实际的业务进行效果的展示。 准备 在进行项目之前需要准备下面主要的内容: python 环境通义千问 qwen-max 模型的 api-keyChromaDB 向量数据库acge_text_…

一款 NodeJS 版本管理工具 NVM (Windows)

一、简介 Node Version Manager(NVM)是一种用于管理多个 NodeJS 版本的工具。在日常工作中,我们可能同时在进行多个不同的项目开发,每个项目的需求不同,依赖与不同版本的NodeJS 运行环境。这种情况下,维护…

数据处理学习笔记9

一些其他的函数 “Resize”和“Reshape”的区别主要在于它们对数组元素数量和形状的处理方式不同,以下是详细介绍: “Resize”通常会改变数组的元素数量,在放大数组形状时会用0补全新增的元素,而在缩小数组形状时会丢弃多余的元素…