作为测试,面试常被问到的计算机网络题,该怎么回答,看这篇文章就ok了

本文整理了常见的计算机网络面试题,包括七层网络模型、TCP/IP的三次握手和四次挥手、TCP与UDP的区别、HTTP状态码、HTTPS的安全性以及用户打开网页的完整流程。帮助面试者准备网络相关的面试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

进行软件测试面试时,相信大家或多或少都会被问到一些关于计算机网络的问题,今天这篇文章就目前反馈比较多的计算机网络面试题及答案做了一个整理,在找工作的你,赶紧看过来~

1. 说一下你理解的七层网络模型?

答案:

应用层: 网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP DNS协议等;

表示层: 数据的表示、安全、压缩的格式;

会话层: 建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会话

传输层: 定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP协议。

网络层: 进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP IP(IPV4 IPV6)

数据链路层: 建立逻辑连接、进行硬件地址寻址功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。

物理层: 建立、维护、断开物理连接。

2. TCP协议的三次握手过程?

答案:

TCP协议要建立连接的时候,需要经历三次握手的过程:

第一次握手: 是客户端向服务器发起的,用来申请建立连接的,这个报文中的SYN标志位标记为1,所以我们也叫作SYN包;

第二次握手:是服务器回复客户端的,用来确认并接受连接请求的,这个报文中的SYN位和ACK位都标记为1,所以叫做SYN-ACK报文;

第三次握手:仍然是客户端发给服务器的,用来确认服务器的回复消息,这个报文中的ACK标志位标记为1,所以我们也叫作ACK包。

这就是TCP协议的三次握手过程。

3. 有了解TCP握手是握几次吗?为什么要握三次手?

答案:

3次。

客户端发送请求建立连接的数据包可能会滞留在网络中,等到后续这个连接断开之后再次到达服务器,那么服务器会发送消息告诉客户端可以发送消息,但是客户端不会理会服务器也不会发送消息,服务器端处于等待状态,会造成资源浪费

4. TCP协议的4次挥手?

答案:

TCP协议完成了数据发送之后,就会断开连接,此时就需要经历四次挥手的过程:

第一次挥手:是客户端向服务器发起的,用来申请断开连接的,这个报文中的FIN标志位标记为1,所以我们也叫作FIN包;

第二次挥手:是服务器回复客户端的,用来确认客户端的上一个断开连接请求的,所以是一个ACK报文;

第三次挥手:仍然是服务器发给客户端的,用来告知客户端服务器的数据发送完毕了,需要断开连接;这个报文中的FIN标志位标记为1,所以也是一个FIN包。

第四次挥手:是客户端回复服务器的,确认服务器的上一个断开连接请求,所以也是一个ACK报文;

这就是TCP协议的四次挥手过程。

5. 为什么握手需要三次,挥手却需要四次呢?

答案:

三次握手是TCP协议建立连接的过程,建立连接,我只需要确认一下你在我也在就好了啊,三次握手够了;

但是四次挥手是TCP协议是为了断开连接的,所以需要确保我既结束发送数据,也结束接收数据;开始客户端先结束发送并告知服务器,服务器确认后就结束接收了;这两次挥手完成后,客户端还在接收数据哦,服务器也还在发送;所以需要服务器也发送一次FIN包,告知我也结束数据发送了,客户端确认后,才双方都关闭发送和接收数据通道,所以必须要四次。

6. tcp和udp的区别?

答案:

TCP协议和UDP协议都是传输层的两个协议: 它们的区别主要有如下3个方面:

第一:TCP是面向连接,就像打电话要先拨号建立连接一样,而UDP是无连接的,即发送数据之前不需要建立连接。

第二:TCP可以提供可靠的服务,能保证数据传输无差错,不丢失,不重复,且按序到达;而UDP协议只是尽最大努力交付,即不保证可靠交付。

第三:因为TCP以上两个特点,所以对应传输效率相对较低,而UDP效率高,所以一些注重速度而不在乎的丢包的场景,会选择用UDP协议,比如IP电话,流媒体等。

7. 你了解http协议有哪些响应状态码?

答案:

状态码有如下几种:

1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态代码。

2xx (成功):表示成功处理了请求的状态代码。

3xx (重定向):表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

4xx(请求错误):这些状态代码表示请求可能出错,妨碍了服务器的处理。

5xx(服务器错误):这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

8. HTTP和HTTPS的区别?

答案:

  1. 从安全性来说:http明文传输,易受攻击,无法确认双方身份,也无法保证数据的完整性;https使用ssl加密传输协议,信息是密文,可以认证双方身份,防止信息被截取篡改,安全性相比http要高
  2. 从端口来看:http默认端口80,https默认端口443
  3. 灵活性上:http简单快速,使用灵活;https技术门槛较高,多数个人或私人网站难以支撑
  4. 访问速度:http协议简单,http服务器的程序规模小,因而通信速度很快;https加重了服务端负担,需要更多的资源来支撑,降低了用户的访问速度
  5. 经济适用度:http没有额外的费用要求,https协议CA机构颁发的证书都是需年费的,此外对接https协议也需要额外的技术支持

