当前位置: 首页 > news >正文

计算机网络八股整理(二)

计算机网络八股整理(二)

应用层

1:dns的全称了解过吗?

dns全称domain-name-system,翻译过来就是域名系统,是在计算机网络中将域名转换成ip地址的分布式数据库系统;

域名服务器的层级类似一个树状结构:从上到下分别是根dns服务器,顶级域dns服务器和权威dns服务器;因为是一个树状结构,所以任意一个服务器可以找到根dns服务器从而找到任意目标dns服务器;

2:dns域名解析的工作流程?

首先客户端获取域名后去访问本地dns服务器,查看本地dns服务器缓存的表格中有没有对应的域名,没有的话

本地dns服务器就会去问根dns服务器,根dns服务器不会进行域名解析,而是指路,根dns服务器告诉本地dns服务器域名的顶级域dns服务器的地址,然后本地dns服务器去访问顶级域dns服务器,顶级域dns服务器就会指路给权威dns服务器,再去访问权威dns服务器,权威dns服务器会告诉本地dns服务器对应的ip地址,然后本地dns服务器就会将IP地址返回给客户端,客户端就能与服务器建立连接;

3:dns默认的端口是多少

dns默认的端口是53;

4:dns底层使用了udp还是tcp;

dns底层使用了udp传输协议,因为udp低延迟,简单快速,轻量级更适合dns这种需要快速响应的域名解析服务;

1:低延迟:因为udp是一种无连接的传输协议,不需要在传输前建立连接,延迟更低;

2:简单快速:因为udp不需要做连接管理和流量控制所以传输速度快;

3:轻量级:是因为udp头部较小;

虽然使用udp可能会造成丢包或者数据不完整,但是对于dns来说这些风险可以容忍,dns通过一些机制来保证数据的可靠性,比如超时重发,请求重试,缓存等;

5:http是不是无状态的?

http是无状态的,每次请求都是独立,且多次请求之间不会共享数据;

可以使用会话跟踪技术,如cookie,和session来跟踪用户状态,从而实现一定程度上的状态保持;

6:携带cookie的http请求是有状态的还是无状态的?cookie是http协议族的一部分,那为啥还说http是无状态的?

携带cookie的http请求可以实现在一定程度上的状态保持,因为cookie是在客户端保存会话信息和状态信息的一种机制。在发送http请求的时候携带上cookie,服务端读取cookie中的信息可以用来保持用户特定状态。所以虽然http是无状态的,但是可以通过cookie来实现一定程度上的状态保持;

cookie是http协议族的一部分,但是http协议设计的初衷就是无状态的请求,每个请求都是相互独立的,而cookie是一种补充机制,可以使用cookie来实现一定程度上的状态保持;

7:cookie和session有什么区别?

cookie和session在存储位置,数据容量,安全性,生命周期等方面有一定的区别:

1:存储位置:cookie存储在客户端,每次请求时都会携带cookie到服务端。session存储在服务端,由服务端分发session ID,通过cookie或者是url重写将session ID发送给客户端,客户端在访问时就携带上session ID,服务器根据sessionID找到对应的session;

2:数据容量:cookie存储在客户端,容量一般是4kb,而且浏览器不允许同一个域名有过多的cookie;而session存储在服务端,理论上没有容量限制,主要取决于服务器的内存;

3:安全性:cookie存储在客户端,可能会收到xss攻击;session存储在客户端,比cookie安全性强一些,但也可能受到session劫持和会话固定攻击;

4:生命周期:cookie可以设置过期时间,超过过期时间cookie会失效,也可以设置会话cookie,即浏览器关闭时,cookie失效;

session在客户端关闭浏览器时失效,也可以设置过期时间;

拓展1:cookie和session的优缺点?

cookie的优点:是http中支持的;

cookie的缺点:1:只有在浏览器中可用,移动设备等不可用;2:不安全,用户可以禁用cookie;3:不支持跨域;

session的优点:存储在服务器中,安全;

session的缺点:1:只存储在单台服务器中,在集群环境下,进行负载均衡后可能会不可用。2:cookie的缺点;

