谈谈CSMA/CD,TCP中的二进制指数退避算法

4.2.8 以太网技术(八)退避算法 在CSMA/CD协议中,一旦检测到冲突,为了降低再一次发生冲突的概率需要等待一个随机的时间后再使用CSMA/CD的方法试图进行下一次的传送,为了保证这种退避的维持稳定,我们在以太网中采用了一种被称为。假设重传次数为rtx_count,允许的最大重传次数为rtx_count_max,通常为16。指数退避算法是指在遇到重复的冲突时,站点将重复传输,每一次冲突之后,冲突推迟时延平均值将加倍。例:以太网中,第四次冲突之后,一个节点选择的随机退避系数r的值为4的额概率是(C)。这里我们以第二次发生冲突为例:N=2。 阅读详情

交换式以太网,IP路由互联网,PCIe总线,这些都不再是 共享资源的随机系统 了,它们都进化成了 排队系统 ,如今这种共享资源的随机系统,只剩下了TCP!

由于人们已经不再记得CSMA/CD,绝大多数人对TCP存在跪舔式的误解,我还是一如既往地喜欢喷TCP!但本文不是。本文没时间扯TCP,没意思。

一个共享资源的随机系统,什么最重要?是性能,还是公平性?业内普遍的结论是公平性,这才招致了很多人剑走偏锋在性能上走火入魔,比如TCP加速这种。但凡优化性能的,就一定会损失公平性,然而,who care…

二进制指数退避算法,就是共享资源随机系统的一个伟大的算法。


记得刚学计算机网络课程的时候,讲过CSMA/CD算法,这是一个共享总线式的随机协同系统,没有控制中心安排节点发送数据的顺序,大家也都彼此不沟通,然而神奇的是, 所有节点 想什么时候发送数据就能什么时候发送,只要在发现冲突后遵循指数退避等待相应的时间后再重发即可!

这个指数退避规则很简单,本文不会详细描述,直接百度一下就好。

后来,我们学习了TCP协议,并且任何教科书上都会讲到TCP超时定时器的处理,最终我们学到了, TCP超时时间也是指数退避的。

TCP和早期共享总线以太网貌似八竿子打不着,但是却遵循了同样一个指数级退避原则,这里面必有关联。

后来,哦,不,是直到很久以后,我们觉得TCP是个端到端主机协议,对于真正的网络而言,它和早期的供共享总线的以太网对链路的认知一样,就是个盲人。

所以,我们可以把整个互联网看作是一个共享总线(实际上是共享带宽)的以太网,TCP节点节点就是CSMA/CD的主机,TCP节点之间互相不沟通,但是它们却和CSMA/CD系统的主机一样,想什么时候发送就什么时候发送,只要遵循 退避原则 即可。

  • 对于CSMA/CD以太网而言,冲突意味着要退避;
  • 对于TCP而言,超时意味着要退避(至于什么快速重传,那是后来的事情,一开始只有超时!)。

现在问题来了, 退避为什么要指数级退避,而不是减法退避,或者乘以某个系数退避?

这个问题,此后再也不好找答案。

不信你去搜搜,看看有没有解释这个,如此简单的事实却没有人从数学上去解释…

本文,我来通俗解释二进制指数退避算法的缘由。即为什么是二进制指数退避,而不是减法退避,也不是固定系数乘法退避。


当知道了二进制退避算法的具体操作之后,谁还会在乎Why呢?知道Why并不会多赚钱,不会晋升,也不会让老婆称赞…

但是知道Why,会使人开心。


二进制退避算法,其实换个名字,就很好理解了,那就是 确定系统中的节点数量,并找到自己的slot。

是的, 节点iii在和一群互相不通信不沟通的系统nnn个节点的资源争抢博弈中,找到自己slotislot_isloti​。

为什么是二进制指数退避,要先从二分法说起。不要纠结于什么二进制指数退避这种名子,所谓的二进制指数退避,你就把它当成 二分法探测 就好了。


系统中的节点是彼此不沟通的,没有任何一个节点知道系统的全局情况,这是一个真正随机的分布式系统。

一开始,节点nnn假设整个系统只有节点nnn自己,这是一个初始状态,于是它开始直接使用共享资源,忽略其它节点的存在,直到一个 冲突事件 将其纠正。

节点nnn检测了冲突,以太网冲突信号或者TCP超时,它怎么办呢?

它理所当然会认为 系统中至少还存在着另外一个节点。 于是节点nnn会把自认为全部属于自己的资源让出一半给这个想象中的竞争者。于是,节点nnn的资源降低为之前的一半试试看。

