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

计算机网络常见面试题

目录

一、谈一谈对OSI七层模型和TCP/IP四层模型的理解?

答:OSI七层模型主要分为:

TCP/IP四层协议:

二、谈谈TCP协议的3次握手过程?

三、TCP协议为什么要3次握手?2次,4次不行吗?

四、谈谈TCP协议的四次挥手过程?

五、什么是流量控制?

六、什么是滑动窗口?

七、什么是拥塞控制?

拥塞控制的四个算法:

7.1慢启动

7.2拥塞避免

7.3拥塞发生

重传机制:

超时重传:

快速重传:

7.4快速恢复

八、TCP和UDP有什么区别?


一、谈一谈对OSI七层模型和TCP/IP四层模型的理解?

答:OSI七层模型主要分为:

应用层->人机交互界面,曹某将“你好”两个字输入电脑微信软件;

表示层->计算机将“你好”翻译成二进制;

会话层->找到接收方马某,建立会话关系;

传输层->曹某用微信发的消息,马某只能在微信上看;

网络层->网络中有许多用户,要想让这两个人准确的发送和接受,曹某需要知道马某的网络层IP;

数据链路层->网络层往下继续传输需要数据链路层的网卡;

物理层->数据变成信号传输,马某在自己微信看到了曹某发的“你好”;

目的是为了简化网络各层的操作,提供标准接口便于实现和维护;

TCP/IP四层协议:

是七层模型的简化版,分为:应用层(应用层,表示层,会话层)->传输层->网络层->网络接口层(数据链路层,物理层)


二、谈谈TCP协议的3次握手过程?

当客户端向服务端发起连接时,会先发一包连接请求数据(SYN)->syn=1,ack=0,询问服务端能否建立连接,如果服务端同意建立连接,会回复客户端一个(SYN+ACK)->syn=1,akc=1包数据,客户端收到之后,回复一包(ACK)->syn=0,ack=1包,连接建立。


三、TCP协议为什么要3次握手?2次,4次不行吗?

为了防止已失效的请求报文,突然又传到服务器引起错误。

假设用两次握手建立连接,客户端向服务器端发送了一个(SYN)A包,来请求建立连接,因为一些未知的原因A包未到达服务器,在中间某个网络结点产生了滞留,为了建立连接,客户端会重发(SYN)B包,这次B包正常送达,服务端回复(SYN+ACK)之后建立连接,两次握手完成。但是这时候A包阻塞的网络结点突然恢复,A包又送达到服务端,服务端以为客户端又发送了一次连接,在发送完(SYN+ACK)包之后进入等待数据状态。客户端认为是一个连接,但是服务端认为是两个连接,造成了状态不一致问题。

如果用四次握手建立连接,就会导致资源的浪费;


四、谈谈TCP协议的四次挥手过程?

1,客户端主动发起连接关闭请求,它需要向服务端发送一包(FIN)->FIN=1,ACK=0包,表示要关闭连接,自己进入终止等待1状态,这就是第一次挥手。

2,服务端收到(FIN)包,发送一包(ACK)->FIN=0,ACK=1包,表示自己进入了关闭等待状态,客户端进入终止等待2状态,这就是第二次挥手

3,服务端此时还可以发送未发送的数据,客户端也可以接收数据,等服务端发送完数据之后,发送一包(FIN)->FIN=1,ACK=1包,进入最后确认状态,这就是第三次挥手

4,客户端收到之后,回复一包(ACK)包,进入超时等待状态,经过超时时间后关闭连接,服务端收到(ACK)->FIN=0,ACK=1包之后立即关闭连接,这就是第四次挥手


五、什么是流量控制?

流量控制是为了控制发送方发送速率,保证接收方来得及接收;

接收方每次收到数据包,可以在发送确定报文的时候,同时告诉发送方自己的缓存区还剩余多少是空闲的,我们也把缓存区的剩余大小称之为接收窗口大小,用变量win来表示接收窗口的大小。

发送方收到之后,便会调整自己的发送速率,也就是调整自己发送窗口的大小,当发送方收到接收窗口的大小为0时,发送方就会停止发送数据,防止出现大量丢包情况的发生。


六、什么是滑动窗口?

