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

面试计算机网络框架八股文十问十答第七期

面试计算机网络框架八股文十问十答第七期

作者:程序员小白条,个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐

1)UDP协议为什么不可靠?

UDP(用户数据报协议)是一种无连接的、不可靠的传输协议。它的不可靠性主要体现在以下几个方面:

  • 无连接性: UDP 不需要在发送数据之前建立连接,也不维护连接状态,因此不会进行握手和维持连接的开销。这使得 UDP 更加轻量级,但也使得它无法保证数据的可靠传输。
  • 不保证数据的到达顺序: 由于 UDP 不会对数据包进行排序和重组,因此发送的数据包的到达顺序不一定与发送顺序一致。在网络中,数据包可能会因为不同的路由和网络拥塞情况而以不同的顺序到达目的地。
  • 不提供重传机制: UDP 协议本身不提供重传机制。如果一个数据包在传输过程中丢失,UDP 协议不会负责重新发送该数据包,而是由应用层自行处理丢失的情况。

因此,尽管 UDP 在一些对实时性要求高、数据丢失对应用影响不大的场景下表现出色,但在对数据完整性和可靠性要求较高的场景下,通常会选择使用 TCP 协议。

2)TCP的重传机制

TCP(传输控制协议)是一种面向连接的、可靠的传输协议。TCP 通过以下机制来保证数据的可靠传输:

  • 序列号和确认应答: TCP 在发送的数据包中会包含序列号,接收方收到数据后会发送确认应答,告知发送方已经收到了哪些数据。如果发送方在合理的超时时间内没有收到确认应答,就会认为数据丢失,进行重传。
  • 超时重传: 如果发送方在一定时间内没有收到确认应答,就会重新发送相同的数据包。TCP 会动态调整重传的超时时间,以适应网络的变化。
  • 快速重传: 如果发送方收到了对同一数据包的三个重复的确认应答,就会认为接收方已经丢失了后续的数据,立即进行快速重传,而不必等待超时时间到期。

3)TCP的拥塞控制机制

TCP 的拥塞控制是为了避免过多的数据注入到网络中,导致网络拥塞,从而影响网络性能。TCP 的拥塞控制主要包括以下几个机制:

  • 慢启动: 发送方在连接刚建立时,会以指数增长的速率增加发送窗口大小,以快速填满网络的带宽。
  • 拥塞避免: 一旦发送方开始遇到丢包,就会进入拥塞避免阶段,发送窗口大小会线性增长,而不是指数增长,以降低发送速率。
  • 快速重传和快速恢复: 当发送方收到对同一数据包的三个重复的确认应答时,会触发快速重传和快速恢复机制,以快速调整发送窗口大小,避免继续注入更多的数据到网络中。

通过这些拥塞控制机制,TCP 能够在一定程度上适应网络的拥塞情况,保证网络的稳定性和公平性。

4)TCP的流量控制机制

TCP 的流量控制是为了防止发送方发送过多的数据,导致接收方无法处理。流量控制主要通过滑动窗口(Sliding Window)机制来实现:

  • 接收窗口(rwnd): 接收方在通信的过程中会通知发送方自己当前的接收窗口大小,即能够接收的数据量。发送方根据这个信息来控制发送的数据量,保证不会超过接收方的处理能力。
  • 滑动窗口: 发送方维护一个发送窗口,表示可以发送但还未收到确认的数据段的范围。滑动窗口的大小受到接收方通知的接收窗口大小和网络的实际情况的影响。

通过动态调整滑动窗口的大小,TCP 实现了流量控制,确保在通信过程中不会因为发送方速度过快而导致接收方无法处理。

5)TCP的可靠传输机制

TCP 的可靠传输机制主要包括以下几个方面:

  • 序列号和确认应答: 发送方会为每个数据包分配一个序列号,接收方通过确认应答来告知发送方已经正确接收到数据。如果发送方在一定时间内未收到确认应答,会进行重传。
  • 超时重传: 如果发送方在合理的超时时间内未收到确认应答,会认为数据包丢失,进行超时重传。
  • 快速重传和快速恢复: 当发送方收到对同一数据包的三个重复的确认应答时,会触发快速重传和快速恢复机制,以快速调整发送窗口大小。
  • 选择性重传: 发送方能够选择性地重传丢失的数据包,而不是重新传输所有的数据。

