计算机网络的相关知识点总结
1.谈一谈对OSI七层模型和TCP/IP四层模型的理解?
不管是OSI七层模型亦或是TCP/IP四层模型,它们的提出都有一个共同的目的:通过分层来将复杂问题细化,通过各个层级之间的相互配合来更好的解决计算机中出现的问题。
说到分层,就有对应的具体不同的分层模型。TCP/IP四层模型其实是对OSI七层模型的简化版。OSI网络七层模型包括以下几个部分:
层级 (高-->低) | 层级名称 | 对应功能 |
7 | 应用层 | 为计算机用户提供服务 |
6 | 表示层 | 数据处理(编码解码、加密解密、压缩解压缩) |
5 | 会话层 | 管理会话(建立,维护、重连) |
4 | 传输层 | 为两个计算机进程之间的通信提供通用的数据传输服务 |
3 | 网络层 | 路由和寻址(决定数据在网络中的路径) |
2 | 数据链路层 | 计算机相邻节点的直接通信 |
1 | 物理层 | 为数据链路层提供传输介质的,为计算机相邻节点的通信提供以比特流的透明传输 |
层与层之间交互是基于“接口”的服务调用,当前层级负责接收下一层提供的服务,同时为自己的上一层提供服务。本层级之间只需关注自己内在的功能,层级内之间的交互是基于“协议”的。
而TCP/IP四层模型则包括应用层(应用层、表示层、会话层)、传输层、网络层、网络接口层(数据链路层、物理层),如下:
层级 | 层级名称 | 常见协议 |
4 | 应用层 | DNS:域名解析协议 |
FTP:文件传输协议 | ||
SMTP:简单邮件传输协议 | ||
3 | 传输层 | TCP:传输控制协议 |
UDP:用户数据报协议 | ||
2 | 网络层 | IPV6:互联网协议 |
ICMPv6:互联网控制协议 | ||
1 | 网络接口层 | ARP:地址解析协议(数据链路层) |
2.谈谈TCP协议的3次握手过程?
利用TCP协议建立连接时,会产生三次握手,三次握手是发生在客户端(接受方)与服务器(发送方)之间的。
第一次握手:由客户端主动打开,并主动发送建立连接请求的数据包(同步SYN=1,确认ACK=0)给服务器端,客户端由主动打开转换为发送状态;
第二次握手:服务器被动打开接收客户端发送的建立连接请求的数据包,若服务器同意建立连接,则向客户端发送(响应)一个ACK确认=1,SYN同步=1的数据包,此时服务器转换为接收状态;
第三次握手:客户端接收到服务器端发送的同意连接的数据包后,状态变为建立连接成功状态,随后向服务器端发送一个ACK=1的确认数据包,此时服务器端状态也是建立连接成功状态。
由三次握手,客户端与服务器端成功建立连接。
3.TCP协议为什么要3次握手?2次,4次不行吗?
握3次手,是恰到好处的。为什么这么说呢?是因为若是2次握手,会造成重复连接的情况,而4次握手或更多次则会带来资源上的浪费。客户端与服务器端建立连接,是由客户端主动发起请求(第一次),服务器端告知客户端同意建立连接(第二次),客户端告知服务器端我知道你同意即确认(第三次),确保了双方之间通信的畅通然后开始数据传输。
如果没有这第三次的确认,一旦客户端由于网络延迟或其他原因导致的未及时发送请求连接的数据包,有可能就会再次重新发送请求连接的数据包,服务器端收到并同意连接,而此时第一个未及时发送的数据包又正常发送了,势必会导致服务器的再一次同意连接,这就导致了重复的连接,造成了不必要的资源浪费。
如果是4次及更多,我们要思考一个问题,建立连接的目的是?没错,是数据传输。三次握手就已经可以保证收发双方的正常通信了,此时应该要进行数据传输了,更多次的握手只会导致资源的浪费或者多次的请求连接的带来的不可控性。
4.谈谈TCP协议的四次挥手过程?
TCP协议的四次挥手是为了释放收发双方的连接的。
第一次挥手:客户端向服务器发出FIN=1的数据包,用来告知服务器断开连接的。
第二次挥手:服务器接收到终止连接的请求后,同意终止向客户端发出ACK=1的同意断开连接数据包,此时真的断开了吗?答案是否定的,因为是无法保证客户端向服务器发出断开请求时,服务器刚好不发送数据给客户端。
第三次挥手:服务器已经处理完发生要发送的数据后,正式向客户端发送FIN=1的断开连接的数据包。此时收发双方之间真的不能再发送数据了。
第四次挥手:客户端向服务器端发送ACK=1的确认数据包。
至此,收发双方彻底断开连接。
其实你稍微观察,客户端就像那个“渣男”,服务器端更像是一位“善解人意的女朋友”,哈哈哈,好了,开个玩笑。
5.什么是流量控制?
流量控制是用来控制发送方传输数据的速率的,从而保证接收方可以及时接收数据。发送方每次发送数据的大小是由接收方控制的,每当接收方来不及处理数据时,会通知发送方降低速率,避免丢包的风险,从而达到流量控制;TCP协议是通过滑动窗口来实现流量控制的,滑动窗口中若可用窗口的长度为0则意味着不可发送数据。
6.什么是滑动窗口?
收发双方在传输数据时都各自维护了各自独立的缓冲区,发送方在向接收方发送数据包时不断地收到ACK=1的确认应答,收发双方各自的缓冲区都在不断地向前移动,这个不断向前移动的缓冲区即为滑动窗口。
接收方只是单纯的接收数据,所以它的整个滑动窗口都是用来接收数据的;而发送方,因为要接受接收方的确认应答才好进行继续的发送,所以它的滑动窗口分为了发送窗口和可用窗口。发送窗口包括可用窗口和已发送但未收到确认应答的数据区,可用窗口则包含了未发送但在接收方处理范围内的数据,只有当发送方收到接收方的确认应答时,已发送但未收到确认应答的数据区才会减少,可用窗口增多,整个发送窗口向前滑动。
7.什么是拥塞控制?
拥塞控制顾名思义即发生拥塞了就控制,在网络中传输数据包的场景下,拥塞控制即在网络拥堵时控制发送的数据包的量,避免过多数据注入网络加重了网络的负担,从而导致的恶性循环。拥塞控制主要针对的是发送方的传输数据量,一旦网络拥堵就控制发送方的发送数据量。
TCP主要通过四种算法来进行拥塞控制。因为网络是动态变化的,所以TCP引入了拥塞窗口cwnd,它是一个状态变量,随着网络状态的改变而不断变化。首先是慢启动,即发送方开始发送数据时的量由小到大的逐渐增长,设置cwnd=1逐渐以指数形式增长(2、4、6、8...);然后是拥塞避免,慢启动的数据量增长的速度是很快的,它的量越大拥塞发生的概率也就越大,所以为了避免这种情况,慢启动会设置一个门限值,cwnd到达了这个门限值便逐渐改为线性增长(15、16、17...);其次就是拥塞发生,从慢启动到拥塞避免整个过程发送的数据量一直是在增加的,随着数据量一直在增加,拥塞是难以避免的,于是就会出现丢包、延迟发送数据包等等情况,此时机会触发重传,不同状况的重传发生拥塞处理的策略也不同。触发超时重传,门限值会减少为当前拥塞窗口的一半,随即令拥塞窗口的值=1,重新进入慢启动状态;触发快速重传,即拥塞窗口cwnd的值减少为当前的一半,门限值也改为当前的cwnd的值,这个时候还不至于向超时重传那样直接“从头再来”,而是进入到快速恢复状态;最后就是快速恢复,因为快速重传发生的前提时丢包产生了3次同样的数据应答,所以快速恢复将cwnd的值改为了门限值+3,继续重传丢失的数据包,再次收到应答cwnd+1。
8.TCP和UDP有什么区别?
TCP | UDP | ||
特点 | 面向连接的、可靠的 | 无连接的、不可靠的 | |
性能 | 传输效率 | 效率低 | 效率高 |
占用资源 | 多 | 少 | |
首部 | 20-60个字节 | 8个字节 | |
适用场景 | 要求通信传输可靠 (文件传输、邮件传输) | 要求通信速度快 (视频、音频传输) |
以上就是我的拙见,欢迎诸君探讨。
相关文章:
计算机网络的相关知识点总结
1.谈一谈对OSI七层模型和TCP/IP四层模型的理解? 不管是OSI七层模型亦或是TCP/IP四层模型,它们的提出都有一个共同的目的:通过分层来将复杂问题细化,通过各个层级之间的相互配合来更好的解决计算机中出现的问题。 说到分层…...

