计算机网络面试题——第三篇

news2024/11/24 13:27:12

1. TCP超时重传机制是为了解决什么问题

因为TCP是一种面向连接的协议,需要保证数据可靠传输。而在数据传输过程中,由于网络阻塞、链路错误等原因,数据包可能会丢失或者延迟到达目的地。因此,若未在指定时间内收到对方的确认应答(ACK),则认为数据包可能丢失,此时,会触发超时重传机制,重新发送该数据包,以确保数据的可靠到达。

扩展:
1. TCP ACK确认号
TCP的可靠性是靠确认号的,比如我发给你1、2、3、4这4个包,你告诉我现在要5那说明前面4个包都收到了。不过,这里要注意、SeqNum和ACK都是以字节数为单位的。也就是说假设收到了1、2、4但是3没有收到,此时不能ack 5,如果回了5那么发送方就以为5之前的都收到了。所以,只能回复确认最大连续收到的包,也就是3.

2. 超时重传的时间RTO
RTO是指TCP数据报文段发出去后,经过一定时间没有收到其确认报文,就会重新发送该报文段的时间阈值。TCP协议通过采样RTT(往返时延)的时间和波动范围,不断更新,动态调整RTO的值。

2. TCP有超时重传为什么还需要快速重传机制

因为超时重传局限性,他是按时间来驱动的,如果是网络状况真的不好的情况下,超时重传没问题,但是,如果网络状况好的时候,只是恰巧丢包了,那么等长时间就没必要。

所以,引入了数据驱动的重传叫快速重传,他的设计初衷是为了在检索到丢包的情况下,尽快重传丢失的数据包,而不必等待超时计时器的触发。

他通过检测三个或者更多的重复的ACK,认为数据包丢失 ,从而触发立即重传。在这里插入图片描述
通过快速重传,TCP能够更快的恢复丢失的数据包,减少重传等待时间。提升数据传输的整体效率,特别是在网络条件良好的情况下。

3. TCP的SACK的引入是为了解决什么问题

传统的TCP使用累计确认(ACK)机制,只能确认到达的连续数据段,无法有效告知发送方中间某些数据段的丢失或者乱序。结果是发送方只能依赖超时或者重复ACK来重传数据。这可能导致不必要的重传,浪费带宽、降低效率。

SACK(选择性确认),他的引入是为了解决发送方不知道该重传哪些数据的问题。使接收方能够告知发送方已收到的非连续数据段。这样,发送方只需重传确实丢失的数据段,而不是整个发送窗口,从而提高传输效率。
在这里插入图片描述
SACK就是接收方会回传他已经收到的数据,这样发送方就知道哪些数据对方已经收到了,所以就可以选择性的发送丢失的数据。如上图,通过ACK告知我接下来要5500开始的数据,并一直更新SACK,6000-6500收到了,6000-7000收到了。6000-7500收到了,发送方很明确的知道5500-5999的那一波数据丢失了,应该重传。

4. TCP滑动窗口的作用是什么

TCP滑动窗口机制的主要作用是实现流量控制,即协调发送方和接收方的数据传输速率。确保发送方不会发送超出接收方处理能力的数据量,防止接收端缓冲区溢出。

滑动窗口允许发送方在未收到前一个数据包的确认前继续发送多个数据包,从而提高网络吞吐量,减少等待时间,实现高效的数据流传输。

扩展
滑动窗口详细分析
网络是复杂多变的,有时候就会阻塞住,有时候又很通畅。需要根据情况来控制一下发送速率。发送方需要知道接收方的情况,好控制一下发送的速率。不至于蒙着头一个劲的发然后接收方都接受不过来。因此,TCP有个滑动窗口来做流量控制,就是接收方告诉发送方我还能接受多少数据,然后发送方就可以根据这个信息来进行数据的发送。

