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

测试开发面试题---计算机网络

计算机网络模型

OSI模型:七层模型

  • 物理层:定义电气特征,机械特征等功能规范,传递实际比特流
  • 数据链路层:物理地址寻址(MAC),帧的传输,错误检测和纠正
  • 网络层:路由选择,逻辑地址寻址,数据包转发
  • 传输层:端到端的传输,提供差错控制、流量控制和拥塞控制
  • 会话层:建立维护和终止会话
  • 表示层:数据的加解密、压缩和格式转化
  • 应用层:提供应用层之间的接口,处理用户需求

TCP/IP模型

  • 网络接口层:物理地址寻址,帧传输
  • 网络层:路由选择、逻辑寻址和数据包转发
  • 传输层:提供端到端的通信、数据流控制和差错控制
  • 应用层:提供应用程序之间接口

TCP如何保证可靠传输

使用三次握手建立可靠连接

客户端首先向服务器发送请求连接,服务器收到后回复同步确认包,客户端收到后会回复确认包

使用序列号和确认机制保证数据传输的完整性

每个字节数据分配一个序列号,接收方通过确认号来确认收到的数据,如果发送方超时未收到确认就会重传数据包

流量控制和拥塞控制来避免网络阻塞

流量控制

TCP使用滑动窗口实现流量控制,发送方和接收方各自维护了一个滑动窗口,用于跟踪已发送未确认和允许发送的数据

拥塞控制

TCP的拥塞控制是动态调整数据发送速率来确保网络资源高效利用

  • 慢启动:初始时,拥塞窗口设置为一个人很小的值,每收到一个ACK,拥塞窗口会增加一个报文长度使得发送速率呈指数增长,直到达到慢启动阈值。
  • 拥塞避免:当检测到网络开始出现阻塞时,TCP进行阻塞避免,窗口的增长变为线性
  • 快重传:如果接受方发现失序ACK会向发送方迅速发送多个ACK,发送方接收到以后会立即重传,无需等待重传计时器
  • 快恢复:发送窗口设置为收到ACK前窗口的一半,并采用线性增长,避免再次阻塞

四次挥手终止连接 

Get和Post的区别

  • Get:数据参数包含在URL中,URL的长度有限制,不同的浏览器和服务器的限制不同;参数可见于URL中,可能包含敏感信息,容易被缓存或记录在浏览器中;多次相同的请求会得到一致的结果。
  • Post:数据参数在http正文中,URL的长度没有限制,理论上可以传输大量数据;参数不可见与URL中,相对安全,不会被缓存或者记录在浏览器中,多次相同的请求得到的结果不同。

HTTP长连接

长连接是相对于短链接而言的,短链接是指每次请求都会建立连接,请求完毕后再关闭连接。长连接则是每次请求完毕后不关闭连接,即请求可以复用连接。

HTTP实现长连接方式

  • 在发送请求时,客户端会在请求头中包含connection-keep alive表明自己想与服务器建立连接,并且在请求完毕后不关闭连接。
  • 服务器会回复客户端一个connection-keep alive确认并同意长连接

长连接优点

  • 减少了连接创建和关闭的开销,提高了通信效率
  • 对于频繁请求的场景可以减少延迟

HTTP1.0/1.1/2的区别

  • HTTP1.0采用短链接,每次请求都需要建立连接
  • HTTP1.1引入长连接,它采用分块传输方法,即每产生一个数据就发送一个数据
  • HTTP2完全多路复用,接收方和发送方可以同时接受和发送多条消息,具有服务器推送功能,即服务器可以未经客户端的允许推送信息,报头压缩。

HTTPS的工作流程

  • 客户端向服务器发送请求连接,服务器收到以后将自己的证书发送给客户端,证书中包含有效期、公钥和证书颁发机构等
  • 客户端收到证书后会检查证书的有效性,如果有效则随机生成一段数字并使用公钥进行加密发送给服务器
  • 服务器接收到以后解密,客户端与服务器建立连接开始通信

DSN解析过程

客户端首先会检查浏览器缓存,如果没有找到对应的IP地址就会去查询本地域名服务器,如果还没有找到就开始递归查询,本地域名服务器会向根域名服务器进行查询,根域名服务器不会给出IP地址,而是告诉本地域名服务器应该去那个顶级域名服务器查找,本地域名服务器像顶级域名服务器发起查找,顶级域名服务器会返回一个权限域名服务器列表,本地域名服务器任选一个权限域名服务器进行查询。

