测试工程师八股文04|计算机网络 和 其他

一、计算机网络 

1、http和https的区别

HTTP和HTTPS是用于在互联网上传输数据的协议。它们都是应用层协议,建立在TCP/IP协议栈之上,用于客户端(如浏览器)和服务器之间的通信。 

①http和https的主要区别在于安全性。http是一种明文传输协议,数据在传输过程中没有加密,容易被窃听和篡改,因此不适合传输敏感信息。而 https是在http的基础上加入了 ssl/tls 加密层,通过加密传输和身份认证,确保信息的安全性和完整性。

②https 常用于需要保护隐私的场景,如网上支付和登录等,而http则适用于不涉及敏感信息的普通网站,例如展示网站。

③另外由于二者使用的是完全不同的连接方式,所以端口号也不一样,http是80端口,https用的是443端口。

2、ssl怎么连接

SSL/TLS 连接的过程大致分为几个步骤。

①首先,客户端向服务器发起连接请求,并告诉服务器它支持的加密方式。

②接着,服务器选择一个双方都支持的加密协议,并发送自己的数字证书给客户端,客户端验证证书的有效性。

③然后,客户端生成一个预主密钥,并用服务器的公钥加密后发送给服务器,双方用这个密钥生成对称密钥开始加密通信

④最后,所有数据传输都通过这个加密通道进行,确保数据的安全性和隐私性。通信结束时,双方会通过发送关闭通知来安全关闭连接。

3、TCP和UDP的区别

TCP 和 UDP 是两种不同的传输层的协议。TCP 是面向连接的,提供可靠的数据传输,保证数据按顺序到达,并有重传机制来确保数据不丢失,因此适用于要求高可靠性的应用,如文件传输和网页浏览。相比之下,UDP 是无连接的,不保证数据的顺序和可靠性,但它速度更快,适用于实时性要求高的场景,如视频通话和在线游戏,因为这些应用可以容忍一些数据丢失或乱序。

复杂版本:

TCP⾯向连接,通过三次握⼿建⽴连接,四次挥⼿接除连接;UDP是⽆连接的,即发送数据之前 不需要建⽴连接,这种⽅式为UDP带来了⾼效的传输效率,但也导致⽆法确保数据的发送成功。

TCP是可靠的通信⽅式。通过TCP连接传送的数据,TCP通过超时重传、 数据校验等⽅式来确保 数据⽆差错,不丢失,不重复,且按序到达;⽽UDP由于⽆需连接的原因,将会以最⼤速度进⾏传 输,但不保证可靠交付,也就是会出现丢失、重复等等问题。 

③TCP⾯向字节流,实际上是TCP把数据看成⼀连串⽆结构的字节流,由于连接的问题,当⽹络出 现波动时,连接可能出现响应问题;UDP是⾯向报⽂的,UDP没有拥塞控制,因此⽹络出现拥塞不 会使源主机的发送速率降低。

④每⼀条TCP连接只能是点到点的;⽽UDP不建⽴连接,所以可以⽀持⼀对⼀,⼀对多,多对⼀和 多对多的交互通信,也就是可以同时接受多个⼈的包。

⑤TCP需要建⽴连接,⾸部开销20字节相⽐8个字节的UDP显得⽐较⼤。

⑥TCP的逻辑通信信道是全双⼯的可靠信道,UDP则是不可靠信道。

4、TCP的三次握手和四次挥手

假设客户端想要停止通信

三次握手用于建立TCP连接,确保双方都准备好进行数据传输。过程是:客户端发起连接请求,服务器响应确认,最后客户端确认服务器的响应,连接就建立起来了。

四次挥手用于安全地终止TCP连接,确保双方的数据传输完成后再断开。客户端发送结束请求,服务器确认后也发送结束请求,最后客户端确认服务器的关闭请求,连接就安全地关闭了。

三次握手保证了连接的可靠性,而四次挥手则确保数据传输完成后能够安全地关闭连接。