滑动窗口是 TCP 协议用于实现流量控制的一种机制。 发送方和接收方分别维护各自的缓冲区,这个缓冲区就是窗口。发送方的窗口大小由接收方的 TCP 首部的窗口字段决定。

发送方将窗口内容分为:已发送并确认,已发送未确认,未发送未超出接收方窗口范 围,未发送但超出接收方窗口范围。随着接收方的确认,发送方将不断在窗口内向前滑动。

接收方将窗口内容分为:接受已确认,未收到但可以接受。接收方读取窗口内容,并不断确认通知发送方,窗口向前滑动。接收方通过改变窗口大小,可以控制发送方的速率,从而实现流量控制。


七、什么是拥塞控制?

拥塞控制就是为了防止过多的数据注入到网络中,控制的目的就是避免发送方的数据填满整个网络,控制 发送方的数据发送量。

拥塞控制的四个算法:

7.1慢启动

目的:用来确定网络的负载能力或拥塞程度

算法思路:由小到大呈指数增大拥塞窗口数值

两个变量

1)拥塞窗口:

初始拥塞窗口值:2种设置方法

1至2个最大报文段(旧标准)

2至4个最大报文段(RFC 5681)

窗口值逐渐增大

2)慢开始门限

防止拥塞窗口增长过大引起网络拥塞


7.2拥塞避免

慢启动每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能性也就更高。 于是,TCP 会设置一个慢启动门限 ssthresh ,当 cwnd >= 门限时,进入拥塞避免,每个轮次 只将 cwnd 加 1 ,降低拥塞窗口的增长速度。

7.3拥塞发生

拥塞避免算法一直增长下去,网络也会慢慢进入了拥塞的状况,就会出现丢包现象,这时就需要对丢失的数据包进行重传。当触发了重传机制,也就进入了「拥塞发生算法

重传机制:
  • 超时重传:

当发生「超时重传」的拥塞发生算法

ssthresh 设为 cwnd/2

cwnd 重置为 1

这个时候,重新进入慢启动

  • 快速重传:

当接收方发现数据包丢失的时候,会连续发送三次 ACK确认数据包,于是发送端就会快速地重传,不必等待超时再重传。

这个时候,TCP 认为这种情况不严重,因为大部分没丢,只丢了一小部分,所以当发生「快速重传」的拥塞发生算法cwnd = cwnd / 2 , ssthresh = cwnd

7.4快速恢复

快速重传恢复算法一般同时使用,快速恢复算法是认为,你还能收到 3 个重复 ACK 说明网络拥塞状况没有特别糟糕,所以没有必要像 RTO 超时重传直接进入慢启动,那么强烈。

拥塞窗口 cwnd = ssthresh + 3

重传丢失的数据包

如果再收到重复的 ACK,那么 cwnd 增加 1


八、TCP和UDP有什么区别?

UDP->写信,TCP->打电话。

这两者本质的区别就是写信是基于非连接的,打电话是基于连接的。

也就是说UDP是基于非连接的,TCP是基于连接的。

可靠传输: TCP 协议通过确认应答、连接管理、流量控制、拥塞控制来确保可靠性传输; UDP 不保证可靠性传输。

性能效率: TCP 协议传输效率慢,需要较多的资源开销。 UDP 协议传输效率快,需要较 少的资源开销。

首部格式: TCP 协议的首部需要 20-60 个字节, UDP 协议需要8个字节。

 

相关文章:

计算机网络常见面试题

目录 一、谈一谈对OSI七层模型和TCP/IP四层模型的理解? 答:OSI七层模型主要分为: TCP/IP四层协议: 二、谈谈TCP协议的3次握手过程? 三、TCP协议为什么要3次握手?2次,4次不行吗? …...

springboot整合MeiliSearch轻量级搜索引擎

一、Meilisearch与Easy Search点击进入官网了解&#xff0c;本文主要从小微型公司业务出发&#xff0c;选择meilisearch来作为项目的全文搜索引擎&#xff0c;还可以当成来mongodb来使用。 二、starter封装 1、项目结构展示 2、引入依赖包 <dependencies><dependenc…...

禁用鼠标的侧边按键

