计算机网络面试基础(一)

文章目录

  • 一、HTTP基本概念
    • 1.HTTP是什么?
    • 2.HTTP 常见的状态码有哪些?
    • 3.http常见字段
  • 二、GET和POST
    • 1.get和post有什么区别
  • 三、HTTP缓存技术
    • 1.HTTP 缓存有哪些实现方式?
    • 2.什么是强制缓存?
    • 3.什么是协商缓存?(不太懂)
  • 四、HTTP特性
    • 1.HTTP/1.1 的优点有哪些?
    • 2.HTTP/1.1 的缺点有哪些?
    • 3.HTTP/1.1 的性能如何?
  • 五、HTTP与HTTPS
    • 1.HTTP 与 HTTPS 有哪些区别?
    • 2.HTTPS 解决了 HTTP 的哪些问题?
  • 六、HTTP/1.1、HTTP/2、HTTP/3 演变
    • 1.HTTP/1.1 相比 HTTP/1.0 提高了什么性能?
    • 2 HTTP/2 做了什么优化?
    • 3.HTTP/3 做了哪些优化?

一、HTTP基本概念

1.HTTP是什么?

HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。

2.HTTP 常见的状态码有哪些?

在这里插入图片描述

3.http常见字段

  • Host字段:客户端发送请求时,用来指定服务器的域名。

  • Content-Length字段:服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据长度。

  • Connecton字段:最常用于客户端要求服务器使用「HTTP 长连接」机制,以便其他请求复用。
    HTTP 长连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。
    HTTP/1.1 版本的默认连接都是长连接,但为了兼容老版本的 HTTP,需要指定 Connection 首部字段的值为 Keep-Alive。

  • Content-Type 字段:用于服务器回应时,告诉客户端,本次数据是什么格式。

  • Content-Encoding 字段:数据的压缩方法。表示服务器返回的数据使用了什么压缩格式。

二、GET和POST

1.get和post有什么区别

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

GET 的语义是从服务器获取指定的资源,GET 方法是安全、幂等、可被缓存的,GET 请求的参数位置一般是写在 URL 中,浏览器会对 URL 的长度有限制(HTTP协议本身对 URL长度并没有做任何规定)。
POST 的语义是根据请求负荷(报文body)对指定的资源做出处理,POST 不安全,不幂等,(大部分实现)不可缓存。POST 请求携带数据的位置一般是写在报文 body 中,览器不会对 body 大小做限制。

三、HTTP缓存技术

1.HTTP 缓存有哪些实现方式?

对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求-响应」的数据都缓存在本地,下次就直接读取本地的数据,不必在通过网络获取服务器的响应了。
HTTP 缓存有两种实现方式,分别是强制缓存和协商缓存。

2.什么是强制缓存?

强缓存指的是只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边。
在这里插入图片描述

图中,返回的是 200 状态码,但在 size 项中标识的是 from disk cache,就是使用了强制缓存。

强缓存是利用下面这两个 HTTP 响应头部(Response Header)字段实现的,它们都用来表示资源在客户端缓存的有效期:

  • Cache-Control, 是一个相对时间;
  • Expires,是一个绝对时间;

Cache-control 选项更多一些,设置更加精细,所以建议使用 Cache-Control 来实现强缓存。具体的实现流程如下:

  • 当浏览器第一次请求访问服务器资源时,服务器会在返回这个资源的同时,在 Response 头部加上Cache-Control,Cache-Control 中设置了过期时间大小;
  • 浏览器再次请求访问服务器中的该资源时,会先通过请求资源的时间与 Cache-Control中设置的过期时间大小,来计算出该资源是否过期,如果没有,则使用该缓存,否则重新请求服务器;
  • 服务器再次收到请求后,会再次更新 Response 头部的 Cache-Control。

3.什么是协商缓存?(不太懂)

当我们在浏览器使用开发者工具的时候,你可能会看到过某些请求的响应码是 304,这个是告诉浏览器可以使用本地缓存的资源,通常这种通过服务端告知客户端是否可以使用缓存的方式被称为协商缓存。

四、HTTP特性

1.HTTP/1.1 的优点有哪些?

HTTP 最突出的优点是「简单、灵活和易于扩展、应用广泛和跨平台」。

2.HTTP/1.1 的缺点有哪些?

HTTP 协议里有优缺点一体的双刃剑,分别是「无状态、明文传输」,同时还有一大缺点「不安全」。

3.HTTP/1.1 的性能如何?

HTTP 协议是基于 TCP/IP,并且使用了「请求 - 应答」的通信模式,所以性能的关键就在这两点里。

五、HTTP与HTTPS

1.HTTP 与 HTTPS 有哪些区别?

  • HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
  • HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
  • 两者的默认端口不一样,HTTP 默认端口号是 80,HTTPS 默认端口号是 443。
  • HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

2.HTTPS 解决了 HTTP 的哪些问题?