这些机制使得 TCP 在不可靠的网络环境中能够保证数据的可靠传输。

6)TCP的三次握手和四次挥手

TCP 的连接建立和断开分别通过三次握手和四次挥手来完成:

三次握手(Connection Establishment):

  1. 客户端发送 SYN: 客户端发送一个带有 SYN(同步)标志的数据包,表示请求建立连接。
  2. 服务端发送 SYN + ACK: 服务端收到客户端的请求后,回复一个带有 SYN 和 ACK(确认)标志的数据包,表示同意建立连接。
  3. 客户端发送 ACK: 客户端收到服务端的确认后,发送一个带有 ACK 标志的数据包,表示连接建立完成。

四次挥手(Connection Termination):

  1. 客户端发送 FIN: 客户端发送一个带有 FIN(结束)标志的数据包,表示要关闭连接。
  2. 服务端发送 ACK: 服务端收到客户端的关闭请求后,发送一个带有 ACK 标志的数据包,表示接收到关闭请求。
  3. 服务端发送 FIN: 服务端发送一个带有 FIN 标志的数据包,表示服务端也准备关闭连接。
  4. 客户端发送 ACK: 客户端收到服务端的关闭请求后,发送一个带有 ACK 标志的数据包,表示确认关闭。此时连接彻底关闭。

这样的握手和挥手机制确保了双方在建立和关闭连接时的可靠性和同步性。

7)TCP粘包是怎么回事,如何处理?

TCP粘包是指发送方发送的若干小数据包到达接收方时,接收方可能会将它们合并成一个大的数据包,从而导致接收方处理时难以区分原始的数据边界。这可能会引发一些问题,比如数据解析错误或应用层处理混乱。

原因:

  1. 缓冲机制: 操作系统或中间网络设备的缓冲机制可能会导致多个小数据包在传输过程中被合并成一个大的数据包。
  2. 发送速率: 发送方连续发送数据包的速率比接收方处理的速率快,导致多个数据包在传输过程中组成一个大的数据包。

处理方法:

  1. 消息长度标识: 在传输的数据中增加消息长度的信息,接收方通过解析长度信息来拆分数据。
  2. 特殊字符标识: 在消息之间增加特殊字符标识,接收方根据特殊字符来切分数据。
  3. 定长消息: 固定长度的消息,不足长度时用空格或其他填充。
  4. 使用消息边界标记: 在数据包的开头或结尾添加标记表示消息的开始或结束。
  5. 应用层协议设计: 在应用层设计协议时,可以采用更复杂的协议规定来避免粘包问题。

8)为什么udp不会粘包?

UDP是无连接的、不可靠的协议,它对数据包的传输不做任何拆分或合并的处理,因此不存在TCP粘包的问题。每个UDP数据包都是独立的,不会受到底层协议的影响而被合并,接收方能够按照发送方发送的数据包一一接收。

UDP的简单性和无连接性使得它不会进行复杂的缓冲和组包操作,也就不会出现TCP粘包的情况。然而,正因为UDP不保证可靠传输,应用层需要自行处理丢包、重复和顺序等问题。

9)对 WebSocket 的理解

WebSocket是一种在单个TCP连接上进行全双工通信的协议,它允许客户端和服务器之间进行实时、双向的数据传输。相比于传统的HTTP协议,WebSocket的优势在于降低了通信的延迟,提高了效率。

特点和优势:

  • 全双工通信: 可以同时在同一个连接上进行双向通信,服务器可以向客户端推送数据,而不需要等待客户端的请求。
  • 低延迟: 由于建立一次连接后可以持久存在,避免了HTTP协议中频繁的连接建立和断开,降低了通信的延迟。
  • 轻量级: WebSocket协议的头部较小,通信时的数据帧相对较小,减少了网络传输的开销。
  • 跨域通信: 支持跨域通信,通过一定的握手过程建立连接,使得客户端和服务器可以跨域进行实时通信。

10)即时通讯的实现:短轮询、长轮询、SSE 和 WebSocket 间的区别?