同样收到冲突信号的另一个节点也会相应地假设。

现在假设总资源分别被如二者分成了两份,那么两个节点该如何判断哪一份是属于自己的呢?由于系统运作的前提是所有节点彼此不沟通,那么,最好的方案就是 随机 。即:
两个节点随意使用一共2个slot的资源。
这样两个节点共享两个slot,它们还是有冲突的可能,它们有50%50\%50%的可能会争抢同一个slot…

问题是,像这样,两个节点再次出现冲突,怎么办?

答案只能是(算法的要求,为什么?这点后面会说)继续二分退避。此时冲突的概率就降低到了25%25\%25%,如果再次冲突,就再次二分退避,冲突概率继续降低到12.5%12.5\%12.5%…

两个节点的情况下,如此反复,最终,两个节点之间不冲突的概率随着冲突次数而降低,序列就是(1−12),(1−14),(1−18),...,(≈1)(1-\dfrac{1}{2}),(1-\dfrac{1}{4}),(1-\dfrac{1}{8}),... ,(\approx 1)(1−21​),(1−41​),(1−81​),...,(≈1),即 如果继续二分切分资源,互不沟通的两个节点总会不冲突把数据发送成功的!

第一个推论已经完成。就像做菜一样,放在一边,备用。


接下来继续分析。我来推倒多米诺骨牌。


事实上,由于每个节点对系统的理解都是局部的,没有任何节点具有全局视图,因此,没有哪个节点知道系统中一共有多少节点。

当节点在第一次检测到冲突后退避了一半的资源之后再次检测到冲突,该节点无法分辨下面的两种情况:

  1. 和唯一另外的节点再次以50%50\%50%的概率发生了冲突;
  2. 出现了第三个节点,并与其发生了冲突。

根据以上分析,当第一种情况发生时,按照二进制指数减半资源的使用,是可以趋向于成功抢占资源的。那么问题就是第二种情况如何处理。

最优美的答案就是唯一的答案, 那就是和第一种情况一样,既然无法区分两种情况,那就全部当成第一种情况!

如果出现第三个节点,由于随机协作系统所有节点都是公平对等的,所有 这第三个节点对于既有的两个节点的影响是均等的。 也就是说,既有的每一个节点均需要 假设有一个新的节点与之竞争。 这个新的节点对既有的两个节点的影响,在 概率上 是相等的。按照协作系统公平性假设,检测到冲突的节点就需要出让一半的资源给潜在的竞争者。

  1. 如果某个节点第一次遭遇冲突,那么它假设检测到第111个共存节点,自身可利用资源承诺自减到12\dfrac{1}{2}21​
  2. 在承诺的12\dfrac{1}{2}21​资源中使用,如果再检测到冲突,那么它假设检测到第222个共存节点,自身可利用资源承诺自减14\dfrac{1}{4}41​,另一个节点也同样概率检测到该冲突
  3. 在承诺的14\dfrac{1}{4}41​资源中使用,如果再检测到冲突,那么它假设检测到第333个共存节点,自身可利用资源承诺自减18\dfrac{1}{8}81​,另两个节点也同样概率检测到该冲突
  4. …

把这个基本事实归纳下去。所以,结论就是:

不管系统中当前有多少(≥2\geq2≥2)节点,只要检测到冲突(CSMA/CD检测到冲突信号,或者TCP超时),检测节点均要假设有一个节点与之进行公平对等竞争,检测节点均需要分配一半资源给与之冲突的节点:

假设kkk为冲突次数,那么节点需要退避到的资源使用率就是(12)k(\dfrac{1}{2})^k(21​)k,由于网络分层协议的保证,为了保证效率,kkk一般会有最大值约束,超过该最值,则传输放弃。

以上这些话,就是 二进制指数退避算法 的具体操作要旨!


理解了上面的描述,对于理解 为什么是减半,而不是减1 就很容易了。这是因为,只有减半才能让系统平衡。

二进制指数退避算法,只是共享资源的随机系统中的 一种可行的确保稳定的算法,而不是最高效的算法。

CSMA/CD的冲突检测退避算法就是一个简单的优化。它采用了 再随机算法 平滑了误判的影响。

所谓的误判,就是上面两点之间的误判,重复一遍:

  1. 和唯一另外的节点再次以50%50\%50%的概率发生了冲突;
  2. 出现了第三个节点,并与其发生了冲突。