已经有滑动窗口了为什么还要拥塞控制
滑动窗口仅根据接收方的处理能力进行调节,主要防止接收端因处理不及时导致的数据丢失或者拥塞。而拥塞控制是为了防止网络本身的拥塞情况,即在网络中出现过载时,网络中途路由器和链路的负载仍可能造成数据丢失或者延迟,因此,需要拥塞控制机制来应对。

5. 说说TCP拥塞控制的步骤

  1. 慢启动:发送方在连接建立初期,缓慢增加数据发送速率。初始的拥塞窗口(cwnd)通常为一个MSS(最大报文段大小),然后在每次收到ACK后成倍的增加cwnd,直到达到慢启动阈值或者监测到网络拥塞。
  2. 拥塞避免:当cwnd达到阈值后,tcp进入拥塞避免阶段,拥塞窗口的增长速度从指数变为线性增长,即每个RTT(往返时间)增加一个MSS。这一阶段旨在避免激烈的拥塞反应,保持网络稳定性。
  3. 快速重传:发送方在收到三个重复的ACK后,立即重传被认为丢失的报文段,而无需等待超时。这减少了重传的延迟,迅速应对数据丢失。
  4. 快速恢复:在快速重传后,TCP不进入慢启动,而是减小cwnd到阈值的一般,然后开始线性增长cwnd,以快速恢复到丢包前的传输速率。
    在这里插入图片描述

6. ARP和RARP分别是什么?有什么区别?

ARP将IP地址转换为MAC地址,工作在网络层和数据链路层之间,主要 用于在局域网中确定一个特定IP地址对应的物理地址。 因为最终需要找到MAC地址才能跟具体的设备通信。

RARP用于将MAC地址转换为IP地址,比如一些设备启动的时候,需要根据RARO得知分配给他的ip是什么。

7. TCP/IP四层模型是什么

TCP/IP四层模型是一个分层网络通信模型,将网络通信过程分为四个层次,这四个层次分别是:网络接口层、网络层、传输层和应用层。

  • 网络接口层负责在计算机和网络硬件之间传输数据,负责在物理网络上发送和接受数据帧,包括以太网,wifi等协议。
  • 网络层通过ip协议提供数据包的路由和转发
  • 传输层:负责在两个主机之间提供端到端的通信服务,常见的有tcp、udp
  • 应用层通过各种协议提供网络应用程序的功能,如http、ftp等

8. OSI七层模型是什么

  • 应用层:用户交互界面,提供网络服务,如http、ftp、smtp
  • 表示层:数据格式转换,加密、解密,如jpeg、ssl/tls等
  • 会话层:建立、管理、终止会话
  • 传输层:可靠传输,流量控制,错误检测,如TCP、UDP等
  • 网络层:路径选择和逻辑地址管理,如ip、icmp等
  • 数据链路层:物理地址(MAC)寻址,错误检测与纠正。
  • 物理层:比特流传输。

9. Cookie、Session、Token之间有什么区别

  1. Cookie
    Cookie是存储在用户浏览器的一个小型数据文件,用于跟踪和保存用户的状态信息。主要用于保持用户登录状态、跟踪用户行为、存储用户偏好等。
    保存在浏览器端。
  2. Session
    Session是服务端保存用户状态的机制,每个用户会话都有一个唯一的session id。主要用于跟踪用户在服务器上的状态信息,例如登录状态和购物车内容。
    存储在服务器端,然后对应的sessionId通过Cookie保存在客户端浏览器中。
  3. Token
    Token本质上是一种加密的字符串,用于身份验证和授权,可以包含用户信息和权限,用于验证用户身份或者授权访问资源。认证后,后端服务会返回token,存储在客户端,后续客户端访问服务端需要带上这个token。

使用场景区别

  • Cookie:主要用于客户端状态的简单存储和追踪
  • Session:用于服务器端的复杂状态管理,特别是在需要存储大量会话数据时
  • Token:用于无状态的认证和授权,特别是在分布式和跨域环境下。

10. JWT Token