即时通讯的实现方式有多种,其中常见的包括短轮询(Short Polling)、长轮询(Long Polling)、SSE(Server-Sent Events)和WebSocket。

  1. 短轮询(Short Polling):
    • 客户端定期发送HTTP请求询问是否有新消息。
    • 服务器响应时,返回当前可用的消息。
    • 缺点:频繁的HTTP请求可能造成不必要的开销,延迟高。
  2. 长轮询(Long Polling):
    • 客户端发送HTTP请求到服务器,服务器保持连接打开,直到有新消息才响应给客户端。
    • 客户端收到响应后立即再次发起请求。
    • 缺点:仍然存在较高的延迟,但相较于短轮询减少了请求的频率。
  3. SSE(Server-Sent Events):
    • 使用单个HTTP连接,服务器可以主动推送数据给客户端。
    • 基于事件流的机制,通过EventSource对象在客户端接收服务器的推送。
    • 缺点:仅支持单向通信,不适合需要双向通信的场景。
  4. WebSocket:
    • 建立在单个TCP连接上,支持全双工通信。
    • 通过握手过程建立连接,之后可以双向发送消息。
    • 优点:低延迟,支持双向通信,适用于实时性要求高的场景。

总的来说,短轮询和长轮询通过HTTP请求,存在较高的延迟和开销;SSE是基于HTTP的单向通信,适用于服务器向客户端推送数据;WebSocket是全双工通信,延迟低,适用于实时性要求高的即时通讯场景。选择哪种方式取决于具体的需求和场景。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

已 300 + Star!

⭐点赞⭐收藏⭐不迷路!⭐

相关文章:

面试计算机网络框架八股文十问十答第七期

面试计算机网络框架八股文十问十答第七期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)UDP协议为什么不可…...

Codeforces Round 926 (Div. 2)

A. Sasha and the Beautiful Array&#xff08;模拟&#xff09; 思路 最大值减去最小值 #include<iostream> #include<algorithm> using namespace std; const int N 110; int a[N];int main(){int t, n;cin>>t;while(t--){cin>>n;for(int i 0; i…...

构建智慧交通平台:架构设计与实现

随着城市交通的不断发展和智能化技术的迅速进步&#xff0c;智慧交通平台作为提升城市交通管理效率和水平的重要手段备受关注。本文将探讨如何设计和实现智慧交通平台的系统架构&#xff0c;以应对日益增长的城市交通需求&#xff0c;并提高交通管理的智能化水平。 ### 1. 智慧…...

移动端设置position: fixed;固定定位,底部出现一条缝隙,不知原因,欢迎探讨!!!

1、问题 在父盒子中有一个子盒子&#xff0c;父盒子加了固定定位&#xff0c;需要子盒子上下都有要边距&#xff0c;用margin或者padding挤开时&#xff0c;会出现缝隙是子盒子背景颜色的。 测试过了&#xff0c;有些手机型号有&#xff0c;有些没有&#xff0c;微信小程序同移…...

有关网络安全的课程学习网页

1.思科网络学院 免费学习skillsforall的课程 课程链接&#xff1a;Introduction to Cybersecurity by Cisco: Free Online Course (skillsforall.com) 2.斯坦福大学计算机和网络安全基础 该证书对于初学者来说最有价值&#xff0c;它由最著名的大学之一斯坦福大学提供。您可…...

计算机网络-面试题

一、基础 1、网络编程 网络编程的本质是多台计算机之间的数据交换存在问题 如何准确的定位网络上一台或多台主机如何进行可靠传输2、网络协议 在计算机网络有序的交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式、是否需要发送一个应答信息。这些规则被称为网络…...

C++虚函数

C虚函数 在C中&#xff0c;虚函数&#xff08;Virtual Function&#xff09;是一个使用关键字virtual声明的成员函数&#xff0c;它在基类中被声明&#xff0c;以便在任何派生类中被重写&#xff08;Override&#xff09;。使用虚函数的目的是实现多态性——一种允许使用基类指…...

MySQL数据库基础(二):MySQL数据库介绍

文章目录 MySQL数据库介绍 一、MySQL介绍 二、MySQL的特点 三、MySQL版本 四、MySQL数据库下载与安装 1、下载 2、安装 五、添加环境变量&#xff08;Windows&#xff09; 六、检测环境变量是否配置成功 MySQL数据库介绍 一、MySQL介绍 MySQL是一个关系型数据库管理…...

常用文件命令

文章目录 文件命令文件内容查看catnlmoreless&#xff08;more的plus版&#xff09;headtailod 文件属性操作用户权限常见的权限chownchmodchgrpumask 隐藏属性常见的隐藏属性lsattrchattr 查找文件查看文件类型查找文件位置whichwhereislocatefind 文件操作&#xff08;复制、…...