WPF实现轮播图(图片、视屏)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

【Vue.js】使用Element搭建首页导航左侧菜单
目录 Mock.js 是什么 有什么好处 安装mockjs 编辑 引入mockjs mockjs使用 login-mock Bus事物总线 首页导航栏与左侧菜单搭建 结合总线完成组件通讯 Mock.js 是什么 Mock.js是一个用于生成随机数据的模拟数据生成器。它可以帮助开发人员模拟接口请求,生…...

Spring MVC常见面试题
Spring MVC简介 Spring MVC框架是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。简单来说,Spring MVC整合了前端请求的处理及响应。 Servlet 是运行在 Web 服务器或应用…...

Java基础面试题精选:深入探讨哈希表、链表和接口等
目录 1.ArrayList和LinkedList有什么区别?🔒 2.ArrayList和Vector有什么区别?🔒 3.抽象类和普通类有什么区别?🔒 4.抽象类和接口有什么区别?🔒 5.HashMap和Hashtable有什么区别&…...

Spark计算框架
Spark计算框架 一、Spark概述二、Spark的安装部署(安装部署Spark的Cluster Manager-资源调度管理器的)1、Spark的安装模式1.1、Spark(单节点)本地安装1.2 Spark的Standalone部署模式的伪分布式安装1.3Spark的YARN部署模式1.4Spark…...

