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

计算机网络常见问题

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

1.1.为什么要分层?

        在计算机中网络是个复杂的系统,不同的网络与网络之间由于协议,设备,软件等各种原因在协调和通讯时容易产生各种各样的问题。例如:各物流公司的快递站点,快递人员,货运方式都有可能不同,但对更个流程之间进行划分,就方便了客户和物流公司的管理。所以网络也需要一个标准化的思想或者模型来统一协调。

1.2.分层的好处?

  • 各层之间是独立的,不用过多关心其他层次的内容,更好找出问题;

  • 灵活性好,任何一层发生变化不容易影响上下层;

  • 架构上可分割开,各层可用最好的技术实现;

  • 能促进标准化的工作,易于实现和维护;

1.3.OSI七层模型

  OSIOpen System Interconnect)网络7层模型是ISO组织定义的一个计算机互联的标准分层模型,但它只是一个定义,目的是为了简化网络各层的操作,提供标准接口便于实现和维护,从上至下依次包括:应用层表示层会话层传输层网络层链路层物理层

1.4. TCP/IP四层模型

        但在实际使用时根据使用协议对七层模型部分层级进行合并简化。分成4层:应用层传输层网络层网络接口层(数据链路层、物理层)。

        其中将应用,表示,会话三层合称为应用层,将数据链路,物理合称网络接口层。

2.谈谈TCP协议的3次握手过程?

2.1.简述

握手过程就是TCP发送端和接收端通过三次对话应答的方式进行建立可靠连接的过程

2.2.具体过程

注意:大写字母SYNACK都是TCP首部中的控制位内容,确定本次报文的性质。 

  • 确认 ACK ACK是对已接受数据的确认。TCP 规定:ACK默认为0,在连接建立后,所有传送的报文段都必须把 ACK 设置为 1。当 ACK=1 时,确认号字段才有效,否则无效。
  • 同步 SYN :在连接建立时使用,表示这是一个连接请求或连接接受报文。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1

第一次挥手:

由发送方向接收方发送请求连接的报文。

报文首部内容:同步SYN=1确认ACK=0序号seq=x。

序号:即发送报文中数据的第一个字节序号。

第二次挥手:

由接收方向发送方发送请求连接的确认报文。

报文首部内容:同步SYN=1,确认ACK=1,序号seq=y,确认号ack=x+1

确认号:即下次期待接收的第一字节序号。

第三次挥手:

由发送方向接收方发送确认报文

报文首部内容:同步SYN=0,确认ACK=1,序号seq=x+1,确认号ack=y+1

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

        TCP协议的3次握手的作用是为了在建立连接时,避免重复连接,防止旧的重复连接引起连接混乱问题。另外,通过三次握手,可以得到一个确认的可靠初始化序列号seq,用于进行可靠性传输。而如果只有2次握手,则无法初始化序列号seq。

综上所述:TCP协议最少需要通过3次握手建立连接。当然, TCP 连接也通过4次握手或5次握手建立连接,实现 TCP 连接的稳定性,但3次握手是最节省资源的连接方式。

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

4.1.简述

挥手过程就是TCP发送端和接收端通过四次对话应答的方式进行可靠连接释放的过程。

4.2.具体过程

  • 终止 FIN (FINis) : 用来释放一个连接。FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

 第一次挥手:

首先客户端向服务器发送连接释放的请求报文,并停止发送数据。

报文首部内容:FIN=1,ACK = 0

 第二次挥手:

服务器收到连接释放的报文之后,给客户端发送确认报文。

报文首部内容:FIN=0,ACK=1。

注意:第二次挥手后,客户端到服务器方向的连接就释放了,TCP连接处于半关闭状态。此时客户端无法发送数据给服务器,但是服务器还可以发送数据给客户端,客户端仍可以接收。

 第三次挥手:

服务器向客户端发送完数据后,向客户端发送释放连接的确认报文。

报文首部内容:ACK=1,FIN=1

 第四次挥手:

客户端收到服务器的连接释放报文段后,向服务器发出确认报文。

报文首部内容:ACK=1,FIN = 0

5.什么是流量控制?

简述:就是由接收方根据处理数据的能力控制发送方每次传输数据的量。

控制方法:使用可变大小的流量控制协议——滑动窗口协议。

窗口大小:通过接收方发送的确认报文中的窗口字段控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

