「QALog」校招测试八股—计网篇(一)

哈喽大家好,我是chowley,QALog创始人,测试开发工程师

这次的测试八股系列专栏由我来主写,给大家带来亿点点硬货,今天是计网系列的第一篇,我总结了市面上主流的测试核心八股,废话少说直接开整!

下面是本期目录: alt

Q1:介绍一下OSI七层模型、每层的作用

从下往上:

  1. 物理层(Physical Layer):负责在物理媒介上透明的传输原始比特流,确保比特流能够在通信媒介上稳定、可靠地传输,而不对传输的数据进行任何形式的处理,主要关注数据的传输速率、电压等物理特性。

  2. 数据链路层(Data Link Layer):处理节点之间的数据帧传输,确保在通信实体之间可靠地传输数据。
    它有两个特性:
    (1)帧编码的目的是为了确保数据能够正确地在物理媒介上传输,并且接收端能够正确地解码和处理接收到的数据。
    (2)误差纠正控制通过在数据帧中添加冗余信息(如校验位、奇偶校验等)来检测和纠正这些错误,从而提高数据传输的可靠性和准确性。

  3. 网络层(Network Layer):负责数据包的路由和转发,实现不同网络之间的通信,如 IP 协议就在这一层工作。

    路由算法可以分为静态路由和动态路由两种类型:
    (1)静态路由(Static Routing):管理员手动配置路由表,指定每个目标网络的下一跳路由器。这种方式适用于网络拓扑结构稳定的情况,但不适合大型或动态网络。
    (2)动态路由(Dynamic Routing):路由器之间通过路由协议(如RIP、OSPF、BGP等)交换路由信息,根据网络状态动态调整路由表。动态路由能够自适应网络变化,适用于大型复杂网络。

  4. 传输层(Transport Layer):提供端到端的数据传输服务,负责数据的可靠传输和流量控制,如 TCP 协议。

  5. 会话层(Session Layer):负责建立、管理和终止会话,为应用程序之间的通信提供服务。保证了通信的可靠性和有效性,使得不同终端的程序之间能够进行有效的数据交换。

  6. 表示层(Presentation Layer):处理数据的表示格式,确保一个系统的应用层数据可以被另一个系统理解。涉及到编解码、加密解密、压缩解压缩等。

  7. 应用层(Application Layer):为用户提供应用服务,是用户直接接触的网络层,常见的应用有 HTTP、FTP、SMTP 等。

OSI层级按照功能划分,每一层都有特定的任务和责任,层级之间协同工作以实现用户数据的传输和通信。

Q2:讲一下计网中常用的协议有哪些?

我以市面上主流的五层模型来讲解:

  1. 物理层:主要协议有 RS-232、RS-485、Ethernet 等,用于在物理媒介上传输比特流。

  2. 数据链路层:主要协议有以太网(Ethernet)、PPP(Point-to-Point Protocol)、HDLC(High-Level Data Link Control)等,用于在直接相连的节点之间传输数据帧。

  3. 网络层:主要协议有 IP(Internet Protocol)、ICMP(Internet Control Message Protocol)、ARP(Address Resolution Protocol)等,用于在不同网络之间传输数据包,并处理数据包的路由和转发。

  4. 传输层:主要协议有 TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等,用于在端到端的通信中提供可靠的数据传输服务。

  5. 应用层:主要协议有 HTTP(HyperText Transfer Protocol)、FTP(File Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)等,用于不同应用之间的数据交换和通信。

这些协议在计算机网络中起着至关重要的作用,通过协议规定了数据的传输格式、通信规则和传输方式,保证了网络通信的正常进行。

Q3:TCP/IP模型呢?