HTTP存在风险:

  • 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
  • 篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。
  • 冒充风险,比如冒充淘宝网站,用户钱容易没。

在这里插入图片描述

  • 信息加密:交互信息无法被窃取,但你的号会因为「自身忘记」账号而没。
  • 校验机制:无法篡改通信内容,篡改了就不能正常显示,但百度「竞价排名」依然可以搜索垃圾广告。
  • 身份证书:证明淘宝是真的淘宝网,但你的钱还是会因为「剁手」而没。

如何解决以上三个风险?

  • 混合加密的方式实现信息的机密性,解决了窃听的风险。
  • 摘要算法的方式来实现完整性,它能够为数据生成独一无二的「指纹」,指纹用于校验数据的完整性,解决了篡改的风险。
  • 将服务器公钥放入到数字证书中,解决了冒充的风险。

1.混合加密
通过混合加密的方式可以保证信息的机密性,解决了窃听的风险。
在这里插入图片描述
HTTPS 采用的是对称加密和非对称加密结合的「混合加密」方式:

  • 通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。
  • 通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。

采用「混合加密」的方式的原因:

  • 对称加密只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交换。
  • 非对称加密使用两个密钥公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢。

2. 摘要算法(哈希函数) + 数字签名:通过哈希函数计算比较,判断收到的内容是否被篡改。

3. 数字证书 : 确保公钥真实可靠
可以通过哈希算法来保证消息的完整性;
可以通过数字签名来保证消息的来源可靠性(能确认消息是由持有私钥的一方发送的)

六、HTTP/1.1、HTTP/2、HTTP/3 演变

1.HTTP/1.1 相比 HTTP/1.0 提高了什么性能?

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

2 HTTP/2 做了什么优化?

在这里插入图片描述
HTTP/2 相比 HTTP/1.1 性能上的改进

  • 头部压缩:发请求的时候如果头是一样的,协议会消除重复的部分。在客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。

  • 二进制格式:HTTP/2 不再像 HTTP/1.1 里的纯文本形式的报文,而是全面采用了二进制格式,头信息和数据体都是二进制,并且统称为帧(frame):头信息帧(Headers Frame)和数据帧(Data Frame)。增加了数据传输的效率

  • 并发传输:HTTP/1.1 在发送请求的时候,必须要等响应以后才能继续发请求,容易造成队头堵塞的问题。HTTP/2实现了多路复用,在一个连接中,客户端和服务器都可以同时发送多个请求和回应。

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

3.HTTP/3 做了哪些优化?

  • HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP!
  • UDP 发送是不管顺序,也不管丢包的,所以不会出现像 HTTP/2 队头阻塞的问题。大家都知道 UDP 是不可靠传输的,但基于 UDP 的 QUIC 协议 可以实现类似 TCP 的可靠性传输。

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

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

相关文章

分治算法例子

