《对线面试官》| 高频计算机网络面试题 pt.2

news2025/4/13 0:50:31

目录

    • 11、Get与POST的区别
    • 12、Session、Cookie 的区别
    • 13、简单聊聊 HTTP 协议吧
    • 14、URI 和 URL 的区别
    • 15、GET 和 POST 方法都是安全和幂等的吗?
    • 16、说说 HTTP/1.1 相比 HTTP/1.0 提高了什么性能?
    • 17、那上面的 HTTP/1.1 的性能瓶颈,HTTP/2 做了什么优化?
    • 18、说说 TCP 三次握手和四次挥手吧
    • 19、简单聊聊HTTP 工作原理
    • 20、什么是无状态协议,HTTP 是无状态协议吗,怎么解决无状态带来的问题

在面试中,计算机网络是面试官最喜欢考察的内容之一

下面是我整理的一些高频计算机网络常问面试题,只要掌握了,分分钟拿捏面试官

pt.1 链接在这:《对线面试官》| 高频计算机网络面试题

11、Get与POST的区别

  • GET 一般用来从服务器上获取资源,POST 一般用来创建资源
  • GET 是幂等的,即读取同一个资源,总是得到相同的数据,而 POST 不是幂等的。GET 不会改变服务器上的资源,而 POST 会对服务器资源进行改变
  • 请求参数形式上看,GET 请求的数据会附在 URL 之后,以 ”?“分割 URL 和传输数据,参数之间以 ”&“ 连接;而 POST 请求会把提交的数据则放置在是HTTP请求报文的 body 中
  • POST 的安全性要比 GET 的安全性高,因为 GET 请求提交的数据将明文出现在 URL 上,而 POST 请求参数则被包装到请求体中,相对更安全
  • GET 请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的

12、Session、Cookie 的区别

  • session 在服务器端,cookie 在客户端(浏览器)
  • session 默认被存储在服务器的一个文件里(不是内存)
  • session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
  • session 可以放在文件、数据库、或内存中都可以

13、简单聊聊 HTTP 协议吧

HTTP 是一种超文本传输协议 (Hypertext Transfer Protocol),主要内容分为三部分,超文本(Hypertext)、传输(Transfer)、协议(Protocol)

超文本指的是HTML,css,JavaScript和图片等,HTTP的出现是为了接收和发布HTML页面,经过不断的发展也可以用于接收一些音频,视频,文件等内容

HTTP协议是用于客户端和服务器端之间的通信,用于客户端和服务器端之间的通信有HTTP协议和TCP/IP协议族在内的其他众多的协议。

请求访问文本或图片等资源的一方,我们叫做客户端;负责接收,提供响应的一方称为服务器端

14、URI 和 URL 的区别

  • URI

统一资源标识符(uniform resource identifier)用来唯一标识一个资源

  • URL

统一资源定位符(uniform resource locator)

在这里插入图片描述

15、GET 和 POST 方法都是安全和幂等的吗?

先说明下安全和幂等的概念:

  • 在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。
  • 所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的

那么很明显 GET 方法就是安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的

POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等

16、说说 HTTP/1.1 相比 HTTP/1.0 提高了什么性能?

HTTP/1.1 相比 HTTP/1.0 性能上的改进:

  • 使用 TCP 长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。
  • 支持 管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间

但 HTTP/1.1 还是有性能瓶颈:

  • 请求 / 响应头部(Header)未经压缩就发送,首部信息越多延迟越大。只能压缩 Body 的部分;
  • 发送冗长的首部。每次互相发送相同的首部造成的浪费较多;
  • 服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端一直请求不到数据,也就是队头阻塞;
  • 没有请求优先级控制;
  • 请求只能从客户端开始,服务器只能被动响应

17、那上面的 HTTP/1.1 的性能瓶颈,HTTP/2 做了什么优化?

HTTP/2 协议是基于 HTTPS 的,所以 HTTP/2 的安全性也是有保障的

HTTP/2 相比 HTTP/1.1 性能上的改进:

  • 头部压缩

HTTP/2 会压缩头(Header)如果你同时发出多个请求,他们的头是一样的或是相似的,那么,协议会帮你消除重复部分

这就是所谓的 HPACK 算法:在客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度

  • 二进制格式

HTTP/2 不再像 HTTP/1.1 里的纯文本形式的报文,而是全面采用了二进制格式

头信息和数据体都是二进制,并且统称为帧(frame):头信息帧和数据帧