ARP工作流程

  • ARP请求:当一个主机与另一个主机进行通信时,首先检查自己ARP缓存中是否有目标对象对应的IP地址,如果没有就开始启动ARP查询过程
  • 广播ARP请求:源主机发送一个ARP请求,包括目的主机的IP地址和MAC地址(MAC地址设置为FF:FF:FF:FF:FF表示所有的主机都可以收到该请求)
  • 网络上所有主机都会收到这个ARP请求但只要目标主机会对请求进行响应
  • 目标主机会将源主机的IP地址和MAC地址,目标主机的IP地址和MAC地址封装在一起发送给源主机
  • 源主机接收到以后会提取目标主机的IP地址和MAC地址并更新到自己ARP缓存中

从浏览器输入URL显示到主页

  • DNS解析查找域名对应的IP地址
  • 与服务器通过三次握手建立连接
  • 向服务器发送HTTP请求
  • 服务器处理请求,返回网页内容
  • 浏览器解析并渲染页面
  • TCP四次挥手终止连接

对称加密和非对称加密

  • 对称加密:加密密钥和解密密钥相同,密钥必须保密并在通信双方之间共享,算法高效适合加密大量数据
  • 非对称加密:加解密使用一对密钥,一个公钥一个私钥,公钥可以公开,私钥则必须加密。效率较低,不适合加密大量数据。

cookie和session的区别

  • cookie是客户端的存储机制,服务端会将某一状态以key-value形式写入客户端中,客户端下次访问时会携带这些状态信息发送给服务端,服务端会根据cookie内容识别使用者
  • session是服务端保存机制,它会为每个会话创建一个SessionID并存入用户cookie中

因为session是服务器的存储机制,因此它会比cookie更加安全,同时cookie有数据量的限制而session则没有,所以cookie适合存储数据量小且不敏感的数据,session则适合处理数据量大比较敏感的数据。

DOS、DDOS和DRDOS

  • DOS(拒绝服务攻击):攻击者使用单个计算机向系统发送大量请求导致目标计算机或者网络资源过载,无法响应用户请求。
  • DDOS(分布式拒绝服务攻击):攻击者使用多个计算机向系统发送大量请求,由于攻击源比较广泛且难以追踪,因此DDOS更具有攻击性
  • DRDOS(分布式反射拒绝服务):利用第三方服务器作为反射器,将受害者IP设为源IP地址向多个反射服务器发送请求,这些服务器接收到请求后向受害者发送大量数据,导致其无法正常工作。

相关文章:

测试开发面试题---计算机网络

计算机网络模型 OSI模型:七层模型 物理层:定义电气特征,机械特征等功能规范,传递实际比特流数据链路层:物理地址寻址(MAC),帧的传输,错误检测和纠正网络层:…...

Wonder3D 论文学习

论文链接:https://arxiv.org/abs/2310.15008 代码链接:https://github.com/xxlong0/Wonder3D 解决了什么问题? 随着扩散模型的提出,3D 生成领域取得了长足进步。从单张图片重建出 3D 几何是计算机图形学和 3D 视觉的基础任务&am…...

【MySQL进阶之路 | 高级篇】显式事务和隐式事务

使用事务有两种方式:显式事务和隐式事务。 1. 显式事务 步骤1: START TRANSACTION或者BEGIN,作用是显式开启一个事务。 START TRANSACTION语句相较于BEGIN特别之处在于,后面能跟几个修饰符。比如: READ ONLY&…...

Ruby、Python、Java 开发者必备:Codigger之软件项目体检

在编程的广阔天地里,Ruby、Python 和 Java 开发者们各自凭借着独特的语言特性,构建着精彩纷呈的应用世界。然而,无论使用哪种语言,确保项目的高质量始终是至关重要的目标。而 Codigger 项目体检则成为了实现这一目标的得力助手&am…...

day05 Router、vuex、axios

配置 router和vuex需要在创建vue项目的时候,开始的时候选择Manually select features,于是就可以在下一个创建配置讯问中选择router和vuex。 axios则需要执行命令行: npm install axios -S 之后再在需要发送请求的view导入即可。 router…...

yolov5-7在opencv里跑自己的onnx模型

先把模型放在如下目录 运行如下代码 import cv2 import numpy as npclass Onnx_clf:def __init__(self, onnx:strdnn_model1/plane02.onnx, img_size640, classlist:list[plane]) -> None: func: 读取onnx模型,并进行目标识别para onnx:模型路径img_size:输出图片大小,和模…...

JVM 11 的优化指南:如何进行JVM调优,JVM调优参数有哪些

这篇文章将详细介绍如何进行JVM 11调优,包括JVM 11调优参数及其应用。此外,我将提供12个实用的代码示例,每个示例都会结合JVM启动参数和Java代码。 本文已收录于,我的技术网站 java-broke.site,有大厂完整面经&#x…...

nginx的配置和使用

