首页 > 其他分享 >计算机网络面试常见题目(一)

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

时间:2024-07-06 22:26:51浏览次数:7  
标签:HTTP 题目 SYN TCP 计算机网络 面试 服务器 连接 客户端

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

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等分别用于修改服务器上的数据、删除服务器上的资源等。这些请求方式各有其特定的用途和适用场景。

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

标签:HTTP,题目,SYN,TCP,计算机网络,面试,服务器,连接,客户端
From: https://blog.csdn.net/m0_55049655/article/details/140236916

相关文章

  • 代码随想录刷题day 4 | 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题
    24.两两交换链表中的节点迭代的版本:最重要的就是要知道循环变量怎么取,对于这道题,我们只需要存储需要交换的两个节点的前一个节点即可,只有当这个节点后面有两个节点时才进入循环,其实把握住这一点之后这题就非常容易了。递归的版本:这道题用递归做简直不要太简单,首先明白递归结束......
  • 公务员考试、事业编考试、教师资格证、面试、K12资料、电子书
    点击上方△@腾阳 关注作者l腾阳  转载请联系授权你好,我是腾阳。在这个自媒体的海洋里,我曾是一只迷失方向的小鸟,多次尝试飞翔却总是跌跌撞撞。但每一次跌倒,都让我更坚定地相信,只要不放弃,总有一天能够展翅高飞。这一次,我满怀激情,准备与大家分享我的故事和见解。......
  • Linux常用面试题
    系统部分1、在linux系统中,获取命令帮助的方法有哪些?   man(查看手册页)    help(查看内部命令)   --help(查看外部命令)2、列举find命令的用法?(主要说明使用的选项及其含义)   find查找文件或目录      -name   根据目标的名称进程查找,允许使......
  • Linux系统管理面试题
    中级系统管理面试题训练内容:1)编译安装源代码的过程?      从官方网站下载源码包校验md5值   解压   tar命令解包      配置   进入解压目录配置,指定对应的模块、解包的路径   编译   源代码编译成二进制文件      安装 ......
  • 题目集7~8
    由于个人原因,最后两次题目集未提交,对自己的放纵感到愧疚,后期的补练我也会抽出时间完成这两道题经过分析,题目集7,是在前面的基础上加上了一个新概念:互斥开关,以及模拟一种受控窗帘,在我的想法,互斥开关便可当作两个普通开关去完成电路,窗帘则是新增一个用电器。题目集8,有以下新增内容......
  • 面试官:Java线程可以无限创建吗?
    哈喽,大家好......
  • 个人python面试准备的一些题型
    Python类方法vs静态方法类方法(ClassMethods)类方法使用@classmethod装饰器定义,它们的第一个参数通常命名为cls,代表类本身。特点:可以访问和修改类的状态不能访问实例的状态可以用来定义替代构造器示例:classMyClass:class_variable=0@classmethoddefi......
  • 《计算机网络 A》复习提纲
    第一章概述1、互联网发展的三个阶段。2、指定互联网的正式标准的三个阶段:互联网草案,建议标准,互联网标准3、互联网的组成:边缘部分(资源子网)和核心部分(通信子网)4、端到端的通信方式:对等方式(P2P方式)和客户-服务器方式(C/S方式)5、计算机网络的数据交换技术:电路交换:线路建......
  • 骑士出行-题目+答案
    题目描述:国际象棋中的骑士(走日字型),从棋盘上一个点走到另一个点最少需要几步。(起点记作0步)输入格式:第一行输入一个整数n,表示棋盘的大小为n∗n,棋盘两个维度的坐标都是从0到n-1接下来两行,每行两个整数分别表示出发点的坐标与终点的坐标。输出格式:输出一个整数,表示最小......
  • Java面试题系列 - 第4天
    题目:深入理解Java泛型与类型擦除背景说明:Java泛型是JavaSE5引入的一种新特性,它允许在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。然而,Java泛型的实现背后有一个重要的概念——类型擦除,理解这一点对于深入掌握泛型编程至关重要。问题要求:解......