9、https协议比http安全,是如何实现的呢?

答案:

https协议通过SSL协议外壳来实现它的安全性,主要体现在三个方面:

第一: 数据是加密的,SSL协议通过非对称秘钥分发的方式完成秘钥的协商,然后通过对称秘钥的加密方式完成数据的加密;

第二:会验证对方身份。服务端和客户端双方会需要向CA机构申请证书,再SSL握手阶段会验证双方证书是否可信,从而验证双方的身份,防止第三方冒充;

第三:保证数据的完整性。每次的数据都会加上MAC摘要并签名,接收的数据和发送的数据这个摘要信息一致的,就表示数据没有被篡改过。

10、当一个用户在浏览器输入url打开一个网页的时候,从输入到加载完整个过程经历了什么?

答案:

  1. 首先它会进行DNS的域名解析;
  2. 建立TCP连接;发起tcp的三次握手
  3. 发送一个HTTP的请求;
  4. 服务器处理相关的请求并返回处理后的结果;
  5. 关闭TCP连接;
  6. 浏览器接收到服务器给到的html代码,开始解析;
  7. 浏览器将解析后的资源(如js、css、图片等)进行请求,并对页面进行渲染呈现给用户。

总结

今天的文章就到这里了,希望各位小伙伴能够早日的成功上岸,喜欢的小伙伴记得点赞收藏评论加关注哟。

### 软考高级系统架构师论文考试方法 软考高级系统架构师的论文部分主要考察考生的实际应用能力以及对复杂问的理解和解决能力。根据以往的经验,论文目通围绕当前热门技术和传统领域展开[^3]。例如,在近几年的考试中,可能会涉及到云原生、无服务架构、区块链等新兴技术的应用场景分析。除此之外,传统的主如软件系统架构设计(包括架构评估、微服务架构)、信息系统规划与集成、软件性能优化等方面也占据重要比例。 #### 论文答技巧 1. **审清晰**:在作答前仔细阅读目要求,明确所要讨论的核心内容及其背景意义。对于涉及具体技术实现的问,则需结合实际案例阐述解决方案的设计思路和技术选型依据。 2. **逻辑严谨**:文章结构应条理分明,建议采用总分总的布局方式——先概述整体观点或方案概览;接着分别论述各个子模块的功能定位及相互关系;最后总结全文并强调该设计方案的优势所在。 3. **理论联系实践**:除了展示扎实的专业功底外,还应该体现出较强的实战经验积累。可以通过列举真实项目的成功经验和失败教训来增强说服力。 4. **注重细节描述**:针对某些关键技术点给予充分解释说明,比如当提到分布式事务处理机制时,不仅要指出其实现原理,还要进一步探讨可能遇到的风险挑战以及相应的规避措施[^2]。 --- ### 备考策略 为了有效应对软考高级系统架构师中的论文环节,可以从以下几个方面着手准备: #### 基础知识巩固 - 掌握计算机硬件、软件及网络方面的基础知识; - 熟悉信息系统开发生命周期各阶段的任务目标及相关活动流程; - 学习见信息技术标准规范,特别是那些被广泛应用于企业级系统的标准协议; - 对主流中间件产品有所了解,并能够根据不同业务需求推荐合适的选择。 #### 技术深度挖掘 深入研究现代软件工程领域的热点话,例如但不限于: - 微服务体系架构下的服务拆分原则和服务治理框架; - 容器编排工具Kubernetes的工作机理及其生态组件构成; - 数据库高可用集群部署模式对比分析; - AI算法模型训练平台搭建指南等等[^3]。 以下是关于Python脚本的一个简单例子用于自动化测试环境配置: ```python import os def setup_test_env(): """设置测试环境""" try: # 创建必要的目录结构 os.makedirs('logs', exist_ok=True) # 初始化数据库连接池参数文件 with open('db_config.ini', 'w') as f: f.write('[DEFAULT]\nhost=localhost\nport=3306') print("Test environment set up successfully.") except Exception as e: print(f"Error occurred during test env setup: {e}") if __name__ == "__main__": setup_test_env() ``` 此代码片段展示了如何利用Python快速构建一个基础版的测试环境初始化程序,这可以作为面试或者笔试过程中展现个人编程技能的一部分实例之一。 #### 实战演练提升 定期参与模拟考试练习,选取历年真进行针对性复习。注意收集整理优秀范文样本加以模仿学习,逐步形成自己独特的写作风格。同时也要善于归纳总结各类典型错误以便日后避免重复犯错[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值