所以,假设一个节点已经经历了iii次冲突,按照二进制指数退避算法,它理应退避到(12)i(\dfrac{1}{2})^i(21​)i的资源使用,然而搞不好其它所有节点都是新来的呢,所以,大家再次随机,让每个检测到冲突的节点,在{0,12,...(12)k}\{0,\dfrac{1}{2},...(\dfrac{1}{2})^k\}{0,21​,...(21​)k}中随机选择一个作为资源退避的份额即可。


总结来讲, 二进制指数退避算法 ,如果不叫这个名字,改作 二分法资源探测算法 ,我想就更加容易被理解了。你要明白,适用这个算法的系统,必须有以下特征:

  • 节点随机使用资源;
  • 节点完全公平对等;
  • 节点间互不知情。

同时,我们要知道,正是因为上述的第3点解耦合带来的灵活性,造成了:

  • 二进制指数退避算法不是最优的。

但是,无论如何,它是:

  • 公平的;
  • 稳定的。

所以,它是:

  • 优美的!

此外,所有的共享总线资源随机分布式系统,均可以转化为排队系统,比如:

  • 总线式以太网转换为交换式以太网
  • PCI总线转换为PCIe总线
  • 缓存一致性协议中的写操作
  • …

只有IP路由网络,一开始就是排队系统…

无论是哪种,它们的核心都是 资源的统计复用。


当然了,我知道有人会觉得我这天天分析这种简单又不赚钱不讨好的东西,很low,没关系,我觉得你也很low,人各有所好,不可强求,不在一个频道上,所以我也不屑交流。

我敢肯定,绝大多数人是不懂这些东西的,网上也很少几乎没有人去分析,所以,我想帮助这些希望获得答案的人。仅此。

软考网络工程师 第四章 第三节 二进制指数退避算法 K=min[重传次数,10],如果重传16次后,还不能正常发送数据,认为网络拥塞或信道故障,不再尝试重传。根据公式,如果重传12次后,K=min[12,10]=10,那么可能等待的时间是。重传次数越多,退避窗口(即Random取值)越大,从而降低冲突概率。例2:以太网采用CSMA/CD协议,当冲突发生时要通过二进制指数退避算法计算后退延时,关于这个算法一下论述中错误的是(A)(1)检测到冲突后,马上停止发送数据,并等待随机时间再发送数据。冲突二次后 K=min[2,10]=2 那么等待时间。 阅读详情

相关推荐

二进制指数后退算法(Binary Exponential Backoff Algorithm)

该算法主要用于CSMA/CD(载波监听多路访问/冲突检测)和CSMA/CA(载波监听多路访问/冲突避免)等网络访问控制方法中,以在检测到通信冲突后合理地延迟重传尝试,从而减少冲突的发生并提高网络效率。1. 初始退避时间:当节点(如以太网中的工作站或集线器)检测到通信冲突时,它会选择一个初始的退避时间。5. 线性增长与指数退避:虽然算法被称为“二进制指数后退”,但实际上退避时间是呈指数级增长的(即每次重传失败后退避时间范围翻倍),而不是线性增长。3. 重传尝试:节点在退避时间结束后,会再次尝试发送数据。

m0_59091453的博客 1233

二进制指数退避算法

例题

qq_30887873的博客 8801

计算机网络——CSMA/CD协议以及相关习题

本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。

m0_60631836的博客 3469

软考(网络工程师)复习第三弹

Huawei-vlan20] policy-vlan mac-address 0-1-1 ip 10.1.1.1 priority 7//基于策略划分VLAN,把MAC地址为0-1-1,IP地址为1.1.1.1的主机划分到VLAN20中,并配置该VLAN的802.1p优先级是7。[Huawei-vlan20]mac-vlan mac-address5489-98FC-5825 //把MAC地址为5489-98FC-5825的终端加入VLAN 20。(2)提高网络的安全性。(2)动态划分VLAN。

2301_77998732的博客 1867

深入解析截断二进制指数退避算法:以太网碰撞重传的智能调度

本文深入解析截断二进制指数退避算法在以太网碰撞重传中的智能调度机制。通过CSMA/CD协议,该算法动态调整重传等待时间,有效解决数据链路层的碰撞问题。文章详细介绍了算法核心参数、截断机制及实战案例,帮助读者理解其在现代网络中的应用与优化策略。

t8u9v0的博客 739

CSMA/CD与CSMA/CA:从有线碰撞检测到无线碰撞避免的网络协议核心解析