JWT是一种用于在各方之间传递安全信息的紧凑,URL安全的令牌格式。在用户登录后,服务器生成JWT并返回给客户端。客户端在后续请求中通过HTTP头部(通常是Authorization头)发送该JWT,服务器验证JWT的有效性以进行用户身份验证。

因为他的无状态性,常用于分布式系统和微服务架构中。

其结构主要包括三个部分:Header、Payload和Signature。

JWT的工作原理可以总结为以下几个步骤:

  • Header:描述令牌的元数据,通常包含令牌的类型(JWT)和所使用的签名算法(如HMAC).
  • Payload:包含声明,即传递的数据。这些数据通常包含用户信息和其他相关数据。
  • Signature:将Header和Payload用指定的算法进行签名,以验证JWT的真实性和完整性。签名确保了令牌内容在传输过程中未被篡改。

JWT的优点

  • 自包含:JWT中包含了所有必要的信息,因此,在验证时不需要查询数据库,提升了性能
  • 跨语言:JWT是基于JSON的,几乎所有编程语言都支持他的生成和解析。

1. 如何废除一个过期的JWT
因为JWT是无状态的,一般服务器并不保存已签发的JWT,所以服务器无法主动撤销一个已经签发的。不过可以通过其他方式来实现。

  • 使用黑名单
    实现思路:在服务器端维护一个黑名单,该列表包含所有已经被废除的JWT标识符,每次服务器验证JWT时,除了验证签名和其他标准信息外,还需要检查该JWT是否在黑名单中。
    优点:可以精确废除特定的JWT,不影响其他合法的JWT。
    缺点:需要在服务器端存储和管理黑名单,违背了JWT的无状态特性,增加了系统复杂度。

  • 使用版本控制
    实现思路: 在用户信息中引入一个“Token版本号”的字段,每次生成JWT时,将这个版本号作为JWT的一部分。当需要废除某个用户的JWT时,只需要将用户的版本号递增,在服务器验证JWT时,检查JWT中的版本号和用户当前的版本号是否匹配。

  • 结合状态信息
    实现思路:在某些场景下, 可以在服务器端结合一些状态信息来决定JWT是否有效。例如,在用户注销或者更改密码时,更新服务器上的某些状态。当用户发出请求时,除了验证JWT外,服务器还检查这些状态是否符合要求。
    2. JWT和Session的对比

  • 无状态认证:JWT通常用于无状态认证,即服务器不存储会话数据。

  • 扩展性:由于JWT不依赖服务器存储,因此在分布式系统中更具扩展性。

11. 什么是DNS

DNS(域名系统)是一个用于将域名转换为IP地址的互联网基础服务。当用户输入一个域名时,DNS服务器会查询该域名对应的IP地址,并将结果返回给用户。这样,用户就可以通过易记的域名访问网站,而不需要记录复杂的IP地址。

除此之外,DNS还有负载均衡能力,通过将域名解析到多个IP地址,DNS可以帮助分散流量,进行负载均衡,提高服务的可靠性和性能。

互联网中的域名地址,分为多级结构:最顶级是根域,然后是顶级域,如 .com、.org 接着是二级域(taobao.com),以及子域(www.taobao.com)。
DNS服务器和客户端会缓存DNS查询结果,以减少查询时间和降低对DNS服务器的负载。缓存的内容会在一定时间后过期,具体取决于DNS记录的生成时间(TTL)设置。
1. DNS的工作流程

  1. 域名解析请求:用户在浏览器输入一个域名,浏览器首先检查本地缓存是否有该域名的IP地址。
  2. 递归DNS解析:如果本地缓存中没有所需的IP地址,浏览器会向配置的递归DNS服务器发送请求。
  3. 查询根域名服务器:递归DNS服务器会查询根域名服务器以获取顶级域的DNS服务器地址,跟域名服务器负责将请求转发到对应的顶级域服务器。
  4. 查询顶级域服务器:跟域名服务器将请求转发到对应的顶级域服务器(如.com、.net) ,这些服务器负责处理特定顶级域的请求。
  5. 查询权威DNS服务器:顶级域名服务器将请求转发到域名对应的权威DNS服务器(如taobao.com),权威DNS服务器拥有该域名的最终DNS记录。
  6. 返回IP地址:权威DNS服务器返回与域名对应的IP地址给递归DNS服务器,然后递归DNS服务器将该IP地址返回给用户的浏览器。
  7. 缓存和访问:浏览器缓存该IP地址以供后续请求使用,并通过IP地址连接到目标服务器以访问网站。

