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

计算机网络面试常见题目(一)

计算机网络面试中常见的问题涉及多个层面,包括网络协议、网络体系结构、网络安全、数据传输等。以下是一些常见题目的详解:

1. OSI七层模型是什么?每层的功能是什么?

OSI七层模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,它从上到下分别是:

  1. 应用层:为应用程序提供交互服务,如HTTP、FTP、SMTP等协议。
  2. 表示层:数据的表示、安全、压缩,将应用层的数据转换为适合网络传输的格式。
  3. 会话层:建立、管理、终止会话,组织和协调两个会话进程之间的通信。
  4. 传输层:负责向两台主机进程之间的通信提供数据传输服务,包括TCP和UDP协议,实现数据的可靠传输。
  5. 网络层:选择合适的路由和交换结点,确保数据及时传送,主要协议为IP。
  6. 数据链路层:在两个相邻节点之间传送数据时,将网络层交下来的IP数据报组装成帧,并添加必要的控制信息。
  7. 物理层:实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽传输介质和物理设备的差异。

2. TCP和UDP的区别是什么?

TCP(传输控制协议)和UDP(用户数据报协议)都是传输层的协议,它们的主要区别包括:

  1. 连接性:TCP是面向连接的协议,在传输数据前需要建立连接;而UDP是无连接的协议,发送数据前不需要建立连接。
  2. 可靠性:TCP提供可靠传输,通过序列号、确认应答、超时重传等机制确保数据正确传输;UDP则不提供可靠性保证,数据可能丢失或乱序到达。
  3. 传输效率:由于TCP需要建立连接和进行可靠性校验,因此其传输效率相对较低;而UDP没有这些开销,传输效率较高。
  4. 应用场景:TCP适用于需要可靠传输的应用场景,如文件传输、网页浏览等;UDP适用于对实时性要求较高、可以容忍一定数据丢失的应用场景,如视频直播、在线游戏等。

3. HTTP和HTTPS的区别是什么?

HTTP(超文本传输协议)和HTTPS(安全的超文本传输协议)的主要区别在于安全性:

  1. 安全性:HTTP传输的是明文,数据容易被截获和篡改;而HTTPS在HTTP的基础上增加了SSL/TLS协议层,对数据进行加密传输,确保数据传输的安全性。
  2. 端口号:HTTP默认使用80端口;HTTPS默认使用443端口。
  3. 性能:由于HTTPS需要进行加密和解密操作,因此其性能相比HTTP会有所下降。

4. TCP三次握手和四次挥手的过程是什么?

TCP三次握手的过程如下:

  1. 客户端发送一个SYN包(同步序列编号)到服务器,并进入SYN_SENT状态,等待服务器确认。
  2. 服务器收到SYN包后,确认客户端的SYN(ack=j+1),同时自己也发送一个SYN包(即SYN+ACK包),此时服务器进入SYN_RCVD状态。
  3. 客户端收到服务器的SYN+ACK包后,向服务器发送一个确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

TCP四次挥手的过程如下:

  1. 客户端发送一个FIN,用来关闭客户端到服务器的数据传送,客户端进入FIN_WAIT_1状态。
  2. 服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务器进入CLOSE_WAIT状态。
  3. 服务器关闭与客户端的连接,发送一个FIN给客户端,服务器进入LAST_ACK状态。
  4. 客户端收到FIN后,发一个ACK给服务器,确认序号为收到序号+1,客户端进入TIME_WAIT状态。服务器收到ACK后关闭连接,客户端等待2MSL后依然没有收到回复,则进入CLOSED状态。

5. 为什么TCP需要三次握手而不是两次?

TCP需要三次握手而不是两次握手的主要原因是确保双方都具有接收和发送数据的能力,从而建立可靠的连接。具体来说:

  • 第一次握手:客户端发送SYN包,服务器确认客户端的发送能力。
  • 第二次握手:服务器发送SYN+ACK包,客户端确认服务器的接收能力和发送能力。
  • 第三次握手:客户端发送ACK包,服务器确认客户端的接收能力。

如果只有两次握手,可能会出现以下情况:客户端发送连接请求,但因连接请求报文丢失而未收到确认,于是客户端再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接,客户端共发出了两个连接请求报文段,其中第一个丢失,第二个到达了服务端。但是第一个丢失的报文段只是在某些网络结点长时间滞留了,延误到连接释放以后的某个时间才到达服务端,此时服务端误认为客户端又发出一次新的连接请求,于是就向客户端发出确认报文段,同意建立连接。由于此时客户端已经没有发送数据请求,因此服务端将一致等待客户端发送数据,造成资源浪费。

6. HTTP常用的请求方式有哪些?它们之间的区别和用途是什么?

HTTP常用的请求方式包括GET、POST、PUT、DELETE、CONNECT、OPTIONS和TRACE等,其中GET和POST是最常用的两种。

  • GET:用于发送请求以获取服务器上的数据。参数包含在URL中,适用于请求的数据量不大且对安全性要求不高的场景。
  • POST:用于向URL指定的资源提交数据。参数通过请求体传递,适用于提交大量数据或对安全性要求较高的场景。

其他请求方式如PUT、DELETE等分别用于修改服务器上的数据、删除服务器上的资源等。这些请求方式各有其特定的用途和适用场景。

以上是对计算机网络面试中常见题目的详解。这些题目涵盖了网络协议、网络体系结构、数据传输等多个方面,是考察应聘者计算机网络知识的重要内容。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue3使用pinia中的actions,需要调用接口的话
  • 第三十章 方法大全(Python)
  • SpringBoot | 大新闻项目后端(redis优化登录)
  • 第三方商城对接重构(HF202407)
  • 【第20章】MyBatis-Plus逻辑删除支持
  • Linux查看文件的行数,字数,字节数
  • 207 课程表
  • 如何在PD虚拟机中开启系统的嵌套虚拟化功能?pd虚拟机怎么用 Parallels Desktop 19 for Mac
  • Pytorch(笔记7损失函数类型)
  • 1-5题查询 - 高频 SQL 50 题基础版
  • Floyd
  • 如何给gitlab其他访问者创建账号并增加权限
  • Java+Vue实现电商网站
  • Http中get与post的区别,99%的人都理解错了吧
  • 算法题-回文子串和最长回文子序列
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • canvas 五子棋游戏
  • Effective Java 笔记(一)
  • Github访问慢解决办法
  • JS变量作用域
  • JS学习笔记——闭包
  • laravel5.5 视图共享数据
  • Linux gpio口使用方法
  • PHP 小技巧
  • vue的全局变量和全局拦截请求器
  • Vue实战(四)登录/注册页的实现
  • 设计模式(12)迭代器模式(讲解+应用)
  • 通信类
  • 源码安装memcached和php memcache扩展
  • 在Docker Swarm上部署Apache Storm:第1部分
  • ionic异常记录
  • ​Spring Boot 分片上传文件
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (1) caustics\
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (二)PySpark3:SparkSQL编程
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (接口自动化)Python3操作MySQL数据库
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)Sublime Text3配置Lua运行环境
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .net core使用ef 6
  • .NET Core中的时区转换问题
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .NET开源、简单、实用的数据库文档生成工具
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET业务框架的构建
  • .Net中的集合
  • .vimrc 配置项