介质访问控制是计算机网络中解决多设备共享信道通信的核心机制。其基本原理是通过载波侦听,让设备在发送前先监听信道状态,以避免冲突。CSMA/CD(载波侦听多路访问/碰撞检测)是早期有线以太网的基础,它采用“边听边说,冲突即停”的策略,依赖物理层的实时碰撞检测。然而,无线环境的隐蔽站和暴露站问题使得碰撞检测难以实现,因此演化出了CSMA/CA(载波侦听多路访问/碰撞避免)。该协议通过虚拟载波侦听(NAV)、RTS/CTS握手和确认(ACK)机制,在碰撞发生前进行预防,从而适应了Wi-Fi等无线网络对可靠性的高要

weixin_34185320的博客 356

二进制指数退避算法:CSMA/CD协议中的随机艺术与科学

本文深入解析了二进制指数退避算法在CSMA/CD协议中的核心作用,探讨其如何通过随机化和动态调整机制优雅解决以太网中的冲突问题。文章涵盖算法原理、数学建模、现代应用及实战调优,揭示了这一经典算法在高冲突网络中的科学与艺术。

vodka的博客 794

python DEA: 基于非径向距离NDDF的Malmquist-Luenberger 指数及其分解

点赞发Nature 关注中Science Malmquist-Lenberger指数(ML指数)是距离函数与DEA计算中常用的指数,ML指数可以进一步分解为技术进步technological progress和效率改善effeciency change. 技术进步常被当做增长模型中的全要素生产率,用到许多计量经济研究中,探讨影响技术进步的环境变量。这里我分享一个考虑非期望产出下的NDDF方法计算ML指数。 该ML指数为global ML(区别于sequential ML) import numpy as

Cmmmmm丶的博客 5295

CSMA/CD和拥塞控制AIMD其实是一回事!

今天下班的班车上,撸论文,找到一篇关于CSMA/CD性能分析的,然而下载需要钱,作罢。我讨厌知识付费,因为我崇尚知识共享。 正好我上周末也写了一篇与此相关的: 谈谈CSMA/CD,TCP中的二进制指数退避算法: https://blog.youkuaiyun.com/dog250/article/details/90340322 我发现这里的CSMA/CD的指数退避算法和TCP拥塞控制的AIMD非常类似,AI...

TCP/IP 5872

从理论到实践:基于Zemax的高分辨率生物显微镜光学系统仿真与优化指南

本文详细介绍了基于Zemax的高分辨率生物显微镜光学系统仿真与优化全流程。从阿贝分辨率公式、柯勒照明等理论基础出发,逐步讲解Zemax建模、像差优化、制造可行性分析等核心步骤,并提供常见问题解决方案。通过实际案例展示如何将理论设计转化为可制造的优化方案,帮助工程师掌握从仿真到实际应用的关键技术。

weixin_29229989的博客 480

【专栏必读】王道考研408计算机组成原理万字笔记使用说明及章节导航

本文是为准备408王道计算机组成原理考试的学生精心整理的万字笔记,涵盖了从计算机系统概述、数据表示和运算到存储系统、指令系统等多个章节的重点内容。本文强调了学习笔记的重要性,并分享了学习建议,如按视频课逻辑记录,建立学科框架。笔记详细记录了每章的关键知识点,包括存储器、CPU、I/O系统的工作原理,还附带了习题和思维导图,旨在帮助考生高效复习。

快乐江湖的博客 9万+

CSMA/CD协议、二进制指数退避、自旋锁SpinLock

电路接通了"表示链路两端的节点交换机已经开机了,物理连接已经能够传送比特流了,但是,数据传输并不可靠,在物理连接基础上,再建立数据链路连接,才是"数据链路接通了”,此后,由于数据链路连接具有检测,确认和重传功能,才使不太可靠的物理链路变成可靠的数据链路,进行可靠的数据传输;因此,当好几个适配器执行指数退避算法时,很可能有某一个适配器发送的新帧能够碰巧立即成功地插入信道中,得到了发送权,而已经推迟好几次发送的站,很可能不巧,还要继续执行退避算法,继续等待。A重传的数据会不会和B重传的数据再次发生碰撞?

weixin_46290302的博客 2223

基于STM32设计的水质检测系统_333

水质安全对生态环境、农业生产、工业制造以及人类健康至关重要。针对传统水质检测方式检测周期长、成本高、实时性差的问题,本项目设计并实现了一种基于STM32的水质检测系统。系统采用STM32F103RCT6作为主控芯片,集成水温、pH值、电导率和浊度等传感器,能够实时采集水质数据,并通过OLED显示屏进行本地显示。同时,利用Air724UG 4G模块通过MQTT协议将数据上传至华为云IoT平台,实现远程监测。用户可通过Qt5开发的Android手机APP和Windows上位机查看水质数据,并接收超限报警提示。此

713

从冲突到协作:CSMA/CD协议如何塑造现代以太网的底层逻辑

