计算机网络常见问题
1.谈一谈对OSI七层模型和TCP/IP四层模型的理解?
1.1.为什么要分层?
在计算机中网络是个复杂的系统,不同的网络与网络之间由于协议,设备,软件等各种原因在协调和通讯时容易产生各种各样的问题。例如:各物流公司的快递站点,快递人员,货运方式都有可能不同,但对更个流程之间进行划分,就方便了客户和物流公司的管理。所以网络也需要一个标准化的思想或者模型来统一协调。
1.2.分层的好处?
-
各层之间是独立的,不用过多关心其他层次的内容,更好找出问题;
-
灵活性好,任何一层发生变化不容易影响上下层;
-
架构上可分割开,各层可用最好的技术实现;
-
能促进标准化的工作,易于实现和维护;
1.3.OSI七层模型
OSI
(Open System Interconnect
)网络7
层模型是ISO
组织定义的一个计算机互联的标准分层模型,但它只是一个定义,目的是为了简化网络各层的操作,提供标准接口便于实现和维护,从上至下依次包括:应用层、表示层、会话层、传输层、网络层、链路层、物理层。
1.4. TCP/IP四层模型
但在实际使用时根据使用协议对七层模型部分层级进行合并简化。分成4层:应用层、传输层、网络层、网络接口层(数据链路层、物理层)。
其中将应用,表示,会话三层合称为应用层,将数据链路,物理合称网络接口层。
2.谈谈TCP协议的3次握手过程?
2.1.简述
握手过程就是TCP发送端和接收端通过三次对话应答的方式进行建立可靠连接的过程
2.2.具体过程
注意:大写字母SYN,ACK都是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协议用于实现流量控制的一种协议或者机制。
窗口内容划分:
发送方:
- 已发送并确认,窗口处理过多成功内容。
- 已发送未确认,等待接受的内容。
- 未发送未超出接收方窗口范围,在流量允许范围内窗口需要处理但尚未处理的内容。
- 未发送但超出接收方窗口范围。窗口尚未接收的内容。
接收方:
- 接受已确认,窗口已成功接收的内容,不在窗口范围内。
- 未收到但可以接受,等待接收的内容。
窗口在完成一个个数据处理后,按顺序向后执行即为滑动。
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局部响应归一化(…...

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的保护文件的唯一性,防止被多重包含 格式 : <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】 沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋 。 小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额…...

JVM 参数详解
GC有两种类型:Scavenge GC 和Full GC 1、Scavenge GC 一般情况下,当新对象生成,并且在Eden申请空间失败时,就会触发Scavenge GC,堆的Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到…...
uni-app获取地理位置
在uni-app中,可以通过uni.getLocation()方法获取地理位置。具体步骤如下: 在uni-app项目中的manifest.json文件中,添加需要获取地理位置的权限: {"mp-weixin": {"appid": "...","permission…...

Learn Prompt-Prompt 高级技巧:思维链 Chain of Thought Prompting
Jason Wei等作者对思维链的定义是一系列的中间推理步骤( a series of intermediate reasoning steps )。目的是为了提高大型语言模型(LLM)进行复杂推理的能力。 思维链通常是伴随着算术,常识和符号推理等复杂推理任务出…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...