6.什么是滑动窗口?

概念:是TCP协议用于实现流量控制的一种协议或者机制。

窗口内容划分:

发送方:

  1. 已发送并确认,窗口处理过多成功内容。
  2. 已发送未确认,等待接受的内容。
  3. 未发送未超出接收方窗口范围,在流量允许范围内窗口需要处理但尚未处理的内容。
  4. 未发送但超出接收方窗口范围。窗口尚未接收的内容。

接收方:

  1. 接受已确认,窗口已成功接收的内容,不在窗口范围内。
  2. 未收到但可以接受,等待接收的内容。

窗口在完成一个个数据处理后,按顺序向后执行即为滑动。

7.什么是拥塞控制?

简述:就是在网络传输中,维护一个叫做拥塞窗口(cwnd)的状态变量,决定每次可以发送的数据包(报文)的数量,来判断拥塞程度。

TCP主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、拥塞发生、快速恢复

慢开始:cwnd从1开始,每次加倍cwnd值,由小到大逐渐增大。

拥塞避免:慢开始会让发送方发送的速度越来越快,网络拥塞的可能性也就更高。设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,进入拥塞避免,每次将 cwnd加 1,降低拥塞窗口的增长速度。

拥塞发生:当网络慢慢进入拥塞状况,就可能出现丢包现象,这时需要对丢失的数据包进行重传。
当触发了重传机制,也就进入了拥塞发生。分为两种重传处理:

超时重传:将ssthresh 设为 cwnd/2,cwnd 重置为 1,重新进入慢启动。

快速重传:将cwnd = cwnd / 2,ssthresh = cwnd,进入快速恢复。

快速恢复:和快重传配合使用,当执行快重传时,ssthresh=ssthresh*0.5,cwnd = ssthresh + 3。

8.TCP和UDP有什么区别?

面向连接:TCP协议需要建立连接,仅支持一对一通信;UDP协议无需建立连接,支持一对一、一对多、多对一和多对多的交互通信。

传输可靠:TCP协议通过多种机制来确保可靠性传输;UDP不保证可靠性传输。

性能效率:TCP协议需要保证可靠性传输,相对传输效率慢,需要消耗较多的资源。UDP协议传输效率快,需要较少的资源开销。

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

应用场景:TCP协议保证可靠性传输,所以对数据准确性有要求的连接。如文件传输、发送和接收邮件、远程登录等场景。UDP协议可以进行广播,对数据量少场景由奇效。如QQ 语音、 QQ 视频 、直播等等

相关文章:

计算机网络常见问题

1.谈一谈对OSI七层模型和TCP/IP四层模型的理解? 1.1.为什么要分层? 在计算机中网络是个复杂的系统,不同的网络与网络之间由于协议,设备,软件等各种原因在协调和通讯时容易产生各种各样的问题。例如:各物流…...

上PICO,沉浸式观看亚运直播,参与跨国界游戏竞技

备受瞩目的杭州第19届亚运会,将于9月23日正式开幕。据悉,这也是有史以来项目最多的一届亚运会,除部分传统奥运项目外,还包含武术、藤球、板球、克柔术、柔术等亚洲特色项目,以及霹雳舞、电子竞技等深受年轻人喜爱的新兴…...

无重复字符的最长子串 - 力扣(LeetCode)

3. 无重复字符的最长子串 - 力扣(LeetCode) 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长…...

企业行政许可的种类有哪些?

从行政许可的性质、功能和适用条件的角度来说,大体可以划分为五类:普通许可、特许、认可、核准、登记。 1.普通许可 普通许可是一种允许符合特定条件的相对方行使某种权利的行为。在许多情况下,需要普通许可的活动都与国家安全、公共安全息…...

Flink--4、DateStream API(执行环境、源算子、基本转换算子)

星光下的赶路人star的个人主页 注意力的集中,意象的孤立绝缘,便是美感的态度的最大特点 文章目录 1、DataStream API1.1 执行环境(Execution Environment)1.1.1 创建执行环境 1.2 执行模式(Execution Mode)…...

#循循渐进学51单片机#指针基础与1602液晶的初步认识#not.11

1、把本节课的指针相关内容,反复学习3到5遍,彻底弄懂指针是怎么回事,即使是死记硬背也要记住,等到后边用的时候可以实现顿悟。学会指针,就是突破了C语言的一道壁垒。 2,1602所有的指令功能都应用一遍&#…...