2. DNS记录类型

  • A记录:将域名映射到IPv4地址。
  • AAAA记录:将域名映射到IPv6地址。
  • CNAME记录:将一个域名别名指向另一个域名
  • MX记录:定义邮件服务器的地址,用于电子邮件的传输。
  • TXT记录:存储任意文本信息,通常用于验证和安全设置
  • NS记录:定义域名的权威DNS服务器。

12. 什么是CDN

CDN是一个由多个地理位置分散的服务器节点组成的分布式网络架构,用于加速互联网内容的分发。

当用户请求内容时,CDN会根据用户的地理位置,将请求转发到最近的缓存服务器上,这样可以减少数据传输的延迟,提高用户访问速度,同时减轻服务器的负载。

CDN通常用于加速静态内容的访问,提高网络的性能和用户体验。

  1. CDN的通俗理解
    如果网站服务器部署在北京,香港的用户访问该网站,由于物理距离的缘故,时延相对而言会比较大,导致体验上并不是很好。并且当用户量比较大的时候,全国各地所有请求都涌向北京的服务器,网络的主干道就会被阻塞。这其实就是所谓的“热点”问题,可以采用 分流 的操作解决这个问题。
    主服务器部署在北京不变,但是全国各地都建立一些缓存站,这些缓存站可以缓存一些主服务器上变化不频繁的资源,比如css/js/图片等静态资源。当用户访问网站的时候,根据就近原则,选择一个距离他最近的缓存站。
    如果缓存站找不到,那么就回源到源站,也就是缓存站回去北京的服务器要数据,然后将这些数据缓存到本地且返回给用户。
    当然,一些热点的数据也可以让源站主动推送给缓存站,进行 缓存预热。这样,就减少了回源的操作,使得高峰时期服务器更加平稳。
    动态数据怎么办
    静态的按照上面说的路子走,动态的则是根据内部的一些调度算法,智能的选择最优回源路径去请求源站,节省请求的时间。

2.CDN基础结构
在这里插入图片描述
所谓CDN缓存节点就是上面说的缓存站,然后还是一个很重要的GSLB(全局负载均衡器)
这个GSLB实现的主要功能就是:根据就近原则,选择一个距离他最近的缓存站。简单来说,就是请求转发,转发到最近的站。

GSLB转发机制有三种实现

  • 基于DNS解析
  • 基于HTTP重定向
  • 基于IP路由
    业界实现转发的主流技术是DNS解析,因为DNS有缓存以及负载均衡能力。

