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

计算机网络高频面试题集锦

问题1:谈一谈对OSI七层模型和TCP/IP四层模型的理解?

回答点:七层模型每层对应的作用及相关协议、为什么分层、为什么有TCP/IP四层模型

参考:

1、OSI七层参考模型是一个ISO组织所提出的一个标准参考分层模型,它按照数据传输过程所涉及的传输设备、方式、功能职责的不同将数据传输划分为了7层,从上到下依次:

  • 应用层:提供两个终端设备上应用程序之间信息交换的服务,HTTP、SMTP、POP3、DNS、FTP、TELNET
  • 表示层:提供各种用于应用层数据的编码和转换功能,确保能被另一个系统的应用层所识别
  • 会话层:为不同应用程序之间建立连接提供服务
  • 传输层:负责向两台终端设备进程之间的通信提供通用的数据传输服务,TCP、UDP
  • 网络层:为分组交换网络上的不同主机提供通信服务,IP
  • 数据链路层:将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧
  • 物理层:实现相邻计算机节点之间比特流的透明传输

2、分层目的:

  • 各层之间相互独立,各司其职,与我们在开发时的分层是一样的
  • 提高整体的灵活性,与平时开发要求的高内聚、低耦合一致
  • 让大问题——》多个小问题,让复杂的计算机网络系统变得易于设计、实现

3、但是OSI七层参考模型的设计是相对复杂的,设计成本高,是一个理想状态下的分层模型,而在实际应用中,为了简便我们的开发与设计提出了TCP/IP四层模型,它是对于OSI七层模型的一个简化。将应用层+表示层+会话层=应用层,数据链路层+物理层=网络接口层,通常实际开发中常采用传输层TCP协议+网络层IP协议故称为TCP/IP协议

问题2:谈谈TCP协议的3次握手过程?

回答点:TCP协议的特点(面向连接、可靠传输)、三次握手过程

参考:

TCP协议是一个面向连接,基于字节流可靠通信的传输层协议。在双方进行通信时需要三次握手来建立连接保证数据传输的可靠性。

第一次握手:C端——》S端发送SYN=1数据包【请求建立连接】,C端进入SYN-SENT状态;

第二次握手:S端手段C端发送的SYN=1数据包,接着C端——》S端发送SYN=1,ACK=1的数据包【同意连接并对第一次握手的数据包进行确认】,C端从listen状态进入SYN-RCVD状态。

第三次握手:C端收到S端发送的SYN=1,ACK=1的同意连接报文段后,进入ESTABLISHED状态,向S端发送ACK=1的数据包【再次对第二次握手S端发来的数据包进行确认】,S端收到后也进入ESTABLISHED状态。

当C端与S端都进入ESTABLISHED状态时,表示可靠连接以建立完成,可以进行数据的通信了。

问题3:TCP协议为什么要3次握手?2次,4次不行吗?

回答点:每一次握手的意义、2次握手确认双发网络正常、4次浪费资源

参考:

第一次握手:发起建立连接请求;“XXX,咱们去看电影吧”

第二次握手:确认并同意连接请求;“可以啊”

第三次握手:对第二次的连接进行确认;“那咱们走吧”

前两次握手完成只能确认C端与S端之间的网络是顺畅的,并不能保证建立了可靠的传输。

例如:当C端向S端第一次发送请求连接报文时,由于网络等原因,迟迟没有到S端,C端又重新向S端发送了请求连接报文,这一次很顺畅的到了S端,S端并进行了确认。若这时,C端第一次发送的请求连接报文到了S端,S端以为C端再一次进行连接就会再次发送确认报文,而C端已经收到过一次确认报文,所以此次的确认报文它会忽略,而S端发送了确认报文后会一直等待C端的回应,就会造成S端一直等待,浪费资源,甚至服务器停止响应。2次不能够保证可靠的连接,也不能避免重复连接或连接混乱问题。在经历过3次握手稳定的连接已建立,再次传输浪费资源。所有三次是最佳的既节省资源又能建立可靠连接的次数

问题4:谈谈TCP协议的四次挥手过程?

回答点:连接管理(断开连接节省资源),四次挥手传输的标志位

参考:

TCP面向连接的可靠传输过程,建立连接来发送数据保证数据的可靠性,这条连接是占用资源的。当双方通信完成后,会通过四次回收来释放连接,对资源进行回收。四次回收过程如下:

第一次挥手:C端——》S端发送FIN=1的数据包,请求释放连接

第二次挥手:S端收到释放连接数据包,S端——》C端发送ACK=1数据包,进行确认

此时双方的连接状况:C端不能再向S端传输数据了,S端仍可以继续向C端传数据,C端也可接收

第三次挥手:当S端不在向C端发送数据时,会再次向C端发送ACK=1,FIN=1数据包【释放连接】

第四次挥手:C端收到S端的释放连接数据包,再次进行确认向S端发送ACK=1数据包,S端接收

经历四次握手后,双方断开连接,梳理一下双方每次挥手的状态:

第一次:C端——》等待1