在这里插入图片描述
这样虽然对人不友好,但是对计算机非常友好,因为计算机只懂二进制,那么收到报文后,无需再将明文的报文转成二进制,而是直接解析二进制报文,这增加了数据传输的效率

  • 数据流

HTTP/2 的数据包不是按顺序发送的,同一个连接里面连续的数据包,可能属于不同的回应。因此,必须要对数据包做标记,指出它属于哪个回应

每个请求或回应的所有数据包,称为一个数据流(Stream)

每个数据流都标记着一个独一无二的编号,其中规定客户端发出的数据流编号为奇数, 服务器发出的数据流编号为偶数

客户端还可以指定数据流的优先级。优先级高的请求,服务器就先响应该请求

在这里插入图片描述

  • 多路复用

HTTP/2 是可以在一个连接中并发多个请求或回应,而不用按照顺序一一对应

移除了 HTTP/1.1 中的串行请求,不需要排队等待,也就不会再出现「队头阻塞」问题,降低了延迟,大幅度提高了连接的利用率

举例来说,在一个 TCP 连接里,服务器收到了客户端 A 和 B 的两个请求,如果发现 A 处理过程非常耗时,于是就回应 A 请求已经处理好的部分,接着回应 B 请求,完成后,再回应 A 请求剩下的部分

  • 服务器推送

HTTP/2 还在一定程度上改善了传统的「请求 - 应答」工作模式,服务不再是被动地响应,也可以主动向客户端发送消息

举例来说,在浏览器刚请求 HTML 的时候,就提前把可能会用到的 JS、CSS 文件等静态资源主动发给客户端,减少延时的等待,也就是服务器推送(Server Push,也叫 Cache Push)

18、说说 TCP 三次握手和四次挥手吧

TCP 三次握手和四次挥手也是面试题的热门考点,它们分别对应 TCP 的连接和释放过程

下面就来简单认识一下这两个过程,在了解具体的流程前,我们需要先认识几个概念

消息类型描述
SYN初始化和建立连接
ACK帮助对方确认收到的 SYN 消息
SYN-ACK本地的 SYN 消息和较早的 ACK 数据包
FIN断开连接
  • SYN:它的全称是 Synchronize Sequence Numbers,同步序列编号。是 TCP/IP 建立连接时使用的握手信号。在客户机和服务器之间建立 TCP 连接时,首先会发送的一个信号。客户端在接收到 SYN 消息时,就会在自己的段内生成一个随机值 X。
  • SYN-ACK:服务器收到 SYN 后,打开客户端连接,发送一个 SYN-ACK 作为答复。确认号设置为比接收到的序列号多一个,即 X + 1,服务器为数据包选择的序列号是另一个随机数 Y。
  • ACK:Acknowledge character, 确认字符,表示发来的数据已确认接收无误。最后,客户端将 ACK 发送给服务器。序列号被设置为所接收的确认值即 Y + 1

TCP三次握手

在这里插入图片描述

  • 第一次握手:客户端发送一个SYN包给服务端,然后进入到SYN_SENT状态
  • 第二次握手:处在监听状态的服务端收到客户端的SYN包后进行回应:发送一个ACK包给客户端,同时发送一个SYN包给客户端,然后进入到SYN_RCVD状态
  • 第三次握手:客户端在收到服务端的SYN包后发送一个ACK包进行确认,然后进入到
    ESTABLISHED(连接成功状态)。服务端在收到ACK包后也进入ESTABLISHED(连接成功状态)

TCP四次挥手
在这里插入图片描述

  • 第一次挥手:客户端先发送一个 FIN 包给服务端,然后进入到 FIN_WAIT1(终止等待1)状态
  • 第二次挥手:服务端收到 FIN 包之后对其进行回应:发送一个 ACK 包给客户端,然后进入到 close_wait(关闭等待)状态。这时候服务端处于半关闭状态。
  • 第三次挥手:同时服务端也请求关闭连接,发送一个 FIN 包给客户端,然后进入
    LAST_ACK(最后确认)状态
  • 第四次挥手:客户端在收到服务端发送的ACK包之后进入到 FIN_WAIT2(终止等待2)状态,对服务端发来的 FIN 包进行回应:发送一个 ACK包 给服务端,然后进入到TIME_WAIT(时间等待)状态,等待 2MSL(最长报文段寿命)后进入关闭状态,服务端在收到客户端发来的 ACK 包之后立即进入关闭状态

