测试开发面试题---计算机网络
计算机网络模型
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,也可能是域名…...

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可以集成很多软件,可以帮助我们持续集成我们的工程项目,对于我们测试来说&…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...