TCP/IP 模型是一个将网络通信划分为四个层次的参考模型,与 OSI 模型类似,但具有更简单的结构。它包括以下四层:

  1. 应用层:提供用户应用程序间的通信。包括 HTTP、FTP、SMTP 等协议。

  2. 传输层:负责端到端的通信。包括 TCP 和 UDP 协议。

  3. 网络层:负责将数据包从源主机传输到目的主机。包括 IP、ICMP、ARP 等协议。

  4. 链路层:负责将数据帧从一个节点传输到相邻节点。包括以太网、PPP 等协议。

TCP/IP 模型中的每一层都有特定的功能和责任,协同工作以实现网络通信。与 OSI 模型不同,TCP/IP 模型将会话层、表示层和物理层的功能合并到了应用层和链路层中,使得模型结构更简单、更实用。

Q4:说一下HTTP和HTTPS的区别

HTTP(HyperText Transfer Protocol)和 HTTPS(HTTP Secure)是用于传输数据的两种协议,它们之间的主要区别在于安全性和加密方式:

  1. 安全性:HTTP 是一种不安全的协议,数据传输是明文的,容易被窃听和篡改。而 HTTPS 则通过 SSL/TLS 协议加密数据传输,运行在TCP上,提供了更高的安全性,能够有效防止数据被窃听和篡改。

  2. 加密方式:HTTPS 使用 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议来加密数据传输。SSL/TLS 使用公钥加密和私钥解密的方式,保证数据在传输过程中的机密性和完整性。

  3. 端口号:HTTP 默认使用端口 80 进行通信,而 HTTPS 默认使用端口 443。

  4. URL 形式:HTTP 的 URL 以 "http://" 开头,而 HTTPS 的 URL 以 "https://" 开头。

总的来说,HTTPS 比 HTTP 更安全,适用于对数据传输安全性要求较高的场景,如网上支付、用户登录等。

Q5:介绍一下HTTP状态码

HTTP 状态码是服务器向客户端返回的一个三位数字代码,用于表示服务器对请求的处理结果。常见的 HTTP 状态码有以下几类:

  • 1xx(信息性状态码):表示请求已被接收,继续处理。

  • 2xx(成功状态码):表示请求已成功被服务器接收、理解、并接受。

    • 200 OK:请求成功。常用于 GET 和 POST 请求。
  • 3xx(重定向状态码):表示需要客户端进一步的操作才能完成请求。

    • 301 Moved Permanently:永久重定向,请求的资源已被永久移到新位置。

    • 302 Found:临时重定向,请求的资源已被临时移到新位置。

  • 4xx(客户端错误状态码):表示客户端发出的请求有错误。

    • 400 Bad Request:客户端请求存在问题(如请求方法错误、参数不合理等),服务器无法理解。

    • 401 Unauthorized:请求要求用户的身份认证,通过后才能访问资源。

    • 403 Forbidden:服务器理解客户端的请求,但是拒绝执行此请求。

    • 404 Not Found:服务器无法找到请求的资源(或不存在)。

  • 5xx(服务器错误状态码):表示服务器在处理请求时发生了错误。

    • 500 Internal Server Error:服务器遇到了一个未曾预料的状况,导致无法完成对请求的处理。

    • 503 Service Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常(当前很忙)。

熟悉HTTP 状态码可以帮助测试人员,快速定位和解决网络请求中出现的问题,对于调试和排查网络请求错误非常有用。

插播一条广告:

我们正在组建测试开发方向的求职交流社区,如果您对软件质量管理、团队工作效率提高内容感兴趣,可以持续关注我的账户,会持续发布相关内容!

广告结束,继续拷打!

Q6:结合网络模型,说一下URL的请求过程

