网络原理04

可靠传输,是TCP最核心的特性

可靠传输不是说数据100%传输给接收方了

1)发送方发出数据后,能过知道接收方是否收到数据

2)一旦发现对方没收到,可以通过一定的方法”补救”

1. 确认应答

发送方,把数据已发给接收方后,接收方收到数据就会给发送方返回一个 应答报文(acknowlrdge,ack)

发送方,如果接收到这个应答报文,就知道自己的数据是否发送成功了

发送数据的时候可能会出现“后发先至”的情况——>

一个数据包在进行传输的过程中,走的路径非常复杂,不同的数据包,可能走不通的路线

TCP 此事要完成两个工作:

1. 确保应答报文和发出去的数据,不要出现歧义 

2. 确保在出现先发后至的情况下,能够让应用程序这边仍然按照正确的顺序来理解数据

序号就是一个整数,大小关系描述了数据的先后顺序

序号是按照字节编号的——>TCP是面向字节流的

TCP报头记录的序号,是这一次传输的载荷数据中第一个字节的序号,剩下的序号,都需要一次推出

如图可知,第一次序号为1,第二次为1001,

相当于是1001之前的数据都被接收到了,接下来对端开始索要1001开始的数据

此处通过特殊的ack数据包,里面携带的“确认序号”告诉对方,那些数据已经被确认了

此时发送方,就知道了自己发送的数据到没到

可靠传输——>达成的最核心机制是  确认应答

区分一个数据包是普通的数据,还是ack应答数据报

  第二位  ACK

为1,当前数据包是一个应答报文,里面的“确认序号字段”生效

为0,当前数据宝是一个普通报文,里面的“确认序号字段”不生效

2. 超时重传

如果数据包太多了,就会阻塞在一些交换机/路由器上,其中大部分的数据包就被直接丢弃了

确认应答是一个理想的情况,如果网络传输过程中,出现丢包,发送方就无法收到ack

——>使用超时重传,针对确认应答,进行补充

由于丢包是一个随机事件,于是就有两种情况:

            1. 传输的数据丢了                                                     2. 返回的ack丢了

站在传输方的角度,无法区分这两种情况

无论出现上述那种情况,发送方都会进行“重新传输”

此时,发送方何时重传——>

发送方,在发出数据之后,会先等一段时间,如果这个时间之内,ack来了,就是为数据到达,反之,就会触发重传

1. 初始的等待时间,是可配置的,不同系统上的不一定一样,可以通过修改内核参数来改变

2. 等待是时间,也会动态变化,每多经历一次超时,等待时间就会变长

等待也不是无限拉长的,重传若干次,就会放弃TCP连接(触发TCP重置连接)

等待时间变长,意味着对能正确传输数据是悲观的

如果数据丢了,不会触发ack;如果ack丢了,返回的是ack发送数据的第一个字节(滑动窗口)

     

返回的ack丢失时,B会收到两条一样的数据——>

TCP会有一个“接收缓冲区”(内存空间),保存当前已经接收到的数据,以及数据的序号

如果接收方发现,当前发送方发来的数据,已经在接收缓冲区中存在(收到重复的数据),接收方就会直接把这个后来的数据丢弃掉,确保应用程序进行read的时候,读到的是只有一条数据

3. 连接管理

建立连接(三次握手)+断开连接(四次挥手)        handshake

handshake相当于是打个招呼,没有实际意义,比较简短,是为了引起对方注意

TCP的“握手”,也就是给对方传输一个简短的,没有业务数据的数据包

通过这个数据包,唤起对方注意,从而触发后续的操作

同步报文段——特殊的TCP数据包,没有载荷(不携带业务数据)——>应用层数据包

        第五位

为1,表示这个报文是一个同步报文段

为0,则不是

TCP 的三次握手

TCP 在建立连接的过程,需要通信双方一共“打三次招呼”才能建立连接

          syn  同步报文段      ack  应答数据报

