《对线面试官》| 高频计算机网络面试题

news2024/11/16 21:40:28

目录

    • 1、说说 OSI 七层模型和 TCP/IP 四层模型的关系和区别
    • 2、说说 TCP 与 UDP 的区别
    • 3、TCP 是如何实现数据的可靠性?
    • 4、 TCP 协议如何提高传输效率?
    • 5、你知道 TCP 如何处理拥塞吗?
    • 6、为什么 TCP 链接需要三次握手,两次不可以么,为什么?
    • 7、IP地址是怎样分类的,你知道吗?
    • 8、说说 HTTP 和HTTPS 的区别?
    • 9、你知道对称加密和非对称加密的区别和原理吗?
    • 10、常见的 HTTP 状态码有哪些?

在面试中, 计算机网络是面试官最喜欢考察的内容之一

下面是我整理的一些高频计算机网络常问面试题,只要掌握了,分分钟拿捏面试官

1、说说 OSI 七层模型和 TCP/IP 四层模型的关系和区别

在这里插入图片描述
OSI 七层从下往上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

TCP/IP 四层从下往上依次是:网络接口层、网络层、传输层、应用层

这两个网络模型的特点:

  • 层与层之间相互独立又相互依靠
  • 上层依赖于下层,下层为上层提供服务

与 OSI 七层模型的映射关系如下:

在这里插入图片描述
PS:TCP/IP 四层是 OSI 七层的简化版

2、说说 TCP 与 UDP 的区别

UDP(用户数据报协议)TCP(传输控制协议)
是否面向连接无连接面向连接
是否可靠不可靠传输(没有流量控制和拥塞控制)可靠传输(使用流量控制和拥塞控制)
连接对象个数支持一对一、一对多、多对一、多对多交互通信只支持一对一通信
传输方式面向报文面向字节流
header 开销开销小,8个字节最小20字节,最大60字节
适用场景实时应用,可靠性需求不是很大的场景(视频会议、直播等)要求可靠传输的应用(文件传输)

总结:

  • TCP 是面向连接的协议,提供可靠服务;UDP 是无连接的,不可靠传输
  • UDP 常用于实时性要求高的场景,TCP 常用于可靠性要求高的场景

3、TCP 是如何实现数据的可靠性?

TCP提供可靠交付的服务,传输过程中采用许多方法保证在连接上提供可靠的传输服务

  • 校验和

这是 TCP 用来解决数据发生损坏的方案,检验数据是否损坏的方式就是数据校验

在数据传输过程中,将发送的数据段都当做一个16位的整数,将这些整数加起来,并且前面的进位不能丢弃,补在最后,然后取反,得到校验和

发送方:在发送数据之前计算校验和,并进行校验和的填充。接收方:收到数据后,对数据以同样的方式进行计算,求出校验和,与发送方进行比较

若数据出错,则接收方会直接将数据丢弃,发送方在一段时间后,没有接收到ACK报文,就会在超时后,重传这个报文

  • 序列号

由于网络的限制,TCP 必须将较大的数据拆分成一个个较小的报文段,并封装成 TCP 报文段,逐个传输

但又由于网络传输的不确定性(比如所通过的路径不同,某个报文段丢失然后重传等),这些报文段完全有可能不是按照顺序到达。所以,为了在接收方能够完整的接收数据,并能按序将这些报文组合起来

TCP 提供了一个解决方案——为每一个 TCP 报文段分配一个序号,每个报文段的序号依次增加

这样接收方就可以根据序号,来确定接收到的报文段是整个数据中的哪一部分,以及是否接收到了所有的部分

但是我们需要注意的是——TCP是对字节进行编号,而不是对报文段进行编号

TCP 对需要发送的数据的每一个字节都赋予了一个编号,比如第一个字节为 0 号,第二个为 1 号,以此类推

而每一个报文段一般都不止封装一个字节的数据,所以在 TCP 报文段中,封装的是这个报文段的数据中第一个字节的序列号

举个例子:
比如说发送方要发送250字节的数据,假设初始序号从0开始,则这250个字节的序号分别是0-249。

再假设每一个报文段最多允许封装100个字节的数据,所以第一个报文段将封装第1到100个字节,这些字节的序号为0-99,所以第一个报文段会将0放入它首部中的序号部分;

而第二个报文段封装100-199号字节,所以它的序号为100;

而第三个报文段封装200-249号字节,所以它的序号为200。

以上就是TCP发送方对序号的处理方法

总结:

  • 为了解决数据接收的完整性,TCP 为每个报文段都赋予了一个序列号

  • TCP 报文段的序列号是根据这个报文段中的第一个字节的数据的序列号来赋予的

  • 确认应答