mybatis缓存源码分析
mybatis缓存源码分析 背景 在java程序与数据库交互的过程中永远存在着性能瓶颈,所以需要一直进行优化.而我们大部分会直接将目标放到数据库优化,其实我们应该先从宏观上去解决问题进而再去解决微观上的问题.性能瓶颈体现在什么地方呢?第一网络通信开销,网络数据传输通信.…...
机房小探索
现在连不了NJU-WLAN,怀疑是没有插网线,可以考虑买个USB转网卡的接口,但是我的电脑只有两个USB插口,还不知道版本是什么,之后还想连鼠标跟键盘外设呢。只能连NJU_SWI_WLAN,合理怀疑是Software Internet的缩写…...

PHP8的类与对象的基本操作之成员变量-PHP8知识详解
成员变量是指在类中定义的变量。在类中可以声明多个变量,所以对象中可以存在多个成员变量,每个变量将存储不同的对象属性信息。 例如以下定义: public class Goods { 关键字 $name; //类的成员变量 }成员属性必须使用关键词进行修饰…...

phpstudy2016 RCE漏洞验证
文章目录 漏洞描述漏洞验证 漏洞描述 PHPStudyRCE(Remote Code Execution),也称为phpstudy_backdoor漏洞,是指PHPStudy软件中存在的一个远程代码执行漏洞。 漏洞验证 打开phpstudy2016,用bp自带的浏览器访问www目录下…...

【QT】QT事件Event大全
很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT中的事件Event技术,主要从QT事件流程和常用QT事件方法等方面展开,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易…...

华为云云耀云服务器L实例评测|华为云上安装etcd
文章目录 华为云云耀云服务器L实例评测|华为云上安装etcd一、什么是etcd官方硬件建议 二、华为云主机准备三、etcd安装1. 安装预构建的二进制文件2. 从源代码构建 四、etcd服务注册与发现1. 配置etcd2. 使用systemctl 管理启动etcd服务3. 注册服务4. 发现服务 五、其…...

RDLC动态设置整个表格是否显示
最近有个新的需求:使用RDLC打印,当数据库中能查出数据时,显示表格。没有数据时,不显示整个表格。 1.首先在RDLC中选中表格的任意一列,右键Tablix属性 2.Tablix属性中选中可见性》选中基于表达式显示或隐藏(E)并点开右…...

xp 系统 安装 python 2.7 ide pip
1 下载python http://www.python.org/ftp/python/ python-2.7.2.msi 安装完需要设置环境变量 2 下载 setuptools setuptools-0.6c11.win32-py2.7.exe https://pypi.tuna.tsinghua.edu.cn/simple/setuptools/ 3 下载 pip ,python 2.7 最高支持 pip 20.3.4 https:…...

RabbitMQ生产故障问题分析
1. 问题引发 由某个服务BI-collector-xx队列出现阻塞,影响很整个rabbitMQ集群服务不可用,多个应用MQ生产者服务出现假死状态,系统影响面较广,业务影响很大。当时为了应急处理,恢复系统可用,运维相对粗暴的把…...

12大常用自动化测试工具,请记得转发收藏!
常用自动化测试工具 1、Appium AppUI自动化测试 Appium 是一个移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台,Appium 是一个C/S 架构&…...

Android Studio 的aapt2.exe在哪个目录下
一般在:C:\Users\admin\AppData\Local\Android\Sdk\build-tools\30.0.2(不一定是30.0.2,这个得看你的版本) 怎么找: 1.打开Android studio...

【pytest】conftest.py使用
1. 创建test_project 目录 test_project/sub/test_sub.py def test_baidu(test_url):print(fsub {test_url}) test_project/conftest.py 设置钩子函数 只对当前目录 和子目录起作用 import pytest #设置测试钩子函数 pytest.fixture() def test_url():return "http…...

SpringBoot集成Prometheus实现监控
SpringBoot配置Prometheus pom.xml 引入监控以及prometheus依赖 <dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency><dependency><groupId>org.springfram…...

【操作系统笔记十】缓存一致性
CPU 核心之间数据如何传播 高速缓存中的值被修改了,那么怎么同步到内存中呢? ① 写直达(Write-Through)② 写回(Write-Back) 写直达(Write-Through) 简单,但是很慢&am…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
k8s从入门到放弃之Pod的容器探针检测
k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...