第二次:C端——》等待2,S端——》等待关闭

第三次:C端——》超时等待,S端——》最后确认

第四次:C端——》CLOSED,S端——》CLOSED

问题5:什么是流量控制?

回答点:含义、如何实现

流量控制是指接收方根据窗口大小对于发送方所发送数据包的限制,通过流量控制,让发送方所发送的数据接收方能够有效的全部接收,避免丢包引起的重传机制而带来不必要的消耗。

流量控制需要通过滑动窗口来实现,接收方发送的确认报文中的窗口字段可以控制发送方窗口的大小,从而影响发送方的发送速率,若窗口字段设置为0,则不能发送数据

问题6:什么是滑动窗口?

回答点:概念、作用

滑动窗口通过拥塞窗口值指定发送方每次能发送数据包的个数。发送方和接收方分别维护了各自的缓冲区,也称窗口。发送方窗口的大小由接收方中TCP首部的窗口字段决定。发送方将窗口内容分为:已发送已确认、已发送未确认、未超出发送窗口范围的未发送数据,已超出发送窗口范围的未发送数据。随着接收方确认,发送方的窗口不断向前滑动

问题7:什么是拥塞控制?

回答点:含义、作用、实现

拥塞控制是指对整个网络中传输的数据包多少进行控制,控制的目的就是避免「发送方」的数据填满整个网络,控制「发送方」的数据发送量。拥塞控制主要通过4个算法来实现:

1、慢启动:刚来时发送数据包个数少,“试探性”发送,依次呈指数增长,直到超过慢启动门限,发生拥塞的可能性就变大了,会利用拥塞避免处理

2、拥塞避免:超过慢启动门限后,不再呈指数增长,能发送的数据包数逐次+1,当发生丢包触发重传机制后,会使用拥塞发生处理

3、拥塞发生:重传机制有2种

当使用超时重传机制:

        (1)将门限值ssthresh设为拥塞窗口值cwnd的一半【ssthresh=cwnd/2】

        (2)拥塞窗口值cwnd设为1,回到慢启动【cwnd=1】

使用快速重传机制:

        (1)将门限值ssthresh设为拥塞窗口值cwnd的一半【ssthresh=cwnd/2】

        (2)拥塞窗口值cwnd设为原来的一半+3【cwnd=cwnd/2+3】

4、快速开始:在拥塞发生时采用快速重传机制就会快速开始

 快速开始是在拥塞情况并不那么严重,很快就能恢复网络的通信状况的一个算法

问题8:TCP和UDP有什么区别?

回答点:是否连接、可靠、首部长度、使用场景

TCP面向连接可靠首部20-60字节数据传输要求严格
UDP面向无连接不可靠首部8字节视频(即时传输)

 

             

相关文章:

计算机网络高频面试题集锦

问题1:谈一谈对OSI七层模型和TCP/IP四层模型的理解? 回答点:七层模型每层对应的作用及相关协议、为什么分层、为什么有TCP/IP四层模型 参考: 1、OSI七层参考模型是一个ISO组织所提出的一个标准参考分层模型,它按照数…...

Linux启动过程详解 Xmind导图笔记

参考大佬博客: 简要描述linux系统从开机到登陆界面的启动过程 Linux启动过程详解 Bootloader详解 来源:从BIOS开始画图了解Linux启动过程——老杨Linux...

Qt5开发及实例V2.0-第十七章-Qt版MyWord字处理软件

Qt5开发及实例V2.0-第十七章-Qt版MyWord字处理软件 第17章-Qt版MyWord字处理软件17.1 运行界面17.1.1 菜单设计基本操作17.1.2.MyWord系统菜单 17.2 工具栏设计17.2.1 与菜单对应的工具条17.2.2 附加功能的工具条 这段代码的作用是加载系统标准字号集,只要在主窗体构…...

机器视觉工程师们,常回家看看

我们在这个社会上扮演着多重角色,有时候我们很难平衡好这些角色之间的关系。 人们常言,积善成德,改变命运。善修者,懂得积累,懂得改变命运的重要性。 我曾年少不知父母之不易。一路依靠,一路成长。 所谓…...

网络隔离下实现的文件传输,现有的方式真的安全吗?

在当今的信息化时代,网络安全已经成为了各个企业和机构不可忽视的问题。为了保护内部数据和系统不受外部网络的攻击和泄露,一些涉及国家安全、商业机密、个人隐私等敏感信息的企业和机构,通常会对内外网进行隔离,即建立一个独立的…...

[医学图像知识]CT图和PET图的成像表现形式

1.CT图通常来说是单通道灰色图,用灰度值表示了结构对于x射线的吸收程度。 2.PET/SPECT图最初也是灰度图,用灰度值表示细胞的反射gama射线的程度,但是为了更好的观测不同细胞等的区别,通常将灰度图转化为了 伪彩色图像。 找个例子…...

聊聊wireshark的进阶使用功能 | 京东云技术团队