8:cookie,session,token的区别:

1:session存储在服务端,可以理解为一个状态列表,拥有唯一的标识符sessionID,通常存储在cookie。客户端发送请求时在cookie中携带sessionID, 服务端根据列表查询对应的session数据,依赖于cookie;

2:cookie类似于令牌,携带sessionID,存储于客户端,由浏览器自动添加;

3:token也是一种令牌,将用户的信息进行加密后,发送给用户,用户下次请求需要在cookie或者其他位置携带token,服务端进行解密后就能获取用户信息,通常由开发者手动添加;

9:如果客户端禁用了cookie,session还能使用吗?

默认情况下,禁用了cookie之后session是无法正常使用的,因为sessionID的传递依赖于cookie;

但是可用使用别的方法传递sessionID:

1:url重写:将sessionID拼接在url中,服务端通过解析url获取sessionID,但是这样使url不是那么整洁;而且如果用户分享连接可能会泄露sessionID;

2:隐藏表单字段:将sessionID存储在html表单的隐藏字段中,服务端通过解析表单字段获取sessionID,但是这种情况只能用于表单提交的情况,不能用于链接点击和ajax请求;

10:如果我把数据存储到localstorage中或者是cookie中有什么区别?

数据容量:cookie存储在客户端,一般容量大小在4kb,而localstorage的容量更大可以达到几MB;

数据发送:发送请求时,会携带cookie从而实现多次请求之间的数据共享。而localstrorage只会存储在客户端浏览器中,不会自动发送出去,一般可以用来同一域名多个页面的数据共享;

安全性:cookie会发送到服务端,有被窃听的风险,安全性不高,而localstotage存储在服务器端一般较安全;

生命周期:cookie可以设置过期时间,超过过期时间就会失效,而localstorage持久化存储在服务端,一般需要手动删除或者使用代码删除;

11:什么数据应该存储在cookie中,什么数据应该存储在localstorage?

cookie适用于服务端和客户端传递数据,跨域访问,设置过期时间,localstorage适合存储大量数据,相同域名下的不同页面共享数据,永久存储数据;

12:jwt令牌和传统令牌有什么区别?

1:无状态性:jwt令牌是无状态的,它不会存储在服务端中。jwt包含了一些必要信息,如用户身份,权限信息;

2:安全性:jwt通过密钥对令牌进行签名,保证了密钥的完整和真实性,只有持有密钥才能对令牌进行解析;

3:跨域访问:jwt存储在请求头或者参数中,无需cookie就能进行跨域访问;

13:jwt令牌包含哪些部分?

jwt令牌包含头部,载荷,和签名:

头部由签名算法和令牌类型组成;

有效载荷为自定义信息;

签名是将头部,载荷和密钥通过算法进行计算而来的字符串;

其中头部和载荷都是JSON格式通过base64编码成字符串;

14:jwt为什么能解决集群部署?什么是集群部署?

在传统的令牌和cookie中,请求将令牌或者cookie保存在服务器内存或者数据库中,如果是集群部署,每次访问的服务器不同,cookie和令牌都要重新获取,比如要用户重新登录,这带来了额外的开销;

而jwt是无状态的,服务端无需存储jwt相关信息,jwt存储了一些必要信息如用户身份和权限,集群中的服务器只要解析jwt的内容就能获取相关信息用来维持特定状态;解决了集群部署的问题;

15:jwt的缺点是什么?

jwt一旦派发出去在失效之前都是有效,无法进行撤销;

如果解决这个问题,我们可以使用内存数据库比如redis,创建一个黑名单,将想要其失效的jwt加入到黑名单中,这样每次在使用jwt之前都会判断jwt是否在黑名单中;

16:jwt如果泄露了怎么办,如何解决?

1:及时失效令牌:让旧的令牌失效无法使用;

2:刷新令牌:刷新令牌获取新的令牌,让旧的失效;

3:黑名单:服务端维护黑名单,将旧的令牌加入黑名单;

17:前端是如何存储jwt的?

jwt存储在客户端,可以存储在localstotrage中,也可以存储在cookie,sessionstotrage中;

各自的优缺点:

1:localstotrage:

优点:存储空间大,一般都有几MB,而且不随着请求发送到服务端,所以不会出现在http缓存和日志中;

缺点:可能会受到xss攻击,恶意的javascpirt可以盗取jwt;

2:sessionstotrage:

优点:和localstotrage一样存储空间大,窗口关闭会清除缓存,一定程度上降低了泄露的风险;

缺点:每次刷新和打开新标签页使用同样的应用都要重新登录影响用户体验;

3:cookie:

优点:可以使用httponly来防止javaspript的访问,降低xss的风险。也可以设置secure标志来使用https发送请求,提高了安全性;

缺点:存储空间小只有4kb,而且每次访问会携带,增加性能负担;

18:都有http协议了为什么还会有rpc?

1:首先rpc本质上不是一种协议,是一种调用方式,像grpc,thrift才算是协议,他们是实现了rpc调用的协议。一般用于程序员像调用本地方法一样调用远程方法;

2:对于有多端服务的软件来说,对外一般用http,rpc用于集群不同服务之间的调用;

3:rpc出现的比http早,且性能要比http1.1要强;

4:虽然http2.0的性能对http1.1有提升,可能比rpc性能还有还要好,但是是近几年才推出,不太可能替代rpc;

19:http长连接和websocket的区别?

1:全双工和半双工:tcp是全双工的协议,虽然http1.1是基于tcp协议,但是http1.1是半双工协议,对于服务端主动推送服务端的场景不太友好,所以需要使用全双工协议websocket;

2:应用场景:http1.1是基于请求应答的协议,由客户端主动发送请求,服务端响应,服务端不能主动发送数据。对于一些简单场景可用通过定时轮询或者长轮询来实现服务器主动推送;对于需要频繁进行通信的场景可以使用websocket双向通讯协议;

20:nginx负载均衡的算法有哪些?

1:轮询:按照顺序依次将请求分配给后端服务器;这个算法最简单,但是无法处理服务器访问速度突然变慢或者客户端有连续访问需求的场景;

2:ip哈希:通过ip的哈希结果来分配后端服务器,同一个IP始终分配给同一台服务器;适用于保持同一个客户端的请求一直方式给同一个服务器的场景如会话保持。

3:url哈希:根据url的哈希结果来分配后端服务器,一个url定向发送给后端的一个服务器;

4:最短响应时间:根据响应时间来分配请求,优先分配给响应时间最短的后端服务器。

5:加权轮询:根据权重将请求分配给后端服务器,权重越大的分配的请求越多,适用于后端服务器性能不同的场景,可以提高高性能服务器的利用率;

21:nginx位于七层网络结构的那一层?

nginx位于应用层,因为主要处理http请求和响应;

实现负载均衡和反向代理;

相关文章:

计算机网络八股整理(二)

计算机网络八股整理(二) 应用层 1:dns的全称了解过吗? dns全称domain-name-system,翻译过来就是域名系统,是在计算机网络中将域名转换成ip地址的分布式数据库系统; 域名服务器的层级类似一个树…...

强化学习off-policy进化之路(PPO->DPO->KTO->ODPO->ORPO->simPO)

需要LLM在训练过程中做生成的方法是 On Policy,其余的为Off Policy。 On Policy是包含了反馈机制,Off Policy不包含反馈机制。 若进行环境交互的模型与被更新的模型是相同的模型,通常这种更新策略被称为on-policy的策略。on-policy的方法会有…...

Linux 如何创建逻辑卷并使用

一、逻辑卷的介绍 生成环境中逻辑卷使用率很高 逻辑卷的诞生:如果对磁盘直接使用fdisk分区,那么这中分区,我们叫做Linux的标准分区,Linux的标准分区格式化成文件系统之后,挂载使用,那么一旦文件系统的空间…...

java实现将图片插入word文档

