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

golang 自动生成文件头

安装koroFileHeader控件 打开首选项&#xff0c;进入设置&#xff0c;配置文件头信息"fileheader.customMade": {"Author": "lmy","Date": "Do not edit", // 文件创建时间(不变)// 文件最后编辑者"LastEditors"…...

Excel中的宏、VBA

一、宏是什么&#xff1f; EXCEL MACRO 是一种记录和播放工具&#xff0c;它仅记录您的 Excel 步骤&#xff0c;并且宏将根据需要播放任意多次。 VBA 宏可自动执行重复任务&#xff0c;从而节省了时间。 这是一段可在 Excel 环境中运行的编程代码&#xff0c;但您无需成为编码…...

2023华为杯数学建模研赛思路分享——最全版本A题深度解析

问题回顾&#xff1a; WLAN网络信道接入机制建模 1. 背景 无线局域网&#xff08;WLAN, wireless local area network&#xff09;也即Wi-Fi广泛使用&#xff0c;提供低成本、高吞吐和便利的无线通信服务。基本服务集&#xff08;BSS, basic service set&#xff09;是WLAN的…...

【校招VIP】测试方案之测试需求分析

考点介绍&#xff1a; 需求分析就是要弄清楚用户需要的是什么功能&#xff0c;用户会怎样使用系统。这样我们测试的时候才能更加清楚的知道系统该怎么样运行&#xff0c;才能更好的设计测试用例&#xff0c;才能更好的测试。 测试方案之测试需求分析-相关题目及解析内容可点击…...

滚珠螺母的清洁方式

滚珠螺母是一种通过滚珠与螺杆进行螺旋运动转换的机械零件&#xff0c;主要用于控制螺杆的运动轨迹和方向&#xff0c;把原来的滑动摩擦利用滚珠的滚动变成滚动摩擦&#xff0c;因此滚珠螺母的摩擦系数大大降低&#xff0c;从而提高了传动效率&#xff0c;要想滚珠螺母达到预期…...

leetcode做题笔记148. 排序链表

给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 思路一&#xff1a;归并排序 c语言解法 struct ListNode* merge(struct ListNode* head1, struct ListNode* head2) {struct ListNode* dummyHead malloc(sizeof(struct ListNode));dummyHead…...

多线程学习

并发&#xff1a;交替运行 并行&#xff1a;一起运行 多线程实现方式 继承Thread类 ①自己定义一个类继承Thread public class MyThread extends Thread{public void run(){}} ②重写run方法 public class MyThread extends Thread{public void run(){"重写的内容&…...

软件测试/测试开发丨ChatGPT在测试计划中的应用策略

点此获取更多相关资料 简介 测试计划是指描述了要进行的测试活动的范围、方法、资源和进度的文档。它主要包括测试项、被测特性、测试任务和风险控制等。 所以在使用ChatGPT输出结果之前&#xff0c;我们需要先将文档的内容框架梳理好&#xff0c;以及将内容范围划定好&…...

链表oj3(Leetcode)——相交链表;环形链表

一&#xff0c;相交链表 相交链表&#xff08;Leetcode&#xff09; 1.1分析 看到这个我们首先想到的就是一个一个比较他们的值有相等的就是交点&#xff0c;但是如果a1和b2的值就相等呢&#xff1f;所以这个思路不行&#xff0c;第二种就是依次比较链表&#xff0c;但是这…...

nginx反向代理

nginx反向代理8.反向代理8.1 实现http反向代理8.1.1 反向代理配置参数8.1.2 反向代理单台web服务器8.1.2.1 端口号后加"/"8.1.2.2 端口号后不加"/" 8.1.3指定location 实现反向代理,动静分离8.1.4 反向代理实例&#xff1a;缓存功能8.1.4.1 举例 8.1.5 实现…...

电子商务网站建设作业代码/南京seo报价

由于 Linux 是一个多用户系统&#xff0c;同一时刻&#xff0c;系统中运行有属于不同用户的多个进程。那么&#xff0c;当处于某个终端上的用户按下了 CtrlC 键时&#xff08;产生 SIGINT 信号&#xff09;&#xff0c;系统如何知道将该信号发送到哪个进程&#xff0c;从而不影…...

网站关键词优化wang/seo引擎优化是做什么的

为什么80%的码农都做不了架构师&#xff1f;>>> 简单说说吧&#xff1a;我俩当年都是中兴15年那一批次的应届入职毕业生&#xff0c;一起参加入职公司级别的培训&#xff0c;一个班&#xff0c;一个小组。培训长达7天&#xff0c;无脑级别的洗脑&#xff08;你懂的…...

怎么做坑人的网站/自学seo能找到工作吗

创建一个控制台程序和一个类库, 在控制台创建一个匿名对象。然后再在类库中訪问它。代码例如以下&#xff1a; namespace ConsoleApplication1 {class Program{static void Main(string[] args){var obj new { Id 1 };var c new ClassLibrary1.TestClass();c.Test(obj);Cons…...

wordpress 小手枪图标/石家庄seo关键词

Hadoop 生产调优HDFS—核心参数NameNode 内存生产配置NameNode 内存计算Hadoop2.x 系列&#xff0c; 配置 NameNode 内存Hadoop3.x 系列&#xff0c;配置 NameNode 内存NameNode 心跳并发配置开启回收站配置回收站工作机制开启回收站功能参数说明查看回收站HDFS—集群压测测试 …...

现在流行的网站开发语言/网站查询进入

Spring Cloud Gateway除了具备请求路由功能之外&#xff0c;也支持对请求的过滤。通过Zuul网关类似&#xff0c;也是通过过滤器的形式来实现的。那么接下来我们一起来研究一下Gateway中的过滤器3.3.1 过滤器基础&#xff08;1&#xff09; 过滤器的生命周期Spring Cloud Gatewa…...

免费下载建设银行官方网站/武汉网站seo服务

最近一直再跟同一个项目UEEEU&#xff0c;干了很多事&#xff0c;锻炼自然也很多&#xff0c;这阵子也是从早到晚的忙活&#xff0c;身体似乎都不知疲惫的说&#xff0c;其实忙着也好&#xff0c;有钱有经验嘛&#xff0c;多踏实哈。这一年来又变了很多&#xff0c;进步很多&am…...