13. 从网络角度看,用户从输入网址到网页显示,期间发生了什么

  1. 浏览器解析URL:浏览器会解析URL,根据请求信息生成对应的HTTP请求报文。
  2. DNS解析:请求需要知晓服务器域名对应的IP地址才能通信,浏览器会检查本地缓存、操作系统缓存、甚至路由器缓存,如果未命中缓存,浏览器向配置的DNS服务器发送查询请求。DNS服务器递归查询最终返回IP地址。
  3. TCP或者UDP:接着浏览器会调用socket库委托协议栈工作,根据指定的情况选择TCP或者UDP。如果使用TCP,需要通过三次握手建立连接,需要在数据发送前通过三次握手和服务端建立连接。此时得到了封装了HTTP数据的TCP数据包。
  4. IP:在TCP数据包的基础上,在封装源地址IP和目标地址IP等信息,得到网络包。有了IP就能在多个网络节点中确定数据包的传输路径,最终找到目标服务器。
  5. MAC:得到网络包后,需要在IP头部的前面加上mac头部,封装发送方MAC地址和接收方MAC地址。MAC用来确保子网内设备两点之间的通信寻址。
  6. 网卡:这个时候,网络包还是存储在内存中的二进制数据,需要网卡把二进制数据转换为电信号,通过网线进行传输。
  7. 交换机:通过网线会连接到交换机,交换机是二层网络设备。工作在mac层,他会根据数据包的mac头找到另一个设备连接在交换机的哪个端口,然后传输。如果找不到对应的端口,则会向交换机上的所有端口广播。
  8. 路由器:路由器也是进行转发,他是三层网络设备,包含IP层,利用路由器,数据在不同网络节点之间转发,最后到达服务器。
  9. 层层验证:服务器确认MAC地址匹配、IP地址匹配,如果是TCP协议则看看序列号是否匹配,若匹配,根据对应的端口号找到监听进程,此时服务器上对应的应用就接收到数据了。
  10. 服务器处理:服务器收到请求后,处理相应的业务逻辑,生成HTTP响应,这期间可能涉及到读取数据库、访问文件系统等。最终会生成响应给客户端(又是一层层的封装TCP、IP、MAC等头部数据,得到最终的数据包),从网卡到交换机到路由器。。。。
  11. 浏览器接收响应并渲染页面:经过多个路由器转发后,浏览器最终会接收到服务器返回的响应,进行页面渲染展示。

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

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

相关文章

【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers

【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers Note: 持续更新中,未完。。。 目录 文章目录 【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers目录1. 引言2. 简介 1. …

Linux文件上传下载与压缩解压

首先用yum命令执行 yum install -y lrzsz 下载lrzaz1.文件上传命令: rz(拖曳方式有时行有时不行的)在终端直接输入rz,直接弹出Windows系统的文件,自行找文件进行上传操作2.下载: sz命令(拖曳方式有时行有时不行的) 用法:sz 下载文件或文件路径 默认下载路径在Windows系统相应的…

自然语言处理问答系统

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

C++(11)——vector的具体实现

目录 1.函数的头文件 2.默认成员函数 2.1构造函数 2.1.1无参的构造函数 2.1.2支持迭代器的构造函数 2.1.3支持n个val的构造函数 2.2拷贝构造函数 2.2.1写法一(传统写法) 2.2.2写法二(现代写法) 2.3赋值运算符重载函数 2…

PGMP01-概述

1.项目集管理绩效域 2.项目集管理标准的目的 the purpose of the standard for program management 定义:为项目集管理原则、时间和活动提供指导。这些原则、实践和活动被公认为在大多时候适用于大多数项目集,并为项目集管理的良好实践提供了支持。 管理…

tldr命令介绍

tldr命令介绍 安装 TLDR使用 TLDR更新命令仓库 TLDR 是 “Too Long; Didn’t Read” 的缩写,在 Linux中是一个非常有用的工具,旨在为用户提供简洁的命令行工具或程序的使用说明,TLDR的目标是解决传统手册页信息过于繁杂的问题,通过…

独享动态IP是什么?它有什么独特优势吗?

在网络世界中,IP地址扮演着连接互联网的关键角色。随着互联网的发展,不同类型的IP地址也应运而生,其中独享动态ip作为一种新型IP地址,备受关注。本文将围绕它的定义及其独特优势展开探讨,以帮助读者更好地理解和利用这…

使用keras-tuner微调神经网络超参数

目录 随机搜索RandomSearch HyperBand 贝叶斯优化BayesianOptimization 附录 本文将介绍keras-tuner提供了三种神经网络超参数调优方法。它们分别是随机搜索RandomSearch、HyperBand和贝叶斯优化BayesianOptimization。 首先需要安装keras-tuner依赖库,安装命令如…

State of ChatGPT ---- ChatGPT的技术综述