此时,A和B记录了对方的信息(构成“逻辑”上的连接)

通信过程中,通信双方都要给对方发起syn,也要反馈ack

一共进行四次握手,中间两次可以合并成一次

TCP是为了实现可靠传输

进行确认应答和超时重传有个前提,当前网络环境时基本可用的,通畅的

三次握手的作用:

1)确认当前网络是否畅通

2)要让发送方和接收方都能确认自己的发送能力和接受能力均正常

3)让通信双方在握手过程中,针对一些重要参数进行协商

TCP通信过程中的序号从几开始,就是双方协商出来的(一般不是从1开始)

每次建立连接的时候,都会协商出一个比较大的,和上次不一样得值

有时候网络不太好,客户端和服务器可能

在新的连接建立好后,旧的数据又传输过来断开重连,此时应该直接丢弃——>

如果发现收到的数据序号和当前数据序号差异较大,就可以直接丢弃

此处仅对连接管理机制进行初步介绍,下节将详细介绍连接管理和其他机制 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序5-图片实现点击动作和动态加载同类数据

搜索 微信小程序 “动物觅踪” 观看效果 感谢阅读,初学小白,有错指正。 一、功能描述 a. 原本想通过按钮加载背景图片,来实现一个可以点击的搜索button,但是遇到两个难点,一是按钮大小调整不方便(网上搜索…

“切片赋值”创建列表批量操作“新”方法(Python)

[start:end]切片赋值,扩展了list批量增减元素的操作能力。 (笔记模板由python脚本于2024年12月06日 15:07:56创建,本篇笔记适合研python基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:…

Unraid实现相册同步与展示的方案探讨

背景:Unraid作为一个NAS系统,能够实现基本的NAS文件管理功能,但是不提供额外的功能如影音、同步、办公、和内网穿透等,这些在其他的NAS产品如群晖、绿联、威联通等都是提供支持的。然而unraid也有其他方案,即通过特别方…

常见的网络攻击手段

IP 欺骗 IP 是什么? 在网络中,所有的设备都会分配一个地址。这个地址就仿佛小蓝的家地址「多少号多少室」,这个号就是分配给整个子网的,「室」对应的号码即分配给子网中计算机的,这就是网络中的地址。「号」对应的号码为网络号…

印闪网络:阿里云数据库MongoDB版助力金融科技出海企业降本增效

客户背景 上海印闪网络科技有限公司,于2017年1月成立,投资方包括红杉资本等多家国际知名风投公司。公司业务聚焦东南亚普惠金融,常年稳居行业头部。创始团队来自腾讯,中国团队主要由运营、风控及产研人员组成,核心成员…

51c嵌入式~单片机~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的电平信号的MCU怎么通信? 下面这个“电平转换”电路,理解后令人心情愉快。电路设计其实也可以很有趣。 先说一说这个电路的用途:当两个MCU在不同的工作电压下工作&a…

Java 基础知识——part 1

1.目前Java平台有三种版本: Java SE:用于开发桌面应用程序 Java EE:用于编写企业级应用程序 Java ME:用于开发设备应用程序 2.Applet可嵌入Web文档的一种小型程序,因网络传输速度关系都很短小 3.Appilication&…

嵌入式驱动开发详解6(RTC)

文章目录 前言RTC简介RTC驱动分析RTC驱动框架RTC驱动实现 RTC应用后续 前言 实时时钟是很常用的一个外设,通过实时时钟我们就可以知道年、月、日和时间等信息。 因此在需要记录时间的场合就需要实时时钟,可以使用专用的实时时钟芯片来完成此功能&#x…

传输层7——TCP拥塞控制(重点!!!)

目录 一、认识拥塞控制 1、什么叫做拥塞? 2、拥塞的特点 3、流量控制 VS 拥塞控制 二、TCP如何防止拥塞? 1、慢开始 2、拥塞避免 3、3重复确认 和 快重传算法 4、快恢复算法 5、总结 三、主动队列管理AQM 1、技术背景 2、AQM思 想和实现策略…

轮播(css+js)

目录 1.实现效果 2.基础代码演示 2.1js代码 2.1css样式 2.3实现效果 3.实现点击切换 3.1给button添加点击事件 3.2效果图如下 3.3发现问题 3.3.1不循环 3.3.2循环 1.实现效果 2.基础代码演示 2.1js代码 <div class"out-box"><div class"tes…

优秀的3d建模是数据可视化的视觉核心1

增强视觉效果&#xff1a;3D建模通过创建三维立体图像&#xff0c;为观众提供了更为真实和直观的视觉体验。相比于传统的二维图表和图形&#xff0c;3D模型能够更准确地展示复杂数据之间的空间关系&#xff0c;使数据可视化大屏上的信息更加生动和易于理解。 提升信息传达效率&…

flink sink kafka的事务提交现象猜想

现象 查看flink源码时 sink kafka有事务提交机制&#xff0c;查看源码发现是使用两阶段提交策略&#xff0c;而事务提交是checkpoint完成后才执行&#xff0c;那么如果checkpoint设置间隔时间比较长时&#xff0c;事务未提交之前&#xff0c;后端应该消费不到数据&#xff0c…

Y3编辑器文档4:触发器1(对话、装备、特效、行为树、排行榜、不同步问题)

文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 函数库与触发器复用 二、触发器的多层结构2.1 子触发器&#xff08;在游戏内对新的事件进行注册&#xff09;2.2 触发器变量作用域2.3 复合条件2.4 循环2.5 计时器2.6…

【开源】A065—基于SpringBoot的库存管理系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…

Ariba Procurement: Administration_Cloud Basics

# SAP Ariba Procurement: Administration_Cloud Basics 认识Ariba Cloud SAP Ariba Procurement 是一个云计算平台… The Ariba Cloud 平台需要简单理解的概念: Datacenter数据中心:SAP Ariba在世界各地有许多数据中心。这些数据中心构成了Ariba云的基本物理基础设施。 …

vulnhub靶场【shenron】--1

前言 靶机&#xff1a;shenron-1 攻击&#xff1a;kali 都采用虚拟机&#xff0c;网卡为桥接模式 主机发现 使用arp-scan -l或netdiscover -r 192.168.1.1/24扫描 信息收集 使用nmap扫描端口 网站信息探测 查看页面&#xff0c;发现是apache2的默认界面&#xff0c;查看…

等保2.0数据库测评之SQL server数据库测评

一、SQL server数据库介绍 SQL server美国Microsoft公司推出的一种关系型数据库系统。SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统。 本次安装环境为Windows10专业版操作系统&#xff0c;数据库版本为Microsoft SQL Server 2019 (…

无人机之报警器的工作原理!

一、电量监测技术 电量监测是无人机电量指示和报警功能的基础。通过实时监测无人机的电池电量&#xff0c;系统能够准确判断电池的剩余使用时间&#xff0c;并在电量不足时发出报警。电量监测技术通常包括以下几个方面&#xff1a; 电压检测&#xff1a;无人机电池内部通常配…

【pyspark学习从入门到精通23】机器学习库_6

目录 分割连续变量 标准化连续变量 分类 分割连续变量 我们经常处理高度非线性的连续特征&#xff0c;而且只用一个系数很难拟合到我们的模型中。 在这种情况下&#xff0c;可能很难只通过一个系数来解释这样一个特征与目标之间的关系。有时&#xff0c;将值划分到离散的桶中…

解密时序数据库的未来:TDengine Open Day技术沙龙精彩回顾

在数字化时代&#xff0c;开源已成为推动技术创新和知识共享的核心力量&#xff0c;尤其在数据领域&#xff0c;开源技术的涌现不仅促进了行业的快速发展&#xff0c;也让更多的开发者和技术爱好者得以参与其中。随着物联网、工业互联网等技术的广泛应用&#xff0c;时序数据库…