TCP 传输过程中,每次接收方接收到数据后,都会对发送方进行确认应答,也就是发送 ACK 报文

这个 ACK 报文中带有对应的确认序列号,告诉发送方,接收了哪些数据,下一次数据从哪里传

  • 超时重传

这个方法用来解决 TCP 数据丢失的问题

TCP 会维护一个计时器,并设置一个超时时间,当发送一个 TCP 报文段后,没有在超时时间内收到 ACK 报文,则发送方认为数据丢失,于是会重传丢失的报文段,直到认为接收方已接收

由于 TCP 使用的是流水线传输,同一时间内可能会有多个已经发送但没有接收到 ACK 的报文段,所以按理来说,TCP 将维护多个计时器,为每一个报文段绑定一个,但是这样做需要花费很大的开销,而且管理计时器也很复杂

所以实际上 TCP 只维护一个计时器,绑定的是当前最早被发送,但是还没有收到 ACK 报文的报文段

如果这个报文段超时,发送方将重传该报文段,并重启计时器;如果收到了这个报文段的 ACK 报文,同样重启计时器,此时绑定的就是新的报文段

总结:

TCP 的超时重传机制能够很好地解决网络中发生数据丢包的问题

  • 连接管理

指的是 TCP 三次握手、四次挥手的过程

4、 TCP 协议如何提高传输效率?

  • 滑动窗口

如果每一个发送的报文段,都要收到 ACK 应答之后才发送下一个报文段,会导致效率很低,因为大部分时间都用在了等待 ACK 应答上了

在这里插入图片描述
既然一发一收的效率比较低,那么我们可以一次发送多条数据,这样就能使等待时间大大减少,从而提高性能在这里插入图片描述
窗口大小指的是无需等待确认应答而可以继续发送数据的最大值,上图窗口大小就是 3000 个字节(三个段)

发送前三个段的时候不需要任何的 ACK 应答,直接发送,收到第一个 ACK 应答之后,窗口向后移动,发送后三个段的数据

操作系统内核为了维护这个滑动窗口,需要开辟发送缓冲区来记录那些数据还没有应答;只有确认应答过的数据才能在缓冲区中删除

窗口越大,网络吞吐量就越高;在建立连接的时候已经确认了窗口的大小,确认了发送数据大小的上限

  • 快重传

如果出现了数据丢失,就需要进行重传,一般分为两种情况:

  • 数据包已经抵达,ACK被丢了。这种情况下,部分ACK丢了并不影响,因为可以通过后续的ACK进行确认

  • 数据包直接丢了。发送端会连续收到多个相同的 ACK 确认,发送端立即将对应丢失的数据重传

  • 延迟应答

如果接收数据的主机⽴刻返回ACK应答, 这时候返回的窗⼝可能⽐较⼩

假设接收端缓冲区为 1M,一次收到了 500K 的数据,如果立即 ACK 应答,返回的窗口就是 500K

但实际上可能接收端处理的速度很快,10 ms 之内就把 500 K 的数据从缓冲区消费掉了,在这种情况下,接收端处理还远没有达到自己的极限

如果接收端稍微等⼀会再应答, ⽐如等待200ms再应答, 那么这个时候返回的窗⼝⼤⼩就是1M

延迟应答的两个限制:

  • 数量限制: 每个N个包就应答一次;

  • 时间限制: 超过最大的延迟时间就应答一次

  • 捎带应答

在延迟应答的基础上,很多情况下,客户端服务器在应用层也是一发一收的

这时候常常采用捎带应答的方式来提高效率,而ACK响应常常伴随着数据报文共同传输。如:三次握手在这里插入图片描述

5、你知道 TCP 如何处理拥塞吗?

网络拥塞是指到达通信网络中某一部分的分组数量过多,使得该部分网络来不及处理,导致这部分甚至整个网络性能下降,严重时甚至导致网络通信业务陷入停顿

拥塞控制处理网络拥塞现象的一种机制,有以下四个阶段:

  • 慢启动
  • 拥塞避免
  • 快速重传
  • 快速恢复

6、为什么 TCP 链接需要三次握手,两次不可以么,为什么?

  • 两次握手只能保证单向连接是畅通的

第一步:client 给 server 发送一条消息:你好,server

第二步:server 收到消息后 ACK 应答,并给 client 回复一条消息:你好,client

以上便是两次握手的过程,这个过程 client 给 server 发消息,server 收到了,说明 client 可以正常给 server 发送数据

但是 server 给 client 发消息却没有收到 client 的应答,也就不能保证 server 是否能正常给 client 发送消息

  • 两次握手会导致网络资源浪费

第一步:client 给 server 发送一条消息:你好,server

由于网络传输是不可靠的,这条消息可能在网络上长时间滞留,等到 server 那里的时候已经是失效了的