19、简单聊聊HTTP 工作原理

  • 客户端与 web 服务器建立连接(TCP 三次握手)
  • 客户端发送 HTTP 请求
  • 服务端接收请求并返回 HTTP 响应
  • 释放 TCP 连接
  • 客户端浏览器解析 HTML 内容

20、什么是无状态协议,HTTP 是无状态协议吗,怎么解决无状态带来的问题

无状态协议(Stateless Protocol) 就是指浏览器对于事务的处理没有记忆能力。举个例子来说就是比如客户请求获得网页之后关闭浏览器,然后再次启动浏览器,登录该网站,但是服务器并不知道客户关闭了一次浏览器

HTTP 就是一种无状态的协议,他对用户的操作没有记忆能力。可能大多数用户不相信,他可能觉得每次输入用户名和密码登录一个网站后,下次登录就不再重新输入用户名和密码了。这其实不是 HTTP 做的事情,起作用的是一个叫做 Cookie 的机制。它能够让浏览器具有记忆能力

当你向服务端发送请求时,服务端会给你发送一个认证信息,服务器第一次接收到请求时,开辟了一块 Session 空间(创建了Session对象),同时生成一个 session id ,并通过响应头的 Set-Cookie:JSESSIONID=XXXXXXX 命令,向客户端返回要求设置 Cookie 的响应;

客户端收到响应后,在本机客户端设置了一个 JSESSIONID=XXXXXXX 的 Cookie 信息,该 Cookie 的过期时间为浏览器会话结束

在这里插入图片描述

接下来客户端每次向同一个网站发送请求时,请求头都会带上该 Cookie信息(包含 session id ),然后,服务器通过读取请求头中的 Cookie 信息,获取名称为 JSESSIONID 的值,得到此次请求的 sessionId。这样,你的浏览器才具有了记忆能力

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

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

相关文章

中国蚁剑的工作原理

中国蚁剑连接http://192.168.11.157/dvwa/hackable/uploads/pass.php蚁剑连接并同时用wireshark抓取流量1274 行,追踪tcp流因为我们的php.php内容是 $_POST[pass],所以这里是post了一个pass参数,后面跟上了命令。通过站长工具-URL解码/编码 (…

15.Isaac教程--Isaac机器人引擎简介

Isaac机器人引擎简介 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录Isaac机器人引擎简介基础Codelets完整的应用基础 本节介绍如何使用 Isaac 机器人引擎。 它介绍了相关术语并解释了 Isaac 应用程序的结构。 Isaac 应用程序由 JavaS…

卫星AIS接收机

1.设备简介星载AIS模块,专门针对小卫星设计的AIS载荷,设计时考虑到CubeSat的尺寸、重量和功率限制,也可以作为较大的LEO卫星上的有效载荷。2.产品特征独立4信道AIS接收机集成LNA和SAW滤波器AIS帧的数据存储支持频谱样本采集安全在轨软件升级支…

【Wiki】XWiki安装教程_War包版本

目录0、XWiki说明1、war包安装说明1.1、环境说明1.2、如果懒得下载可以使用这边准备好的物料包汇总2、war包安装2.1、Tomcat安装2.2、java安装(需要root权限)2.3 、使用 source /etc/profile 刷新linux配置2.4、数据库安装2.5、解压war包与xip2.6、修改配置文件2.6.1、修改WEB-…

mysql快速生成100W条测试数据(4)全球各城市房价和销售数据并存入mysql数据库

首先这个就是我们需要生成的数据类型,这种只是我们用于测试以及学习时候使用,主要就是全球城市房价的均值和一些虚拟的销售数据 这是之前的文章里面包含一些以前的一些操作流程可以进行参考学习 更加详细操作步骤在第一篇文章里面 mysql快速生成100W条测…

Speckle Revit连接器使用教程

Speckle Revit 连接器目前支持 Autodesk Revit 2020、2021、2022 和 🆕2023。 1、安装Speckle revit连接器 要安装 Revit 连接器并添加 Speckle 帐户,请按照 Speckle 管理器中的说明进行操作。 安装后,可以在Speckle选项卡下的功能区菜单中…

一个前端大神电脑里的秘密

前言作为前端仔,当你入职一家公司,拿到新发的电脑,你会对电脑干点啥,装开发环境?装软件?你是否铺天盖地到处找之前电脑备份的东西?又或者是想不起来有什么上一台电脑好用的软件叫什么名&#xf…

KT148A语音芯片420s秒的语音空间是什么意思,mp3文件支持多大