5、OSI七层模型

  • OSI模型是⼀个抽象的框架,⽤于理解和设计⽹络系统。它将⽹络通信过程分为七个独⽴的层,每层都有特定的功能。

 ①物理层 (Physical Layer):

  • 负责传输⽐特流的物理连接和电信号。
  • 示例:⽹线、光纤、电缆等。

②数据链路层 (Data Link Layer):

  • 负责在物理链路上的可靠的数据帧传输。将物理层的比特流转换为数据帧,
  • 示例:MAC地址、以太⽹、交换机等。

③⽹络层 (Network Layer):

  • 负责不同⽹络之间数据报,实现⽹络互联。
  • 示例:IP地址、路由器等。

④传输层 (Transport Layer):

  • 负责端到端的通信,如流量控制和差错控制。
  • 示例:TCP、UDP等。

⑤会话层 (Session Layer):

  • 负责建⽴、管理和终⽌应⽤程序之间的会话。
  • 示例:会话管理协议等。

⑥表示层 (Presentation Layer):

  • 负责数据格式的转换、加密和解密。
  • 示例:SSL/TLS(用于加密通信)、JPEG、GIF、MPEG(数据格式化和压缩)。

⑦ 应⽤层 (Application Layer):

  • 负责直接为⽤户提供服务和应⽤接⼝。
  • 示例:HTTP、FTP、SMTP等。

6、常见的http状态码

① 2xx 表示请求成功并得到了预期的响应。

② 3xx 表示需要客户端进行重定向

  • 301 Moved Permanently:永久重定向,请求的资源已被永久移动到新url,客户端应使用新url进行后续请求。
  • 302 Found:临时重定向,请求的资源临时移动到新 URL,客户端可以继续使用原 URL 进行后续请求,且不需要更新缓存。

③ 4xx 表示客户端错误,通常是请求格式或内容的问题。

  • 400 Bad Request:客户端发出的请求有误,服务器无法理解。
  • 404 Not Found:请求的资源不存在。

④ 5xx 表示服务器错误,服务器无法处理请求。

  • 500 Internal Server Error:服务器发生未知错误,无法完成请求。
  • 502 Bad Gateway:作为代理服务器的中介接收到上游服务器的无效响应。

 补充:查看状态码的方法

  • 浏览器开发者工具:适用于前端开发和网页调试。
  • 命令行工具(curl/wget):适合快速查看 HTTP 状态码,特别是当你不想加载整个页面时。
  • Postman:适合进行 API 测试,特别是对于 HTTP 请求和响应的详细分析。
  • 后端日志:适合后端开发和服务器管理,查看日志中的状态码。
  • Fiddler:适合捕获和调试 HTTP 流量,查看请求和响应的状态码。

7、get和post的区别 

ger通常用于从服务器获取数据;post 通常⽤于向服务器提交数据,如提交表单或上传⽂件。

①get请求的参数是放在url里的,post请求的参数放在请求体里。

②get请求可以被浏览器缓存,post不能被缓存。

③因为get请求的参数是放在url里的,而url的长度是受限的,最大是2048个字符,post请求参数的长度是没有限制的。

④同样因为get请求参数是刚在url里的,所以安全性比较差,post请求的参数放在请求体里,所以安全性较好。

⑤get请求可以通过浏览器直接访问,刷新和后退时数据不会丢失,post请求不能被浏览器直接访问,刷新和后退需要重新提交数据。

 8、当在网页属于一个url后,会发生什么

当你输入一个url 后,浏览器会通过以下流程加载网页:

①DNS 解析:浏览器会首先检查是否已有该url对应的 IP 地址缓存。如果有,浏览器会直接使用该地址进行后续的 TCP 连接,。

②TCP 连接:建立与服务器的连接。涉及三次握手四次挥手。

③TLS 握手(如果是 HTTPS):建立加密通信通道。

④HTTP 请求:浏览器向服务器发送请求,获取资源。

⑤服务器响应:服务器处理请求并返回内容。