URL(Uniform Resource Locator)是用于定位和访问互联网资源的地址,其请求过程可以结合网络模型(比如 TCP/IP 模型)来解释。
一个简单的 URL 请求过程:

  1. 应用层:用户在浏览器中输入 URL,浏览器根据 URL 中的协议(比如 HTTP、HTTPS)选择相应的传输协议。

  2. 传输层:浏览器通过传输层协议(如 TCP)与服务器建立连接。TCP 协议负责将数据可靠地传输到目标服务器。

  3. 网络层:根据 URL 中的主机名(如 baidu.com),浏览器通过DNS 解析获取服务器的 IP 地址,并使用 IP 协议找到目标服务器。

  4. 数据链路层:数据被封装成数据帧,在物理媒介上传输。

  5. 物理层:数据在物理媒介上传输,比如通过以太网、Wi-Fi 等传输方式。

  6. 服务器端:服务器接收到请求后,根据 URL 中的路径和其他信息,处理请求并返回相应的数据。

  7. 反向传输:服务器将响应数据封装成数据包,并通过网络层、传输层传输到客户端。

  8. 客户端:客户端接收到响应数据后,根据协议解析数据,并在应用层上显示给用户。

这样,通过网络模型的各层协议,浏览器和服务器之间就完成了一次 URL 请求和响应的过程。

Q7:简单讲一下HTTP不同版本之间的区别和各自的特点

HTTP的版本包括 HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2 和 HTTP/3,它们之间的区别主要体现在性能、功能和协议特性上:

  1. HTTP/0.9

    最早的版本,只支持 GET 方法,没有头部信息,服务器收到请求后返回 HTML 格式的文档。
    没有状态管理机制,每个请求都是独立的,无法维护客户端的状态。

  2. HTTP/1.0

    引入了头部信息,支持更多的请求方法,如 POST、PUT、DELETE 等。
    支持状态码、缓存控制等功能,使得通信更加可靠和灵活。

  3. HTTP/1.1

    引入了持久连接(Persistent Connections),减少了建立和关闭连接的开销,提高了性能。
    引入了管道化(Pipeline),允许客户端发送多个请求,而不必等待响应,提高了并发性能。
    引入了 Host 头部字段,支持在同一个 IP 地址上托管多个域名。

  4. HTTP/2

    采用了二进制协议,取代了 HTTP/1.x 中的文本协议,减少了数据传输的开销。
    引入了多路复用(Multiplexing),允许在同一个连接上并行发送多个请求和响应,提高了并发性能。
    支持头部压缩(Header Compression),减少了头部信息的传输大小,提高了性能。

  5. HTTP/3

    基于 UDP 协议,通过 QUIC 协议实现,以减少 TCP 连接的握手时间。
    支持 0-RTT(Zero Round Trip Time Resumption),在一定条件下可以实现零往返时间连接。
    引入了拥塞控制、丢包恢复等机制,以提高传输的稳定性和可靠性。

总的来说,随着 HTTP 版本的不断更新,HTTP 协议在性能、功能和安全性方面得到了不断的改进和提升,使得 Web 应用能够更加高效、快速地进行通信和数据传输。

Q8:HTTP有哪些请求方法?介绍一下它们各自的作用

HTTP 协议常见的请求方法包括以下几种:

  1. GET:请求获取指定资源的表示形式。使用 GET 方法应该只用于获取数据,而不应该对服务器产生其他影响。例如,请求一个网页、图片或其他资源。

  2. POST:向指定资源提交数据,请求服务器进行处理。POST 请求可能会导致新的资源的创建或已有资源的修改。常用于提交表单数据,如用户登录、注册等。

  3. PUT:请求服务器存储一个资源,并用请求的数据替代指定的资源。如果指定的资源不存在,则创建一个新的资源。

  4. DELETE:请求服务器删除指定的资源。

  5. HEAD:类似于 GET 请求,但服务器只返回头部信息,不返回实体的主体部分。用于获取资源的元信息,如资源的大小、类型等,而不获取实际的内容。

  6. OPTIONS:请求获取服务器支持的 HTTP 方法。客户端可以通过该方法来查询服务器支持的方法,用于跨域请求时的预检请求。

  7. TRACE:回显服务器收到的请求,主要用于测试或诊断。

  8. CONNECT:建立一个到服务器的隧道,用于代理服务器。