本文深入解析CSMA/CD协议如何通过冲突检测机制解决早期以太网的共享信道问题,塑造现代网络架构。从载波监听到二进制指数退避算法,详细阐述其工作原理及对当代网络技术的影响,包括WiFi和TCP协议中的设计借鉴。

banana的博客 609

第38节:cesium 风场效果(含源码+视频)

cesium 风场效果

qq_29384639的博客 2329

移动机器人路径规划中噪声环境下的鲁棒性测试仿真

设计一个二维或三维环境模型,包括静态障碍物和可能存在的动态障碍物。

amy_mhd的博客 125

二进制指数退避算法详解

核心作用:通过随机化重传延迟,减少多设备竞争传输介质时的冲突概率,提升网络效率和稳定性。关键优势:动态适应冲突频率,兼顾快速重传与拥塞避免,是 CSMA/CD 协议的基石。局限性:在高冲突场景(如大量设备同时发送)下,指数增长的退避时间可能导致延迟增加,但能避免网络彻底瘫痪。一句话概括:二进制指数退避算法是网络设备在冲突后“随机冷静”的策略——冲突越多,等待时间越长,从而让网络从“争抢”变为“有序”,保障数据的可靠传输!🌐🔧。

weixin_44943389的博客 1087

【C语言】程序员筑基功法——《函数栈帧的创建与销毁》

汇编角度带你走进函数栈帧

StackFrame 3656

CSMA-CA介绍

本文主要介绍通讯领域中CSMA相关机制,本文全部资料来自于网络。 网络通讯,必须依靠介质来传递数据,将数据调制到模拟信号上,再把此信号通过介质传递到远方。根据介质的不同,分为有线网络和无线网络。为了让世界上各种各样的网络设备生产商生产的设备互联互通,他们必须遵循一定的“通讯语言“,就像一个中国人和美国人在一起,假如他们生产的设备只能够说“本国语言”,那碰在一起,就是驴头不对马嘴,根本无法沟通。为了...

yusujifeng的博客 2505

AUTOSAR TcpIp模块 以太网配置开发2

someip协议之tcpIp协议

汽车电子电气 1085

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

CSMA介绍

转载自: http://www.cnblogs.com/cherishui/p/4046360.html 以下是转载内容: 本文主要介绍通讯领域中CSMA相关机制,本文全部资料来自于网络。   网络通讯,必须依靠介质来传递数据,将数据调制到模拟信号上,再把此信号通过介质传递到远方。根据介质的不同,分为有线网络和无线网络。为了让世界上各种各样的网络设备生产商生产的设备互联互通,他们

奥丁的博客 2万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

CSMA/CD与CSMA/CA:从有线以太网到无线Wi-Fi的媒体访问控制协议对比

媒体访问控制(MAC)协议是局域网(LAN)中协调多设备共享通信信道的基础技术。其核心原理是解决多个节点在同一传输介质上发送数据时的冲突问题,确保网络通信的有序与高效。在技术价值上,不同的MAC协议直接决定了网络的吞吐量、延迟和可靠性,是网络性能的关键影响因素。典型应用场景包括传统有线以太网和现代无线Wi-Fi网络。本文聚焦于两种经典的分布式MAC协议:CSMA/CD(载波侦听多路访问/冲突检测)和CSMA/CA(载波侦听多路访问/冲突避免)。CSMA/CD采用“冲突检测”机制,曾是以太网的基石,其二进制指

weixin_34252090的博客 371

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

别再死记硬背了!用‘走楼道’和‘堵车’的故事,5分钟搞懂CSMA/CD和TCP拥塞控制

本文通过‘走楼道’和‘堵车’的生活故事,生动解释了CSMA/CD和TCP拥塞控制等计算机网络核心概念。从楼道争抢到交通拥堵的类比,帮助读者轻松理解抽象的网络协议原理,特别适合期末考试复习和知识点梳理。

weixin_30835649的博客 401

计算机网络基础及IP、TCP、UDP格式、CSMA/CD

面试总结之time_wait状态产生的原因,危害,如何避免: https://blog.youkuaiyun.com/qq_32534441/article/details/88655725 CSMA/CD 及其二进制指数退避算法: https://blog.youkuaiyun.com/qq_32534441/article/details/88659857 IP、TCP、UDP首部详解: https://blog.c...

qq_32534441的博客 459
上一篇: 拜托,面试别再问我计数和桶排序了!!!
下一篇: 网络数据包收发流程:从驱动到协议栈
废言Pro
博客等级 码龄16年 1092粉丝 142原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值