⑥前端渲染:浏览器解析并渲染页面,加载外部资源。

⑦缓存和 Cookie 处理:浏览器使用缓存加速加载,携带 Cookie 进行会话管理。

二、其他

1、深拷贝和浅拷贝

①浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存(分支)。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此,对新对象所做的修改可能会影响到原始对象,因为它们共享相同的引用。

②深拷贝创建一个新的对象,并且递归地复制整个原始对象,新对象跟原对象不共享内存,修改新对象不会改到原对象,因为它们拥有彼此独立的副本。

③简而言之,浅拷贝是“引用复制”,深拷贝是“完全复制”。

未完。。。 

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

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

相关文章

Firewalld 防火墙全面解析与配置指南

在当今网络环境中,网络安全至关重要,而防火墙作为网络安全的关键防线,在Linux系统中扮演着极其重要的角色。本文将深入探讨Firewalld防火墙,涵盖其基础概念,优势特点,配置方法等多面内容,为您提供全面的Firewalld防火墙知识体系 一,Linux防火墙基础 (一) 防火墙内核…

【C++】inline函数(内联函数)

文章目录 前言一、宏函数的缺陷二、inline函数1.inline函数的展开规则2.inline的设计分析3.inline函数不建议声明和定义分离 前言 C程序频繁调用函数会使代码效率降低,因为创建函数栈帧需要消耗时间。于是C语言引入宏函数的概念,使用宏函数来替代一些功能…

.Net_比对Json文件是否一致

简介 该方法用于比较两个Json文件是否完全一致,仅考虑内容若两个文件中的内容只是顺序不一致,内容是一样的,那么也代表这两个文件是相等的 实现代码 调用 using CompareJsonFiles;Console.WriteLine(" 输入信息 ");Console.WriteL…

Android OpenGLES2.0开发(九):图片滤镜

“当你改变想法的时候,记得也要改变你的世界。”——诺曼文森特皮尔 Android OpenGLES开发:EGL环境搭建Android OpenGLES2.0开发(一):艰难的开始Android OpenGLES2.0开发(二):环境搭…

易语言OCR证件照文字识别

一.引言 文字识别,也称为光学字符识别(Optical Character Recognition, OCR),是一种将不同形式的文档(如扫描的纸质文档、PDF文件或数字相机拍摄的图片)中的文字转换成可编辑和可搜索的数据的技术。随着技…

指针练习题15道【C语言】

1.利用指针变量将一个数组中的数据反向输出。 声明: void work1(int *, int); // 声明反向遍历 void work1_1(int *, int); // 声明正向遍历实现: // 利用指针变量将一个数组中的数据反向输出,反向遍历 void work1( int *p,int len) {p (…

单节点calico性能优化

在单节点上部署calicov3273后,发现资源占用 修改calico以下配置是资源消耗降低 1、因为是单节点,没有跨节点pod网段组网需要,禁用overlay方式网络(ipip,vxlan),使用route方式网络 配置calico-node的环境变量 CALICO_IPV4POOL_I…

openjdk17 从C++视角看 String的intern的jni方法JVM_InternString方法被gcc编译器连接

symbols-unix 文件部分内容 JVM_IHashCode JVM_InitClassName JVM_InitStackTraceElement JVM_InitStackTraceElementArray JVM_InitializeFromArchive JVM_InternString 要理解在 symbols-unix 文件中包含 JVM_InternString 方法的原因,我们需要从构建过程、符号…

在 Spring Boot 3 中实现基于角色的访问控制

基于角色的访问控制 (RBAC) 是一种有价值的访问控制模型,可增强安全性、简化访问管理并提高效率。它在管理资源访问对安全和运营至关重要的复杂环境中尤其有益。 我们将做什么 我们有一个包含公共路由和受限路由的 Web API。受限路由需要数据库中用户的有效 JWT。 现在用户…

K8s HPA的常用功能介绍

