当前位置: 首页 > 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…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...