第二步:server 收到消息后 ACK 应答,并给 client 回复一条消息:你好,client

这时候 server 应答这条失效的消息之后就会建立起一条连接通道等待 client 发送数据,可是这时候 client 是没有发送建立连接请求的,就会使得 server 一直在等待 client 发送数据,导致网络资源白白浪费

7、IP地址是怎样分类的,你知道吗?

  • IP 地址由四段组成,每个字段是一个字节,8位,最大值是255。
  • IP 地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机
    在这里插入图片描述

A类:(1.0.0.0-126.0.0.0)一般用于大型网络。

B类:(128.0.0.0-191.255.0.0)一般用于中等规模网络。

C类:(192.0.0.0-223.255.255.0)一般用于小型网络。

D类:是多播地址,地址的网络号取值于224~239之间,一般用于多路广播用户。

E类:是保留地址。地址的网络号取值于240~255之间

8、说说 HTTP 和HTTPS 的区别?

HTTP 是一种超文本传输协议(Hypertext Transfer Protocol),HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范

HTTPS 的全称是 (Hypertext Transfer Protocol Secure),从名称我们可以看出 HTTPS 要比 HTTP 多了 secure 安全性这个概念,实际上, HTTPS 并不是一个新的应用层协议,它其实就是 HTTP + TLS/SSL 协议组合而成,而安全性的保证正是 TLS/SSL 所做的工作

总结:HTTPS 就是身披了一层 SSL 的 HTTP
在这里插入图片描述
区别:

  • HTTP 在地址栏上的协议是以 http:// 开头,而 HTTPS 在地址栏上的协议是以 https:// 开头
  • HTTP 的默认端口是 80,而 HTTPS 的默认端口是 443
  • HTTP 是未经安全加密的协议,明文传输,它的传输过程容易被攻击者监听、数据容易被窃取、发送方和接收方容易被伪造;而 HTTPS 是安全的协议,它通过 密钥交换算法 - 签名算法 - 对称加密算法 - 摘要算法 能够解决上面这些问题

9、你知道对称加密和非对称加密的区别和原理吗?

对称加密:是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题——如何安全地将密钥发给对方

非对称加密:是指使用一对非对称密钥——公钥和私钥,公钥可以随意发布,但私钥只有自己直到。发送密文的一方使用对方的公钥进行加密处理,对方接收到密文后用自己的私钥进行解密

10、常见的 HTTP 状态码有哪些?

  • 1xx:(请求处理中,请求已被接受,正在处理)
  • 2xx:(请求成功)
    • 200:请求被成功处理
  • 3xx:(重定向,要完成请求必须进行进一步处理)
    • 301:永久重定向
    • 302:暂时重定向
    • 304:请求被重定向到客户端本地缓存
  • 4xx:(客户端错误)
    • 400:客户端请求存在语法错误
    • 401:客户端请求没有经过授权
    • 403:客户端没有访问权限
    • 404:请求的资源在服务器上不存在
  • 5xx:(服务端错误)
    • 500:服务端发送永久错误
    • 502:错误网关
    • 503:服务端发送临时错误

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

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

相关文章

小程序后台数据交互-个人中心

目录 一,获取用户昵称和头像 登录过程 二,登录-小程序 三,后台 小程序服器配置 一,获取用户昵称和头像 登录过程 小程序登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小…

SOFARegistry | 聊一聊服务发现的数据一致性

文|肖健(花名:昱恒)蚂蚁集团技术专家专注于服务发现领域,目前主要从事蚂蚁注册中心 SOFARegistry 设计、研发工作。本文 9492 字 阅读 24 分钟PART. 1前言1.1 什么是服务发现在微服务的体系中,多个应用程序…

Hydra(九头蛇)工具使用

Hydra工具使用1.Hydra简介1.1.Hydra介绍1.2.Hydra支持协议1.3.Hydra下载2.Hydra使用2.1.Hydra基本使用方式2.2.Hydra常用参数2.3.Hydra注意事项2.4.Kail字典2.5.Hydra密码生成器3.Hydra案例3.1.创建账号密码文件3.2.SSH协议爆破3.2.1.靶机信息3.2.2.开始爆破3.2.2.1.不知账号3.…

C#语言实例源码系列-游戏-实现华容道

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

Rust个人学习之聊聊Rust的变量

今天看了Rust的变量相关内容,Rust变量很重要的一个设计点是: Rust变量默认是不可变的。 很难理解? 我们接下来一起研究一下Rust的变量, 在Rust中变量是通过关键字let进行声明的 let x 5; 上述语句就是定义了一个名称为x的变量,变量的值为…

修改esp idf hello_world_main.c,验证Strategy 策略基类。出现一个问题,加以解决