声明:该文总结自AI菩萨Andrej Karpathy在youtube发布的演讲视频。 原视频连接:State of GPT | BRK216HFS 基础知识: Transformer原文带读与代码实现https://blog.csdn.net/m0_62716099/article/details/141289541?spm1001.2014.3001.5501 H…

【GT240X】【06】Linux文本编辑软件vim

目录 一、说明 二、什么是 vim? 三、vi/vim 的使用 3.1 命令模式 3.2 输入模式 3.3 底线命令模式 四、vi/vim 按键说明 4.1 一般模式可用的光标移动、复制粘贴、搜索替换等 4.2 一般模式切换到编辑模式的可用的按钮说明 4.3 一般模式切换到指令行模式的…

案例-博客页面简单实现

文章目录 本文内容只涉及前端1. 内容要求2. 画面展示初始化面演示视频 3. 注意事项4. 代码区js文件夹下的jquery.min.js内容登录代码列表页面创作页面 本文内容只涉及前端 1. 内容要求 登录页面实现博客列表页面实现博客创作页面实现 链接: 开源在线 Markdown 编辑器文本框可…

布草洗涤厂自动统计单据管理打包标签———未来之窗行业应用跨平台架构

一、布草洗涤厂打包标签 二、大酒店楼层送货单 三、独立三联单销售单 四、职员司机统计报表 五、开通方法 扫码开通

大数据新视界 --大数据大厂之 从 Druid 和 Kafka 到 Polars:大数据处理工具的传承与创新

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

[SAP ABAP] 程序调用

示例数据 学生表(ZDBT_STU_437) 程序: Z437_TEST_20241006 代码如下所示 REPORT Z437_TEST_20241006.* 创建跟表或结构同名的工作区 TABLES: zdbt_stu_437.SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.PARAMETERS: p_1 TYPE c LENGTH 4.SELECT-O…

低组装滚珠导轨:承载力强,适应多样工况!

在自动化行业中,高质量、高效率的生产线是确保产品品质和生产效率的关键。而低组装型滚珠导轨作为生产线中的重要组件之一,能够提供精准的直线运动控制,为自动化设备的稳定运行和高精度检测提供可靠支持。 相对于传统的导轨系统来说&#xff…

网站集群批量管理-Ansible-模块管理

1. 概述 1. 自动化运维: 批量管理,批量分发,批量执行,维护 2. 无客户端,基于ssh进行管理与维护 2. 环境准备 环境主机ansible10.0.0.7(管理节点)nfs01 10.0.0.31(被管理节点)backup10.0.0.41(被管理节点) 2.1 创建密钥认证 安装sshpass yum install -y sshpass #!/bin/bash ##…

Renesas R7FA8D1BH (Cortex®-M85)和蓝牙模块通信

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 硬件架构 2.1 系统架构 2.2 蓝牙模块介绍 3 软件实现 3.1 FSP配置参数 3.2 代码实现 3.2.1 驱动函数 3.2.2 功能函数 概述 本文主要介绍Renesas R7FA8D1BH (Cortex-M85)和蓝牙模块通信的…

【leetcode】274.H指数

为了方便,将 citations 记为 cs。 所谓的 h 指数是指一个具体的数值,该数值为“最大”的满足「至少发表了 x 篇论文,且每篇论文至少被引用 x 次」定义的合法数,重点是“最大”。 用题面的实例 1 来举个 🌰&#xff0…

hackmyvm-BaseME靶机

主机发现 sudo arp-scan -l 扫描到本地网络靶机ip:192.168.91.173 nmap扫描 sudo nmap 192.168.91.173 发现靶机开放22端口的ssh服务与80端口的http服务 base64加密 我们访问一下80端口,发现了一串加密信息,判读大概是base64加密 base64加密特征&…

软件无线电4-位同步

在数字通信系统中,同步主要有三种方式,载波同步、位同步和群同步。载波同步指在相干解调时,接收机的解调器需要产生一个与调制载波同频同相的相干载波。载波同步又称为载波恢复。位同步指接收机需要产生一个与调制信号符号速率相同&#xff0…