一、nginx支持win和linux版本的下载,选择合适的版本进行安装 二、配置文件注解 重点的几个参数进行注释: 1、listen 要监听的服务的端口,符合这个端口的才会被监听 server_name要监听的服务地址,可能是ip,也可能是域名&#xf…...

mysql面试(六)

前言 本章节详细讲解了一下mysql执行计划相关的属性释义,以及不同sql所出现的不同效果 执行计划 一条查询语句经过mysql查询优化器的各种基于成本和各种规则优化之后,会生成一个所谓的 执行计划,这个执行计划展示了这条查询语句具体查询方…...

6.乳腺癌良性恶性预测(二分类、逻辑回归、PCA降维、SVD奇异值分解)

乳腺癌良性恶性预测 1. 特征工程1.1 特征筛选1.2 特征降维 PCA1.3 SVD奇异值分解 2. 代码2.1 逻辑回归、二分类问题2.2 特征降维 PCA2.3 SVD奇异值分解 1. 特征工程 专业上:30个人特征来自于临床一线专家,每个特征和都有医学内涵;数据上&…...

Vue3响应式高阶用法之markRaw()

Vue3响应式高阶用法之markRaw() 文章目录 Vue3响应式高阶用法之markRaw()一、简介二、使用场景2.1 避免性能开销2.2 防止意外修改 三、基本使用3.1 标记对象 四、功能详解4.1 markRaw与reactive的区别4.2 markRaw与ref的区别 五、最佳实践及案例5.1 使用大型第三方库对象5.2 静…...

免费SSL证书的安全性与获取指南

SSL证书是一种数字凭证,用于加密用户与网站之间的信息交换,以确保传输的数据不被第三方窃取。它像是一个数字版的密封印章,为数据的传输过程提供了一层保护膜。 免费的SSL证书通常由CA机构提供,它们同样可以提供基础数据的加密服…...

【CN】Argo 持续集成和交付(一)

1.简介 Argo 英 [ˈɑ:ɡəu] 美 [ˈɑrˌɡo] Kubernetes 原生工具,用于运行工作流程、管理集群以及正确执行 GitOps。 Argo 于 2020 年 3 月 26 日被 CNCF 接受为孵化成熟度级别,然后于 2022 年 12 月 6 日转移到毕业成熟度级别。 argoproj.github.i…...

Unity3D 自定义Debug双击溯源问题详解

前言 在Unity3D的开发过程中,经常需要处理各种交互和事件,其中双击事件是常见的需求之一。然而,由于Unity自带的双击检测机制并不完善,开发者往往需要自定义实现以满足特定需求。本文将详细介绍如何在Unity3D中自定义Debug双击溯…...

环境搭建-Docker搭建ClickHouse

Docker搭建ClickHouse 一、前言二、ClickHouse安装2.1 拉取镜像运行ClickHouse服务 三、测试安装3.1 进入clickhouse容器3.2 命令补充说明 四、测试连接五、设置CK的用户名密码 一、前言 本文使用的Docker使用Windows搭建,Linux版本的搭建方式一样。 Windows系统搭…...

深入理解CSS中的变量(概念篇)

CSS变量,也称为自定义属性,是一种在CSS中定义和重用值的方式。它们允许开发者在一个地方定义样式值,然后在整个样式表中引用这些值,从而提高代码的可维护性和可读性。 1、定义和使用CSS变量 CSS变量的定义和使用非常简单。变量名以两个连字符开头,变量值为任何有效的CSS…...

Prometheus 监控Tomcat等java应用的状态

5月应用服务出现问题,当别的小伙伴问我,有没有Tomcat等应用状态的监控的时候,我有点儿尴尬。所以赶紧抽空部署一下。 在配置之前,就当已经会安装jdk和tomcat了。 一、下载jmx_exporter #linux下 cd /usr/local/prometheus wget …...

c++中的斐波那契数列(Fibonacci Sequence)和背包问题(Knapsack Problem)

前言 hello,大家好啊,我是文宇,不是文字,是文宇哦。 斐波那契数列(Fibonacci Sequence) 斐波那契数列(Fibonacci Sequence)是一个经典的数学问题,其中每个数都是前两个…...

connect的非阻塞模式

本文参考:connect 函数在阻塞和非阻塞模式下的行为 一般情况下,在使用connect连接服务端时,需要等待一会儿才会函数才会返回,导致程序阻塞。为了降低阻塞的影响,我们可能会单独开个线程处理connect请求,例…...

jenkins面试题全集

1. 简述什么是Jenkins ? Jenkins是一个开源的持续集成的服务器,Jenkins开源帮助我们自动构建各类项目。 Jenkins强大的插件式,使得Jenkins可以集成很多软件,可以帮助我们持续集成我们的工程项目,对于我们测试来说&…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

深度学习习题2

1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...