在屏蔽任何FRP环境下从零开始搭建安全的FRP内网穿透服务

背景 本人目前在境外某大学读博&#xff0c;校园网屏蔽了所有内网穿透的工具的数据包和IP访问&#xff0c;为了实现在家也能远程访问服务器&#xff0c;就不得不先开个学校VPN&#xff0c;再登陆。我们实验室还需要访问另一个大学的服务器&#xff0c;每次我都要去找另一个大学…...

OpenGL-ES 学习(1)---- AlphaBlend

AlphaBlend OpenGL-ES 混合本质上是将 2 个片元的颜色进行调和(一般是求和操作)&#xff0c;产生一个新的颜色 OpenGL ES 混合发生在片元通过各项测试之后&#xff0c;准备进入帧缓冲区的片元和原有的片元按照特定比例加权计算出最终片元的颜色值&#xff0c;不再是新&#xf…...

Python 函数的学习笔记

Python 函数的学习笔记 0. Python 函数的概要说明1. 自定义函数示例2. 匿名函数示例3. 内置函数示例3-1. filter() 示例3-2. map() 示例3-3. reduce() 示例 4. 可变长参数*args和**kwargs示例4-1. *args&#xff08;Positional Variadic Arguments&#xff09;4-2. **kwargs&am…...

详解 Redis 实现数据去重

✨✨ 欢迎大家来到喔的嘛呀的博客✨✨ &#x1f388;&#x1f388;希望这篇博客对大家能有帮助&#x1f388;&#x1f388; 目录 言 一. Redis去重原理 1. Redis Set 数据结构 2. 基于 Set 实现数据去重 3. 代码示例 4. 总结 …...

FreeRTOS 延迟中断处理

采用二值信号量同步 二值信号量可以在某个特殊的中断发生时&#xff0c;让任务解除阻塞&#xff0c;相当于让任务与中断 同步。这样就可以让中断事件处理量大的工作在同步任务中完成&#xff0c;中断服务例程(ISR) 中只是快速处理少部份工作。如此&#xff0c;中断处理可以说是…...

计网体系结构

计算机网络的概述 概念 网络&#xff1a;网状类的东西或系统。 计算机网络&#xff1a;是一个将分散的、具有独立性功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。即计算机网络是互连(通过通信链路互连…...

linux系统zabbix工具监控web页面

web页面监控 内建key介绍浏览器配置浏览器页面查看方式 监控指定的站点的资源下载速度&#xff0c;及页面响应时间&#xff0c;还有响应代码&#xff1b; web Scenario&#xff1a; web场景&#xff08;站点&#xff09;web page &#xff1a;web页面&#xff0c;一个场景有多…...

VMware虚拟机网络配置

VMware虚拟机网络配置 桥接模式NAT网络 桥接模式 桥接模式其实就是借助你宿主机上的网卡进行联网和通信&#xff0c;所以相当于虚拟机和宿主机平级&#xff0c;处于同一个网段中。 配置要点&#xff1a; 注意选择正确的宿主机网卡 查看宿主机的网络信息&#xff0c;这些信息指…...

代码随想录算法训练营DAY18 | 二叉树 (5)

一、LeetCode 513 找树左下角的值 题目链接&#xff1a;513.找树左下角的值https://leetcode.cn/problems/find-bottom-left-tree-value/ 思路一&#xff1a;递归回溯全局变量比深度。 class Solution {int Max_depth 0;int result 0;public int findBottomLeftValue(TreeNo…...

企业微信自动推送机器人的应用与价值

随着科技的快速发展&#xff0c;企业微信自动推送机器人已经成为了企业数字化转型的重要工具。这种机器人可以自动推送消息、执行任务、提供服务&#xff0c;为企业带来了许多便利。本文将探讨企业微信自动推送机器人的应用和价值。 一、企业微信自动推送机器人的应用 企业微信…...

Matplotlib plt.plot:从入门到精通,只需一篇文章!

Matplotlib plt.plot&#xff1a;从入门到精通&#xff0c;只需一篇文章&#xff01; 利用Matplotlib进行数据可视化示例 &#x1f335;文章目录&#x1f335; &#x1f4ca; 1. 引言&#xff1a;为什么Matplotlib在数据可视化中如此重要&#xff1f;&#x1f4ca;✨ 2. plt.pl…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...