Kubernetes 的 Horizontal Pod Autoscaler (HPA) 是一种自动扩展功能,用于根据资源使用情况(如 CPU、内存等)或自定义指标,动态调整 Pod 的副本数量,从而保证应用的性能和资源利用率。 以下是 HPA 的常用功能介绍&…

电子系统中用于降噪的接地

当接地系统中存在EMI、RFI 或由焊机、变速驱动器、电器等引起的电脉冲等干扰时,它们会在中性线和接地之间产生共模噪声,可能会影响电子设备。 国家电气规范 (NEC) 允许安装隔离接地插座 (IG),即磁轭和接地端子之间没有连接。轭是插座后面的金…

SmartX分享:SMTX ZBS 中 RDMA 技术简介

目录 背景如何实现存储网络是什么TCP/IPRDMARDMA 工作原理RDMA 的实现方案 ZBS 支持 RDMA 的要求 参考 背景 我们清楚,分布式存储将利用网络作不同设备的互联。最基础的如TCP/IP的IP SAN,进阶的有FC SAN、IB等等。 SmartX 支持 10G以上的TCP/IP网络作为…

【人工智能数学基础】——深入详解贝叶斯理论:掌握贝叶斯定理及其在分类和预测中的应用

深入详解贝叶斯理论:掌握贝叶斯定理及其在分类和预测中的应用 贝叶斯理论(Bayesian Theory)是概率论和统计学中的一个重要分支,它以托马斯贝叶斯(Thomas Bayes)命名,主要关注如何根据新的证据更…

使用JustAuth实现gittee登录

使用JustAuth实现gittee登录 登录流程&#xff1a; 点击 Github 图标时&#xff0c;调用 handleGiteeLogin获取 Gitee 登录地址并跳转Gitee 授权后&#xff0c;后端进行相关的验证登录等成功后回调到gitee填的回调地址 1.添加依赖 <dependency><groupId>me.zhy…

矩阵的基本知识

例题1&#xff1a;求矩阵最小值&#xff0c;和其所在的行和列 #include<stdio.h> int main() { int arr[10][10]; int g; scanf("%d",&g); int m,n,i,r c; for(i0;i<g;i) { scanf("%d %d",&m,&…

《Vue3实战教程》5:响应式基础

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 响应式基础​ API 参考 本页和后面很多页面中都分别包含了选项式 API 和组合式 API 的示例代码。现在你选择的是 组合式 API。你可以使用左侧侧边栏顶部的“API 风格偏好”开关在 API 风格之间切换。 声明响应式状态…

【后端面试总结】深入解析进程和线程的区别

在操作系统和并发编程中&#xff0c;进程和线程是两个核心概念。它们各自承担着不同的职责&#xff0c;并在多任务处理中发挥着关键作用。本文将从定义、特性、应用场景以及优缺点等多个方面对进程和线程进行详细对比&#xff0c;帮助读者深入理解它们之间的区别。 一、进程和…

QT网络(二):TCP通信

传输层概念 传输控制协议&#xff08;transmission control protocol&#xff0c;TCP&#xff09;是一种被大多数 Internet 网络协议用于数据传输的底层网络协议&#xff0c;它是可靠的、面向流和连接的传输协议&#xff0c;特别适合用于连续数据传输。 应用层在网络模型中的…

【记录50】uniapp安装uview插件,样式引入失败分析及解决

SassError: Undefined variable: "$u-border-color". 表示样式变量$u-border-color没定义&#xff0c;实际是定义的 首先确保安装了scss/sass 其次&#xff0c;根目录下 app.vue中是否全局引入 <style lang"scss">import /uni_modules/uview-ui/in…

std::async 和 std::packaged_task

0、背景 在现代 C 中&#xff0c;std::async 和 std::packaged_task 是两个非常重要的工具&#xff0c;能够帮助我们更好地处理并发和异步操作。它们分别代表了异步执行任务的两种不同的方式&#xff0c;但都可以有效地将任务的执行从主线程或调用线程中分离出来&#xff0c;以…