一、问题简介 我想问一下KT148A这个芯片真的能存420秒的语音么?我随便一个5秒的语音mp3格式都65k了,如果是这样的话 那我的mp3的源文件在最小的采样率和最小码率的情况下 mp3文件可以支持多大?有没有实际测试的数据,使用的是一线串…

【可解释性机器学习】可解释机器学习简介与特征选择方法

特征选择:Feature Importance、Permutation Importance、SHAP1. Introduction什么是可解释机器学习(Explainable ML)?为什么需要Explainable ML?直接使用一些可以interpretable的模型不好吗?2. Local Explanation方法…

Homekit智能家居DIY-智能吸顶灯

灯要看什么因素 照度 可以简单理解为清晰度,复杂点套公式来说照度光通量(亮度)单位面积,简单理解的话就是越靠近灯光,看的就越清楚,是个常识性问题。 不同房间户型对照度的要求自然不尽相同,…

http协议之Range

http协议中可能会遇到:请求取消或数据传输中断,这时客户端已经收到了部分数据,后面再请求时最好能请求剩余部分(断点续传);或者,对于某个较大的文件,能够支持客户端多线程分片下载..…

某集团汽车配件电子图册性能分析案例(三)

背景 汽车配件电子图册系统是某汽车集团的重要业务系统。业务部门反映,汽车配件电子图册调用图纸时,出现访问慢现象。 汽车集团总部已部署NetInside流量分析系统,使用流量分析系统提供实时和历史原始流量。本次分析重点针对汽车配件电子图册…

web服务器、中间件和他们的漏洞

目录 Nginx Apache Tomcat IIS 漏洞 Apache解析漏洞 文件名解析漏洞 罕见后缀 .htaccess文件 Ngnix解析漏洞 畸形解析漏洞(test.jpg/*.php) %00空字节代码解析漏洞 CVE-2013-4547(%20%00) IIS解析漏洞 目录解析漏洞(/test.asp/1.jpg) 文件名解析漏洞(test.asp;…

想转行没方向,PMP证书用处大吗?

当下了要转行的决心,你又陷入另一种焦虑中——怎么转?毕竟“隔行如隔山”。要知道缺乏经验,你要面对的是旷日持久的努力、未知的付出和回报转换率。 但别忘了,在山与山之间,有一些纵横交错的道路相连,可以…

详解SpringMVC

1.DispatcherServlet初始化时机 DispatcherServlet是由spring创建的,初始化是由Tomcat完成的,通过setLoadOnStartup来决定是否为tomcat启动时初始化 Configuration ComponentScan // 没有设置扫描包的话默认扫描当前配置的包及其子包 PropertySource(&…

verilog学习笔记- 11)按键控制蜂鸣器实验

简介: 蜂鸣器按照驱动方式主要分为有源蜂鸣器和无源蜂鸣器,其主要区别为蜂鸣器内部是否含有震荡源。一般的有源蜂鸣器内部自带了震荡源,只要通电就会发声。而无源蜂鸣器由于不含内部震荡源,需要外接震荡信号才能发声。 左边为有源…

JAVA JVM学习

1.JVM介绍 越界检查肯定有用,防止覆盖别的地方的代码。 JVM来评价java在底层操作系统的差异。 2.程序计数器 我们java源代码会变成一条一条jvm指令。 在物理上实现程序计数器,是用一个寄存器。这样速度更快。 程序计数器不会内存溢出 2.1 线程私有 …

clickhouse整合ldap,无需重启

测试你的ladp服务ldapsearch -x-bdcexample,dccom -H ldap://ldap.forumsys.com应该输出类似以下的内容# extended LDIF # # LDAPv3 # base <dcexample,dccom> with scope subtree # filter: (objectclass*) # requesting: ALL # ​ # example.com dn: dcexample,dccom o…

【Premake】构建工程

Premake 一、什么是Premake&#xff1f; Premake 是一种命令工具&#xff0c;通过读取项目脚本&#xff0c;来生成各种开发环境的项目文件。 开源地址&#xff1a;https://github.com/premake/premake-core 下载地址&#xff1a;https://premake.github.io 实例地址&#xf…

揭秘HTTP/3优先级

编者按 / 相对于HTTP2&#xff0c;HTTP/3的优先级更加简单&#xff0c;浏览器厂商更可能实现统一的优先级策略。本文来自老朋友Robin Marx&#xff0c;已获授权转载&#xff0c;感谢刘连响对本文的技术审校。翻译 / 核子可乐技术审校 / 刘连响原文链接 / https://calendar.per…