分治算法概述 分治算法是一种将问题分解为更小的子问题来解决,然后将这些子问题的解合并起来得到原问题的解的算法。这些示例展示了分治算法如何将问题分解为更小的子问题,通过递归和合并来解决复杂问题。以下是两个常见的分治算法示例及其Python实现: 快速排序 (Quick So…

长文预警:九头蛇的进化——Tesla AutoPilot 纯视觉方案解析

九头蛇的进化:Tesla AutoPilot 纯视觉方案解析 前言 本文整理自原文链接,写的非常好,给了博主很多启发,投原创是因为平台机制,希望能被更多人看到。 嘿嘿,漫威粉不要打我←_←不是Hail Hydra&#xff0c…

分享:各种原理测厚仪的发展历程!

板材厚度的检测离不开测厚仪的应用,目前激光测厚仪、射线测厚仪、超声波测厚仪等都已被广泛的应用于板材生产线中,那你了解他们各自的发展历程吗? 激光测厚仪的发展: 激光测厚仪是随着激光技术和CCD(电荷耦合器件&…

swaggerHole:针对swaggerHub的公共API安全扫描工具

关于swaggerHole swaggerHole是一款针对swaggerHub的API安全扫描工具,该工具基于纯Python 3开发,可以帮助广大研究人员检索swaggerHub上公共API的相关敏感信息,整个任务过程均以自动化形式实现,且具备多线程特性和管道模式。 工具…

网络安全实验BUAA-全套实验报告打包

下面是部分BUAA网络安全实验✅的实验内容 : 认识路由器、交换机。掌握路由器配置的基本指令。掌握正确配置路由器的方法,使网络正常工作。 本博客包括网络安全课程所有的实验报告:内容详细,一次下载打包 实验1-路由器配置实验2-AP…

快速搭建高效运营体系,Xinstall App下载自动绑定助您一臂之力

在互联网的浪潮中,App的推广与运营面临着诸多挑战。如何在多变的互联网环境下迅速搭建起能时刻满足用户需求的运营体系,成为了众多企业关注的焦点。今天,我们就来聊聊如何通过Xinstall的App下载自动绑定功能,轻松解决App推广与运营…

PXE、无人值守实验

PXE部署 [roottest2 ~]# systemctl stop firewalld [roottest2 ~]# setenforce 0一、部署tftp服务 [roottest2 ~]# yum -y install tftp-server.x86_64 xinetd.x86_64 [roottest2 ~]# systemctl start tftp [roottest2 ~]# systemctl enable tftp [roottest2 ~]# systemctl …

因为宇宙一片漆黑,所以地球才有昼夜之分,宇宙为什么是黑的?

因为宇宙一片漆黑,所以地球才有昼夜之分,宇宙为什么是黑的? 地球为何会有昼夜之分? 乍一看,这个问题很是简单,当然是因为地球一直在自转了,当地球的一部分被太阳照射时就是白昼,而…

UI框架与MVC模式详解(1)——逻辑与数据分离

【效率最高的耦合方式】 以实际的例子来说明,更容易理解些。 这里从上到下,从左到右共有8个显示项,如果只需要显示这8个,不会做任何改变,数据固定,那么我们只需要最常规的思路去写就好,这是最…

【JSP】如何在IDEA上部署JSP WEB开发项目

以我的课设为例,教大家拿到他人的项目后,如何在IDEA上部署。 需要准备: JDK17(或者JDK13)IntelliJ IDEA 2023.2.6MySQL 8.0Tomcat 9.0 一,新建项目添加文件 1.1复制“位置”的路径 1.2找到该文件夹 1.3…

Python语言兼职:探索、挑战与机遇

Python语言兼职:探索、挑战与机遇 在数字化浪潮汹涌的今天,Python语言因其简洁易懂、功能强大的特点,成为了众多编程爱好者的首选。而兼职Python开发者这一职业,也逐渐成为了一种新兴的工作模式。本文将深入探讨Python语言兼职的…

linux嵌入式设备测试wifi信号强度方法

首先我们要清楚设备具体链接在哪个wifi热点上 执行:nmcli dev wifi list rootubuntu:/home/ubuntu# nmcli dev wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS > * 14:EB:08:51:7D:20 wifi22222_5G Infr…

米尔NXP i.MX 93开发板的Qt开发指南

1. 概述 Qt 是一个跨平台的图形应用开发框架,被应用在不同尺寸设备和平台上,同时提供不同版权版本供用户选择。米尔 NXP i.MX 93 开发板(MYD-LMX9X开发板)使用 Qt6.5 版本进行应用开发。在 Qt 应用开发中,推荐使用 Qt…

NSSCTF CRYPTO MISC题解(一)

陇剑杯 2021刷题记录_[陇剑杯 2021]签到-CSDN博客 [陇剑杯 2021]签到 下载附件压缩包,解压后得到 后缀为.pcpang,为流量包,流量分析,使用wireshark打开 {NSSCTF} [陇剑杯 2021]签到 详解-CSDN博客 选择统计里面的协议分级 发现流…

Vxe UI vxe-table 实现自定义列拖拽,列拖拽排序功能

Vxe UI vue vxe-table 实现自定义列拖拽&#xff0c;列拖拽排序功能 开启自定义列 vxe-toolbar 工具栏&#xff0c;通过 custom 启用后就可以开启自定义列功能 <template><div><vxe-toolbar ref"toolbarRef" custom></vxe-toolbar><vx…

【java基础】内部类

1、 非静态成员内部类可以访问所在类的全部方法和对象&#xff08;就相当于一个对象方法&#xff08;属于对象阶层和非静态方法同时加载在类加载之后&#xff09;&#xff09; 2、非静态成员内部类无法在该类&#xff08;就是非静态成员内部类所在的类&#xff09;的静态方法中…

人类的深度学习与机器的深度学习不同

人类的深度学习和机器的深度学习存在一些重要的区别&#xff1a; 人类的深度学习是自主进行的&#xff0c;无需明确编程。我们可以通过观察周围环境、与他人互动和实践来不断学习和适应&#xff0c;人类是具有意识和自我意识的智能体&#xff0c;能够理解和处理抽象概念&#x…

Python - 获取文件行数

看了很多教程&#xff0c;使用 readlines() 读取感觉效率比较低 这里我使用 Python 调用 wc -l 命令 PS : 这个命令存在一个小的可能的不一致是&#xff0c;如果文件最后一行没有换行符&#xff0c;则这一行不会被统计 import osfile_path /Users/user/Documents/happy.md…

一个程序员的牢狱生涯(55)改判

星期二 改判 我在‘赵老大’的号子里待到快到十点的时候,赵老大才送我回了自己的号子。 回到号子里后,我把‘赵老大’给我的烟又递给了头铺,头铺爽快地拿过去,从中抽出两根烟递给我,让我晚上站班的时候抽,并告诉我打火机就放在枕头边,到时候自己取就行。 晚上我和老杨还…

MS1112驱动开发

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…