1. 前言 emmm,说起网络知识学习肯定离不来wireshark工具,这个工具能够帮助我们快速地定位网络问题以及帮助正在学习网络协议这块的知识的同学验证理论与实际的一大利器,平时更多的只是停留在初步的使用阶段。也是利用部门内部的网络兴趣小组…...

小米手机安装面具教程(Xiaomi手机获取root权限)

文章目录 1.Magisk中文网:2.某呼:3.最后一步打开cmd命令行输入的时候:4.Flash Boot 通包-Magisk(Flash Boot通刷包)5.小米Rom下载(官方刷机包)6.Magisk最新版本国内源下载 1.Magisk中文网: htt…...

DSU ON TREE

DSU ON TREE DSU:并查集 DSU ON TREE:树上启发式合并 我也不知道为啥树上并查集就是树上启发式合并 启发式合并的思想是每次把小的往大的合并,也就是最大化利用已有的答案(大的数组不用清空,在原基础上加上小的即可&…...

Java“对象”

Java:PO、VO、BO、DO、DAO、DTO、POJO PO持久化对象(Persistent Object) PO是持久化对象,用于表示数据库中的实体或表的映射通常与数据库表的结构和字段对应PO的属性对应数据库表的字段,可以进行持久化操作&#xff0…...

vuepress+gitee免费搭建个人在线博客(无保留版)

文章目录 最终效果,一睹为快!一、工具选型二、什么是VuePress三、准备工作3.1 node 安装3.2 Git安装3.3 Gitee账号注册 四、搭建步骤4.1 初始化VuePress4.2 安装VuePress4.3 初始化目录4.4 编写文章 五、部署到Gitee5.1 创建仓库5.2 个人空间地址设置4.3…...

Android 12.0 系统限制上网系列之iptables用IOemNetd实现app上网白名单的功能实现

1.前言 在12.0的系统rom定制化开发中,对于系统限制网络的使用,在system中netd网络这块的产品需要中,会要求设置app上网白名单的功能, liunx中iptables命令也是比较重要的,接下来就来在IOemNetd这块实现app上网白名单的的相关功能,就是在 系统中只能允许某个app上网,就是…...

Idea和DataGrip自定义常用代码模板,熟练使用快捷模板可促进开发效率

场景: 在实际工作中,我们不可能一个一个字母的去敲代码,为了提升开发效率,可以使用常用的快捷代码模板。idea和datagrip自带的有,我们也可以自定义快捷模板 一、Idea自定义代码模板、有些是基于 hutool 常用包 1、-&g…...

Vue.js :实现嵌套对话框的查看按钮

Vue.js :实现嵌套对话框的查看按钮 Vue.js 是一款流行的 JavaScript 框架,用于构建交互性强、响应式的前端应用程序。本博客将介绍如何使用 Vue.js 和 Element UI 库创建一个前端应用,其中包括了嵌套对话框的查看按钮,以及如何在…...

9.2.4 【MySQL】段的结构

段不对应表空间中某一个连续的物理区域,而是一个逻辑上的概念,由若干个零散的页面以及一些完整的区组成。像每个区都有对应的XDES Entry来记录这个区中的属性一样,定义了一个INODE Entry结构来记录段中的属性。 它的各个部分释义如下&#xf…...

怎么快速提取图片中的文字信息?怎么使用OCR图片文字提取一键提取文字

图片里的文字如何提取?一些图片中的文字信息是我们需要的,但是一个个输入太麻烦了,怎么将图片上的文字提取出来?Initiator是一款易于使用的小型 macOS OCR(光学字符识别)应用程序,可提取和识别 Mac 计算机屏幕上的任…...

Selenium隐藏浏览器特征

Selenium隐藏浏览器特征 Selenium特征1. CDP2. stealth.min.js3. undetected_chromedriver4. 操作已开启的浏览器4. 常见的隐藏Selenium特征的方法4.1 修改navigator.webdriver标志4.2 改变user-agent4.3 排除或关闭一些Selenium相关的开关4.4 代码展示4.5 总结 Selenium特征 …...

Linux下的buff/cache

目录 一、buff/cache二、buff/cache与内存管理三、buff/cache对系统性能的影响四、优化buff/cache1、调整vm.dirty_ratio和vm.dirty_background_ratio2、配置vm.swappiness3、配置vm.vfs_cache_pressure 五、释放buff/cache 一、buff/cache 按照Linux内核文档所说的&#xff0…...

3.wifi开发,网络编程

网络协议栈LwIP WiFi UDP Clinet编程 WiFi UDP Server编程 WiFi TCP Client编程 WiFi TCP Server编程 一。LWIP原理介绍,API介绍,文件结构 1.Lwip支持的协议 2.API 3.文件结构 1.api目录:应用程序接口文件。 2.arch目录:与硬件和…...

Android框架mqtt库无法兼容高版本android13的问题

最近使用mqtt库,测试的时候发现在Android12及以下正常,但在13上闪退,闪退日志如下 java.lang.IllegalArgumentException: com.yummo.xcar: Targeting S (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be spe…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...