新买了个鼠标&#xff0c;整体都不错&#xff0c;就是鼠标左侧有两个按键&#xff0c;大拇指经常无意触碰到&#xff0c;造成误操作。 就想着关闭侧边按键功能。以下这批文章帮了大忙&#xff01; 鼠标侧键屏蔽&#xff0c;再也不用担心按到侧键了。_禁用鼠标侧键_挣扎的蓝藻…...

【C语言】数组和指针刷题练习

指针和数组我们已经学习的差不多了&#xff0c;今天就为大家分享一些指针和数组的常见练习题&#xff0c;还包含许多经典面试题哦&#xff01; 一、求数组长度和大小 普通一维数组 int main() {//一维数组int a[] { 1,2,3,4 };printf("%d\n", sizeof(a));//整个数组…...

2023年中国研究生数学建模竞赛D题解题思路

为了更好的帮助大家第一天选题&#xff0c;这里首先为大家带来D题解题思路&#xff0c;分析对应赛题之后做题阶段可能会遇到的各种难点。 稍后会带来D题的详细解析思路&#xff0c;以及相关的其他版本解题思路 成品论文等资料。 赛题难度评估&#xff1a;A、B>C>E、F&g…...

在编译源码的环境下,搭建起Discuz!社区论坛和WordPress博客的LNMP架构

目录 一.编译安装nginx 二.编译安装MySQL 三.编译安装PHP 四.安装论坛 五.安装wordpress博客 六.yum安装LNMP架构&#xff08;简要过程参考&#xff09; 一.编译安装nginx 1&#xff09;关闭防火墙&#xff0c;将安装nginx所需软件包传到/opt目录下 systemctl stop fire…...

腾讯面试题:无网络环境,如何部署Docker镜像?

亲爱的小伙伴们&#xff0c;大家好&#xff01;我是小米&#xff0c;很高兴再次和大家见面。今天&#xff0c;我要和大家聊聊一个特别有趣的话题——腾讯面试题&#xff1a;无网络环境&#xff0c;如何部署Docker镜像&#xff1f;这可是一个技术含量颇高的问题哦&#xff01;废…...

医学影像信息(PACS)系统软件源码

PACS系统是PictureArchivingandCommunicationSystems的缩写&#xff0c;与临床信息系统&#xff08;ClinicalInformationSystem,CIS&#xff09;、放射学信息系统(RadiologyInformationSystem,RIS)、医院信息系统(HospitalInformationSystem,HIS)、实验室信息系统&#xff08;L…...

【01】FISCOBCOS的系统环境安装

我们选择ubuntu系统 01 https://www.ubuntu.org.cn/global 02 03下载最新版 04等待下载 00提前准备好VM&#xff0c;点击创建新的虚拟机 01选择自定义安装 02一直下一步到 03 04 05其他的默认即可 06 07 08 09 10 11一直默认到下面 12 13等待安装 安装后重启即可…...

flutter 权限和图片权限之前的冲突

权限插件 permission_handler: ^9.2.0想调起相册和视频&#xff0c;这个插件只有Permission.storage.request().&#xff0c;获取存储权限。 问题是android 13的一些手机&#xff0c;系统设置没有存储权限&#xff0c;用了上面这个权限&#xff0c;三次拒绝后就永久拒绝了&…...

OpenCV(四十八):读取视频和保存视频

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个功能强大的开源计算机视觉库&#xff0c;它提供了丰富的功能&#xff0c;包括读取和保存视频。下面分别演示如何使用OpenCV来读取视频和保存视频。 1. 读取视频&#xff1a; 在OpenCV中我们要获取一…...

如何在react/next.js app中的同级组件间传递数据

这篇文章也可以在我的博客中查看 问题 为什么会有这么奇怪的需求&#xff1f;在事情真正发生前真的难说&#xff0c;但真遇到一个需要这么做的情况。 最近想做一个网页时钟&#xff0c;它的结构如下&#xff1a; 时钟&#xff08;计算时间&#xff0c;组织各个要素&#xff…...

软件需求文档、设计文档、开发文档、运维文档大全

在软件开发过程中&#xff0c;文档扮演着至关重要的角色。它不仅记录了项目的需求、设计和开发过程&#xff0c;还为项目的维护和管理提供了便利。本文将详细介绍软件开发文档的重要性和作用&#xff0c;以及需求分析、软件设计、开发过程、运维管理和项目管理等方面的文档要求…...