修改esp32 idf hello_world_main.c,验证Strategy 策略基类。出现几个问题,加以解决: 错误: …/main/hello_world_main.cpp: In function ‘void test01()’: …/main/hello_world_main.cpp:77:12: error: deleting object of ab…

入门力扣自学笔记228 C++ (题目编号:2042)

2042. 检查句子中的数字是否递增题目:句子是由若干 token 组成的一个列表,token 间用 单个 空格分隔,句子没有前导或尾随空格。每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 ,要么是一个由小写英文字母组成的 单词…

很好用的gRPC和WebSocket调试工具Apipost!强烈推荐

随着软件开发行业的发展,越来越多的公司和开发人员在工作中会涉及到gRPC和WebSocket等接口类型,但是目前市面上能支持这种接口的调试工具却几乎没有,国外的工具大都晦涩难懂,不符合我们的开发习惯,很难上手使用。 经过…

Android开发——APP ANR治理

一、背景介绍 ANR(Application Not Response)指应用程序无响应,通常出现在主线程被阻塞时,并伴随ANR弹窗出现。ANR发生时要么关闭当前app,要么等待,等待的结果大概率还是继续ANR,最终需要杀掉应…

在msys2上安装武汉大学的开源PPP解算软件-PRIDE PPP-AR

最近一篇文章《免费提供POSMV的GNSS数据解算服务,验潮仪丢失的一种补救》发表了以后,有一位相识的网友提供了一个重要信息:武汉大学PPP解算软件名字为PRIDE PPP-AR 开源了,其GUI自动下载星历文件进行自主解算。PRIDE PPP-AR 的官网…

2022年中小企业数字化转型路径报告(附下载链接)

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年11月份热门报告盘点罗振宇2023年跨年演讲PPT原稿吴晓波2022年年终秀演讲PPT原稿2023年,如何科学制定年度规划?《底层逻辑》高清配图清华大学256页…

(机器学习深度学习常用库、框架|Pytorch篇)第三节:Pytorch之torchvision详解

文章目录一:torchvision概述二:torchvision.datasets(1)官方数据集(2)自定义数据集类(3)ImageFolder手动实现三:torchvision.transforms四:torchvision.model…

【元宇宙欧米说】左手追星,右手造富——用Web3加持娱乐行业

娱乐圈如何才能与资本市场保持步调一致?Web3浪潮来袭,文娱行业如何才能踏上Web3世界的巨轮? 1月4日下午三点,VegaIdol联合创始人Linnea将以**“左手追星,右手造富——用Web3加持娱乐行业”为题,与大家共同…

界面组件DevExpress WinForms v22.2 -全新升级的皮肤和矢量图标

DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…

RabbitMQ的简单介绍与使用

前言:大家好,我是小威,24届毕业生,曾经在某央企公司实习,目前入职某税务公司。本篇文章将记录和分享RabbitMQ相关的知识点。 本篇文章记录的基础知识,适合在学Java的小白,也适合复习中&#xff…

乐视宣布每周工作4天半

老板跑了,公司不但没倒,而且员工还过上了不加班不内卷的神仙生活。 典型的老虎不在家,规矩自己定啊! 神仙日子 前段时间,网上流传着一则消息,说乐视目前还有400多名员工,靠着《甄嬛传》版权和…

Cadence PCB仿真使用Allegro PCB SI 创建含差分对网络元器件的IBIS模型图文教程

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 1,概述 本文简单介绍使用Allegro PCB SI软件为BRD PCB设计文件中的含有差分对网络的元器件创建IBIS模型的方法。 2,创建方法 第1步:确定打开PCB文件的软件是 Allegro PCB SI 如果不是Allegro PCB SI,可执行File→Chan…

回望2022,依然值得仰望星空

转眼间 2022 年已经过去,这是我在 CSDN 创作的第二年,在文章的创作上也是脱离“博客新手”身份,正式蜕变为“博客老手”的一年,各方面收获颇丰。2021 初见 CSDN来到 CSDN 是在 2020 年的 11 月份,但是那时候并没有开始…

传感器与传感器通道

传感器 Def:以一定精确度 把 被测量转换为与之有确定对应关系的,便于应用的某种物理量的测量系统。 作用: 捕获并转换信息,非电量物理参数转换为电参数。 e.g: 速度 ->电压,电流 组成: 敏感元件(直接感受…

css移动端适配最佳实践

移动端适配,在移动端里经常有遇到,在不同分辨率移动端设备精确还原UI设计稿,这是一个令人抓狂的问题,好在有flex,box布局解决了自适应很大一部分问题。 在开始本文之前主要介绍几种笔者常用的适配方案 1、设置meta标…