插入图片所用依赖 private static void insertImage(XWPFDocument document, String path) {List<XWPFParagraph> paragraphs document.getParagraphs();for (XWPFParagraph paragraph : paragraphs) {CTP ctp paragraph.getCTP();for (int dwI 0; dwI < ctp.sizeO…...

初识java(3)

大家好&#xff0c;今天我们来讲讲我们的老伙计-变量&#xff0c;在哪一门编程语言中&#xff0c;变量的作用都是不可或缺的&#xff0c;那么下面我们就来详细了解一下java中的变量。 一.变量概念 在程序中&#xff0c;除了有始终不变的常量外&#xff0c;有些内容可能会经常…...

coqui-ai TTS 初步使用

项目地址&#xff1a;https://github.com/coqui-ai/TTS 1. 创建一个新的conda环境&#xff0c;如果自己会管理python环境也可以用其他方法 克隆项目下来 pip install -r requirements.txt # 安装依赖 pip install coqui-tts # 只要命令行工具的话 下载自己想要的模型 …...

matlab代码--卷积神经网络的手写数字识别

1.cnn介绍 卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种深度学习的算法&#xff0c;在图像和视频识别、图像分类、自然语言处理等领域有着广泛的应用。CNN的基本结构包括输入层、卷积层、池化层&#xff08;Pooling Layer&#xff09;、全连…...

Scala—Map用法详解

Scala—Map用法详解 在 Scala 中&#xff0c;Map 是一种键值对的集合&#xff0c;其中每个键都是唯一的。Scala 提供了两种类型的 Map&#xff1a;不可变 Map 和可变 Map。 1. 不可变集合&#xff08;Map&#xff09; 不可变 Map 是默认的 Map 实现&#xff0c;位于 scala.co…...

极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【六】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

ES6 、ESNext 规范、编译工具babel

ES6 、ESNext 规范、编译工具简介 ES6ES&#xff08;ECMAScript&#xff09; vs JS常量进一步探讨 obj对象的扩展面试&#xff1a;使对象属性也不能更改——Object.freeze(obj) 解构deconstruction变量的解构赋值&#xff1a;数组解构赋值&#xff1a;对象解构赋值&#xff1a;…...

DeepSpeed 配置文件(DeepSpeed Configuration Files)详解:中英文解释

中文版 本文详细介绍 DeepSpeed 配置文件&#xff0c;结合 4 卡 3090 的实际使用场景&#xff0c;重点解释各个参数的含义&#xff0c;并提供应对爆显存的方案。 DeepSpeed 配置文件详解&#xff1a;从基础到实战 DeepSpeed 是用于加速大规模分布式训练的重要工具&#xff0c…...

前端JavaScript(一)---基本介绍

Javascript是一种由Netscape(网景)的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言&#xff0c;主要目的是为了解决服务器端语言&#xff0c;比如Perl&#xff0c;遗留的速度问题&#xff0c;为客户提供更流畅的浏览效果。当时服务端需要对…...

文本处理之sed

1、概述 sed是文本编辑器&#xff0c;作用是对文本的内容进行增删改查。 和vim不一样&#xff0c;sed是按行进行处理。 sed一次处理一行内容&#xff0c;处理完一行之后紧接着处理下一行&#xff0c;一直到文件的末尾 模式空间&#xff1a;临时储存&#xff0c;修改的结果临…...

uniapp在App端定义全局弹窗,当打开关闭弹窗会触发onShow、onHide生命周期怎么解决?

在uniapp(App端)中实现自定义弹框&#xff0c;可以通过创建一个透明页面来实现。点击进入当前页面时&#xff0c;页面背景会变透明&#xff0c;用户可以根据自己的需求进行自定义&#xff0c;最终效果类似于弹框。 遇到问题&#xff1a;当打开弹窗(进入弹窗页面)就会触发当前页…...

计算机网络 实验七 NAT配置实验

一、实验目的 通过本实验理解网络地址转换的原理和技术&#xff0c;掌握扩展NAT/NAPT设计、配置和测试。 二、实验原理 NAT配置实验的原理主要基于网络地址转换&#xff08;NAT&#xff09;技术&#xff0c;该技术用于将内部私有网络地址转换为外部公有网络地址&#xff0c;从…...

数据结构——排序算法第二幕(交换排序:冒泡排序、快速排序(三种版本) 归并排序:归并排序(分治))超详细!!!!

文章目录 前言一、交换排序1.1 冒泡排序1.2 快速排序1.2.1 hoare版本 快排1.2.2 挖坑法 快排1.2.3 lomuto前后指针 快排 二、归并排序总结 前言 继上篇学习了排序的前面两个部分:直接插入排序和选择排序 今天我们来学习排序中常用的交换排序以及非常稳定的归并排序 快排可是有多…...

【kafka04】消息队列与微服务之Kafka 图形工具

Kafka 在 ZooKeeper 里面的存储结构 topic 结构 /brokers/topics/[topic] partition结构 /brokers/topics/[topic]/partitions/[partitionId]/state broker信息 /brokers/ids/[o...N] 控制器 /controller 存储center controller中央控制器所在kafka broker的信息 消费者 /c…...

剖析前后端 API 接口参数设计:JSON 数据结构化全攻略

在当今软件开发领域&#xff0c;前后端分离架构已成为主流趋势。而 API 接口作为前后端之间数据交互的桥梁&#xff0c;其设计的合理性对系统的可维护性和扩展性起着至关重要的作用。JSON&#xff08;JavaScript Object Notation&#xff09;作为一种轻量级的数据交换格式&…...

vue3 多种方式接受props,定义ref,reactive

定义props 1 第一种 interface AddType { dialogStudyVisible: boolean; } const props defineProps<AddType>(); 第二种 // const props defineProps({ // dialogStudyVisible:{ // type:Boolean, // default:false // } // }) 第三种 // const …...

逻辑处理器核心指纹修改

navigator.hardwareConcurrency的属性,可以用来获取CPU的逻辑处理器核心数。 1、navigator.hardwareConcurrency接口定义&#xff1a; third_party\blink\renderer\core\frame\navigator_concurrent_hardware.idl // https://html.spec.whatwg.org/C/#navigator.hardwarecon…...

如何制作项目网页

一、背景 许多论文里经常会有这样一句话Supplementary material can be found at https://hri-eu.github.io/Lami/&#xff0c;这个就是将论文中的内容或者补充视频放到一个网页上&#xff0c;以更好的展示他们的工作。因此&#xff0c;这里介绍下如何使用前人提供的模板制作我…...

mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?

随笔 从千万粉丝“何同学”抄袭开源项目说起&#xff0c;为何纯技术死路一条&#xff1f; 数据源的统一与拆分 监控报警系统的指标、规则与执行闭环 我们的系统应该配置哪些监控报警项&#xff1f; 监控报警系统如何实现自监控? java 老矣&#xff0c;尚能饭否&#xff…...

1、正则表达式

grep匹配 grep用来过滤文本内容&#xff0c;以匹配要查询的结果。 grep root /etc/passwd&#xff1a;匹配包含root的行 -m 数字&#xff1a;匹配几次后停止 -v&#xff1a;取反-i&#xff1a;忽略字符的大小写&#xff0c;默认的&#xff0c;可以不加-n&#xff1a…...

Airsim安装问题:This project was made with a different version of the Unreal Engine.

本文记录如何在 Ubuntu 18.04 系统中配置 AirSim 和 Unreal Engine 4.27&#xff0c;并成功打开默认的 Blocks 环境项目。 环境说明 系统&#xff1a;Ubuntu 18.04Unreal Engine 版本&#xff1a;4.27AirSim&#xff1a;主分支文件路径&#xff1a; Unreal Engine&#xff1a…...

java八股-分布式服务的接口幂等性如何设计?

文章目录 接口幂等token Redis分布式锁 原文视频链接&#xff1a;讲解的流程特别清晰&#xff0c;易懂&#xff0c;收获巨大 【新版Java面试专题视频教程&#xff0c;java八股文面试全套真题深度详解&#xff08;含大厂高频面试真题&#xff09;】 https://www.bilibili.com/…...

vscode python code runner执行乱码

打开vscode code runner插件配置&#xff0c;如图所示&#xff1a; 然后在setting.json修改运行python的默认命令&#xff1a; 将原来 替换成 "python":"set PYTHONIOENCODINGutf8 && python", 参考&#xff1a;Vscode——python环境输出中文乱…...

Java中的继承详解

在Java编程中&#xff0c;继承&#xff08;Inheritance&#xff09;是一种面向对象编程&#xff08;OOP&#xff09;的核心概念&#xff0c;它允许一个类&#xff08;称为子类或派生类&#xff09;继承另一个类&#xff08;称为父类或基类&#xff09;的属性和方法。通过继承&a…...

kafka进阶_2.存储消息

文章目录 一、存储消息介绍二、副本同步2.1、数据一致性2.2、HW在副本之间的传递 如果想了解kafka基础架构和生产者架构可以参考 kafka基础和 Kafka进阶_1.生产消息。 一、存储消息介绍 数据已经由生产者Producer发送给Kafka集群&#xff0c;当Kafka接收到数据后&#xff0c…...

如何启用本机GPU硬件加速猿大师播放器网页同时播放多路RTSP H.265 1080P高清摄像头RTSP视频流?

目前市面上主流播放RTSP视频流的方式是用服务器转码方案&#xff0c;这种方案的好处是兼容性更强&#xff0c;可以用于不同的平台&#xff0c;比如&#xff1a;Windows、Linux或者手机端&#xff0c;但是缺点也很明显&#xff1a;延迟高、播放高清或者同时播放多路视频视频容易…...

如何更好地设计SaaS系统架构

SaaS&#xff08;Software as a Service&#xff09;架构设计的核心目标是满足多租户需求、支持弹性扩展和高性能&#xff0c;同时保持低成本和高可靠性。一个成功的SaaS系统需要兼顾技术架构、资源利用、用户体验和商业目标。本文从以下几个方面探讨如何更好地设计SaaS系统架构…...

php做动态网站/seo搜索引擎优化技术

SQL Server 数据库启动过程&#xff0c;以及启动不起来的各种问题的分析及解决技巧参考文章&#xff1a; &#xff08;1&#xff09;SQL Server 数据库启动过程&#xff0c;以及启动不起来的各种问题的分析及解决技巧 &#xff08;2&#xff09;https://www.cnblogs.com/VicL…...

公司注册后怎么做网站/seo关键词如何布局

1 引言 摘要&#xff1a;在这项工作中&#xff0c;我们旨在构建一个性能强大的简单&#xff0c;直接和快速的实例分割框架。我们遵循SOLOv1方法的原理。" SOLO&#xff1a;按位置分割对象"。重要的是&#xff0c;我们通过动态学习目标分割器的mask head 。具体来说&a…...

广州web网站开发培训班/百度用户服务中心人工24小时电话

小信号分析法重点笔记开关电源的反馈环路设计是开关电源设计的一个非常重要的部分&#xff0c;它关系到一个电源性能的好坏。要设计一个好的环路&#xff0c;必须要知道主回路的数学模型&#xff0c;然后根据主回路的数学模型&#xff0c;设计反馈补偿环路。开关电源是一个非线…...

最新网球赛事新闻/谷歌seo搜索引擎优化

author YHC 主题允许你改变视觉效果,许多扩展主题的创建基于jQuery UI主题,没有任何官方发布的部分,你也可以创建一个已存在主题的子主题. Sunny Pepper Grinder Cupertino Dark Hive 下载 EasyUI 扩展示例代码: jquery-easyui-themes.zip...

html5大气网站/微信搜一搜seo优化

一、属性属性名称默认值说明autotrue设置为true当选择文件后就直接上传了&#xff0c;为false需要点击上传按钮才上传 。buttonClass”按钮样式buttonCursor‘hand’鼠标指针悬停在按钮上的样子buttonImagenull浏览按钮的图片的路径 。buttonText‘SELECT FILES’浏览按钮的文本…...

海勃湾网站建设/市场调研报告1000字

配置是如何进行的每个GNU发布版本都应该还有一个名为configure的shell脚本。你需要把你希望在那种机器和系统上编译程序作为参数告诉这个脚本。脚本configure必须记录配置信息以便它们可以影响编译工作。这样做的一种方式是把一个诸如config.h的标准名字和为选定的系统匹配的正…...