排序算法-----归并排序

目录 前言&#xff1a; 归并排序 1. 定义 2.算法过程讲解 2.1大致思路 2.2图解示例 拆分合成步骤 ​编辑 相关动态图 3.代码实现&#xff08;C语言&#xff09; 4.算法分析 4.1时间复杂度 4.2空间复杂度 4.3稳定性 前言&#xff1a; 今天我们就开始学习新的排序算法…...

docker 配置 gpu版pytorch环境--部署缺陷检测--Anomalib

目录 一、docker 配置 gpu版pyhorch环境1、显卡驱动、cuda版本、pytorch cuda版本三者对应2、拉取镜像 二、部署Anomalib1、下载Anomalib2、创建容器并且运行3、安装Anomalib进入项目路径安装依赖测试&#xff1a; 一、docker 配置 gpu版pyhorch环境 1、显卡驱动、cuda版本、p…...

为什么定时发朋友圈会更有效呢?

这是因为在同一时段 发送的好友朋友圈 无法有效分散用户的注意力 导致曝光度难以提升 而通过推广定时发朋友圈 可根据自己的粉丝活跃度 设置发圈时间 让每一条朋友圈都能高效 传递到更多的好友手中 这样&#xff0c;曝光度自然而然地就大大提升了&#xff01; 1.多个号…...

【跟小嘉学 PHP 程序设计】一、PHP 开发环境搭建

系列文章目录 【跟小嘉学 PHP 程序设计】一、PHP 开发环境搭建 文章目录 系列文章目录@[TOC](文章目录)前言一、PHP介绍二、Centos 安装 PHP2.1、安装并启动 Nginx2.2、安装并启动 mariadb2.3、安装 rh-php2.4、添加 Nginx 配置2.5、Nginx 服务三、使用 Docker 为 PHP 部署开发…...

【zookeeper】zk选举、使用与三种节点简介,以及基于redis分布式锁的缺点的讨论

这里我准备了4台虚拟机&#xff0c;从node1到node4&#xff0c;其myid也从1到4. 一&#xff0c;zk server的启动和选举 zk需要至少启动3台Server&#xff0c;按照配置的myid&#xff0c;选举出参与选举的myid最大的server为Leader。&#xff08;与redis的master、slave不同&a…...

Unity截图生成图片 图片生成器 一键生成图片

使用Unity编辑器扩展技术实现快速截图功能 效果&#xff1a; 里面没有什么太难的技术&#xff0c;直接上源码吧 注意&#xff01;代码需要放在Editor文件下才能正常运行 using System; using UnityEditor; using UnityEngine;[ExecuteInEditMode] public class Screenshot …...

Matlab图像处理-区域特征

凹凸性 设P是图像子集S中的点&#xff0c;若通过的每条直线只与S相交一次&#xff0c;则称S为发自P的星形&#xff0c;也就是站在P点能看到S的所有点。 满足下列条件之一&#xff0c;称此为凸状的&#xff1a; 1.从S中每点看&#xff0c;S都是星形的&#xff1b; 2.对S中任…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

中医有效性探讨

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

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

Linux-进程间的通信

1、IPC&#xff1a; Inter Process Communication&#xff08;进程间通信&#xff09;&#xff1a; 由于每个进程在操作系统中有独立的地址空间&#xff0c;它们不能像线程那样直接访问彼此的内存&#xff0c;所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...

虚幻基础:角色旋转

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 移动组件使用控制器所需旋转&#xff1a;组件 使用 控制器旋转将旋转朝向运动&#xff1a;组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转&#xff1a;必须移动才能旋转&#xff0c;不移动不旋转控制器…...

【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space

问题&#xff1a;IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案&#xff1a;将编译的堆内存增加一点 位置&#xff1a;设置setting-》构建菜单build-》编译器Complier...

react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)

之前都是使用react-pdf来渲染pdf文件&#xff0c;这次有个需求是要兼容xp环境&#xff0c;xp上chrome最高支持到49&#xff0c;虽然说iframe或者embed都可以实现预览pdf&#xff0c;但为了后续的定制化需求&#xff0c;还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...