Lua学习笔记:探究package

前言 本篇在讲什么 理解Lua的package 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉 ♠ 一级…...

【面试经典150 | 双指针】三数之和

文章目录 写在前面Tag题目来源题目解读解题思路方法一:暴力枚举方法二:双指针 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对…...

现代卷积网络实战系列3:PyTorch从零构建AlexNet训练MNIST数据集

1、AlexNet AlexNet提出了一下5点改进: 使用了Dropout,防止过拟合使用Relu作为激活函数,极大提高了特征提取效果使用MaxPooling池化进行特征降维,极大提高了特征提取效果首次使用GPU进行训练使用了LRN局部响应归一化&#xff08…...

Django系列:Django应用(app)的创建与配置

Django系列 Django应用(app)的创建与配置 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article…...

Linux查看程序和动态库依赖的动态库

一. 前言 在一些时候,我们需要知道一个程序或者动态库所依赖的动态库有哪些。比如,当我们运行一个程序的时候,发现可能会报错,提示找不到某个符号,这时我们就需要知道程序依赖了什么库,从而添加对应需要的动…...

vue3 无法使用pnpm安装依赖 或 Cannot find module preinstall.js

创建.npmrc文件在根目录 shamefully-hoisttrue auto-install-peerstrue strict-peer-dependenciesfalse删除 node_modules 和 pnpm-lock.yaml 文件 重新 pnpm i 就可以啦...

C/C++连接数据库,包含完整代码。

C/C连接数据库 本篇文章意在简洁明了的在linux环境下使用C/C连接远程数据库,并对数据库进行增删查改等操作。我所使用的环境是centos7,不要环境除环境配置外,代码是大同小异的。完整代码在最底部!!! 1.前…...

AUTOSAR词典:CAN驱动Mailbox配置技术要点全解析

AUTOSAR词典:CAN驱动Mailbox配置技术要点全解析 前言 首先,请问大家几个小小问题,你清楚: AUTOSAR框架下的CAN驱动关键词定义吗?是不是有些总是傻傻分不清楚呢?CAN驱动Mailbox配置过程中有哪些关键配置参…...

C语言 coding style

头文件 The #define Guard #define的保护文件的唯一性&#xff0c;防止被多重包含 格式 : <PROJECT>_< FILE>_H_ PROJECT : XS FILE : MV_CTR 头文件的包含顺序 C System FilesOther LibrariesUser LibraryConditional include 作用域 局部变量 -变量定义时需要…...

Python办公自动化之PDF

Python操作PDF 1、Python操作PDF概述2、批量拆分3、批量合并4、提取内容(文字)5、提取内容(表格)6、提取图片7、PDF添加水印8、加密与解密1、Python操作PDF概述 Python操作PDF主要有两个库:PyPDF2和pdfplumber PyPDF2是一个用于处理PDF文件的Python第三方库 官网文档参考:…...

【每日一题Day331】LC2560打家劫舍 IV | 二分查找 + 贪心

打家劫舍 IV【LC2560】 沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。 由于相邻的房屋装有相互连通的防盗系统&#xff0c;所以小偷 不会窃取相邻的房屋 。 小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额…...

JVM 参数详解

GC有两种类型&#xff1a;Scavenge GC 和Full GC 1、Scavenge GC 一般情况下&#xff0c;当新对象生成&#xff0c;并且在Eden申请空间失败时&#xff0c;就会触发Scavenge GC&#xff0c;堆的Eden区域进行GC&#xff0c;清除非存活对象&#xff0c;并且把尚且存活的对象移动到…...

uni-app获取地理位置

在uni-app中&#xff0c;可以通过uni.getLocation()方法获取地理位置。具体步骤如下&#xff1a; 在uni-app项目中的manifest.json文件中&#xff0c;添加需要获取地理位置的权限&#xff1a; {"mp-weixin": {"appid": "...","permission…...

Learn Prompt-Prompt 高级技巧:思维链 Chain of Thought Prompting

Jason Wei等作者对思维链的定义是一系列的中间推理步骤&#xff08; a series of intermediate reasoning steps &#xff09;。目的是为了提高大型语言模型&#xff08;LLM&#xff09;进行复杂推理的能力。 思维链通常是伴随着算术&#xff0c;常识和符号推理等复杂推理任务出…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

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

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

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...