Q9:GET和POST有啥区别?

GET 和 POST 是 HTTP 协议中最常用的两种请求方法,它们之间的主要区别如下:

  1. 数据传输方式

    GET:通过 URL 参数传输数据,数据会附加在 URL 后面,以 ?key1=value1&key2=value2 的形式出现。
    POST:通过请求体传输数据,数据不会附加在 URL 中,而是作为请求的一部分发送。

  2. 数据长度限制

    GET:由于数据是作为 URL 参数传输的,受浏览器和服务器对 URL 长度的限制,传输的数据量较小,一般不超过 2048 个字符。
    POST:由于数据是作为请求体传输的,通常没有长度限制,可以传输大量数据。

  3. 安全性

    GET:因为数据是以明文形式出现在 URL 中,所以不适合传输敏感信息,如密码等。
    POST:由于数据是作为请求体传输的,相对于 GET 更安全,适合传输敏感信息。

  4. 缓存处理

    GET:请求会被浏览器缓存,可以通过浏览器的历史记录来访问。
    POST:请求不会被浏览器缓存,需要重新提交数据。

  5. 幂等性

    GET:请求是幂等的,多次请求相同的 URL 会得到相同的结果,不会对服务器产生影响。
    POST:请求不是幂等的,多次请求相同的 URL 可能会对服务器产生不同的影响,比如重复提交订单。

GET 适合用于获取数据,POST 适合用于提交数据。在选择使用哪种方法时,应根据具体的需求和数据传输方式来决定。

Q10:幂等性是啥意思?怎么保证一个按钮的幂等性?

幂等性是指对同一操作的多次执行所产生的影响相同,即使操作被执行多次也不会产生额外的影响。在 HTTP 协议中,幂等性指的是对同一个 URL 的多次请求所产生的结果是相同的。

要保证一个按钮的幂等性,可以采取以下措施:

  1. GET 请求幂等性:对于纯粹的数据获取操作,如查看页面、检索数据等,可以使用 GET 请求,因为 GET 请求是幂等的,多次请求同一个 URL 不会产生额外的影响。

  2. 使用唯一标识符(UID):对于需要修改或删除数据的操作,可以在请求中包含一个唯一标识符(如资源的 ID),服务器根据这个标识符来识别要修改或删除的资源,保证多次请求不会产生冲突。

  3. 使用重复提交检测:在客户端或服务器端进行重复提交检测,防止同一个请求被多次提交。

  4. 使用事务:在数据库操作中,可以使用事务来保证操作的原子性,即使操作被执行多次也不会产生额外的影响。

总结

本篇内容我主要串联了计算机网络体系、每层的作用和常用协议、以及HTTP的相关重要知识点等内容,如果您觉得写得还不错,欢迎关注《QALog校招测试八股—计网篇》系列,后面会持续更新!

以上就是本文的全部内容,如有问题可留言讨论或分享给您的朋友一起学习!

我们正在组建测试开发方向的求职交流社区,如果您对软件质量管理、团队工作效率提高内容感兴趣,可以持续关注我的账户,会持续发布相关内容!

欢迎点赞、评论、收藏,it's important for me.

Searching for QALog

#春招##校招##秋招##面试##面经#

哈喽大家好,我是chowley,QALog创始人,测试开发工程师 这次的测试八股系列专栏由我来主写,给大家带来亿点点硬货,我总结了市面上主流的测试方向——计算机网络核心八股,废话少说直接开整!

全部评论
大家在面试中最常被问到的计网八股是哪个呢?和大家分享一下吧
1 回复 分享
发布于 02-28 16:16 北京
那必须是握手,啥岗都问,和问我名字差不多了
点赞 回复 分享
发布于 03-01 02:53 安徽
这是gpt回答吧。。
点赞 回复 分享
发布于 03-14 07:25 北京

相关推荐

24 146 评论
分享
牛客网
牛客企业服务