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

目录

前言

引言

CSMA/CD协议

CSMA与CSMA/CD的区别

CSMA/CD流程


前言

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

引言

最早的以太网,许多计算机都连接在一根总线上工作——广播通信方式。

总线的特点想必不用多说,当一台计算机发送数据时,总线上所有的计算机都能检测到这个数据。

But当两台计算机同时发送数据时候,就可能产生信号上的叠加,导致出现差错。

35c1bec6f1114cf0bffe9811064d0535.jpeg

为了在总线上实现一对一通信,可以使每个适配器都拥有一个独一无二的地址,在发送数据帧时,在帧的首部写明接收站的地址。

仅当数据帧中的目的地址与适配器ROM中存放的硬件地址一致时候,才接收,其余的丢了。

这样具有广播性质的总线上就实现了一对一通信。But也会发生冲突。

然后之后为简化通讯,以太网采取两种措施:

一种是以太网发送的数据都使用曼彻斯特编码——解决二进制基带数字信号出现连续1或0无法提取比特同步信号的问题,不过自身也有弊端,占频带宽度比原始的基带信号增加一倍。

另一种就是采用较为灵活的无连接工作方式,即不必先建立连接就可以直接发送数据。

怎么个事儿呢?

就是适配器对发送的数据帧不进行编号,也不要求对方发回确认。

以太网提供的服务是尽最大努力地交付,不可靠交付,对有差错帧是否要重传由高层决定。

比如CRC出错,直接扔了,TCP发现丢失数据,就会要求重传,但是以太网并不知道这是重传的,认为是新的帧。

然后我们知道,总线上只要有一台计算机在发送数据,总线的传输资源就被占用,在同一时间只允许一台计算机发送数据。

于是,如何协调总线上计算机的工作就成了以太网要解决的一个重要问题。

以太网采取最简单的随机接入

“随机接入”是指在无线通信中,用户可以在任意时刻,任意地点,以任意的方式进行接入,而不受时间、地点、方式的限制。)。

但是有很好的协议用来减少冲突发生的概率——引出我们的CSMA/CD协议!

CSMA/CD协议

全名(Carrier Sense Multiple Access/collision detection,载波监听多点接入/冲突检测)

CSMA与CSMA/CD的区别

CSMA和CSMA/CD的主要区别在于冲突处理机制,具体如下:

  • CSMA。是一种基本的载波侦听多路访问协议,它要求节点在发送数据前先监听信道,如果信道空闲,则立即发送数据;如果信道忙碌,则等待直到信道空闲后再发送。当多个节点同时检测到信道为空闲并尝试发送数据时,可能会发生冲突,CSMA协议在这种情况下不会采取任何措施来避免或检测冲突。听我们老师上课讲的是使用CSMA协议的需要返回确认帧确认,而CSMA/CD协议就不会。
  • CSMA/CD。是CSMA的一种改进版本,特别适用于总线型局域网拓扑结构。在CSMA/CD中,节点在发送数据的同时监测信道上是否发生冲突,如果检测到冲突(例如,通过监测信号电压的变化),节点会立即停止发送数据,并等待一段时间后再次尝试发送。这种机制可以有效减少或避免数据碰撞,提高网络效率。

说白了,载波监听就是在发送数据之前,需要检测信道,加上冲突检测(边发送边监听,不发送不监听),就构成了CSMA/CD协议。

CSMA/CD流程

  1. 准备发送。网卡从网络层获得一个分组,加上头尾,组成以太帧,放入网卡缓存。
  2. 检测信道。在帧间最小间隔(以太网规定是96比特时间)内信道保持空闲就发送该帧。
  3. 冲突检测。边发送边监听。然后看成功与否
  • 如果成功,两种情况,要么没事,要么CRC错了,返回第一步重传去。
  • 如果失败,先发送人为干扰信号,一般是32或者48比特,发完之后,阶段二进制指数退避算法咔咔一算,然后回到第二步。

2365c0d8ab2e48e4bacbe9d1dbabd34d.png

先了解了流程,别慌,后面还会介绍一些以太网的规定。我们先来看两道题。3-24和3-25题。

a8e4f2e6430242319dc17cf14e3e7f16.jpeg

看到这个题。明确一点,以太网,为了避免某种情况,规定一个最短帧长64字节,凡是长度小于64字节的帧,都是由于冲突而异常终止的无效帧。

某种情况:比如某个站发送了一个很短的帧,但在发送完毕之前并没有检测到碰撞,而这个帧继续传播和别的发生了碰撞,但是发送站这时候就不知道了,因为边发送边监听,不发送不监听,所以不会重传这个帧。

381d98c29ae4427db0c110285e1400c4.png

所以要保证,极限情况,到头发生碰撞,一来一回的时间(以太网端到端往返时间2eq?%5Ctau——争用期)要小于传输时间,才能保证这个数据顺利发送完毕。

争用期按理来说应该和传输往返时间相关。

但是10Mbit/s以太网规定规定,注意是规定51.2μs为争用期!!

如果是100Mbit/s,争用期就该5.12μs。

一般往返时间比这个小就没问题,要是超了的话我们老师说可能会出问题。具体啥问题我也不知道。

然后发现了一个博主讲的不错:

里面的内容很简要但是一点就透!

争用期,最小帧等知识,看看就悟了

5eaa47c259e448e59863d2d2e13b98e6.png

 我觉得中间那句话是最重要的,前64B之内出问题,不出后面的也不会出,就相当于来回建立了“连接”,后面都是我自己一个人站着这个道。

好啦,我们来做题,读题:

同一个10Mbit/s的以太网

好!以太网什么规定,争用期51.2μs,检测信道96比特时间(就是1bit的发送时间)。

所以一开始假设都检测信道没问题,AB就发。

假设B在225比特时间发

(因为题目是单向传播是225比特时间,所以我们统一一下)

那么225比特时间,B刚发就碰撞,碰撞信号B立马收到,B随即发送人为干扰信号,32或者48bit,因为下一个题是48bit,所以统一一下,发完干扰信号之后,退避算法,然后检测信道。

然后碰撞信号往回传225比特时间,在450比特时间到A,A也发送人为干扰信号,退避算法,然后检测信道。

OK,题目问A发送完数据之前会不会检测到碰撞,我这多写了,不过下一题你可以按这个流程画。

肯定会碰撞,因为A是最短帧长64字节,即512bit,10Mbit/s要用512比特时间才传完,450<512,所以会碰撞。

(其实更长,因为题目说MAC还有什么同步码和帧定界,那个是8字节,512+64=576,书上有)

然后要是没检测到,说明可以认为后面安全,看前面,我说的那个中间重要那句,那就是解释。

c51e5643d72340b2a821a5f51ad14898.jpg

下一题不讲啦,直接贴个答案链接吧,不过可能有所出入,理解了就行。

答案

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript教程(十二)--- 使用‘类’

使用类 JavaScript 是一个基于原型的语言——一个对象的行为取决于它自身的属性及其原型的属性。对类来说,相较于与其他面向对象的语言,譬如 Java,创建对象的多层级结构及其属性的继承关系需要更多的代码行。本节,我们将展示如何…

windows搭建ftp服务器

安装iis 点击安装即可,搜索iis打开 创建ftp服务器 身份验证:只勾选匿名,不勾选基本,网上的很多教程会添加基本,导致的问题会出现浏览提需要输入账号密码的情况,这里为了方便大家更直观的感受FTP建立的过程&#xff0…

新手做抖店这个操作赶快停止!不听“废店”只是早晚的事!

哈喽~我是电商月月 互联网的发展,做什么事情都是公开透明的,做抖音小店也是 大家都会在网上搜索教程,技巧,但最终还是有好多人都失败了 那是因为这些流程技巧不正确吗?其实并不是,很多小技巧都是有用的&…

CTF-遗留的压缩包

题目描述:小蓝同学给你发来了他自己开发的网站链接,他说他故意留下了一个压缩包文件,里面有网站的源代码,他想考验一下你的网络安全技能。 下发容器,访问链接,发现都是无关内容 联想到标题说有遗留的压缩…

数模 线性规划模型理论与实践

线性规划模型理论与实践 1.1 线性规划问题 在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支一数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个…

openjudge_2.5基本算法之搜索_166:The Castle

题目 166:The Castle 总时间限制: 1000ms 内存限制: 65536kB 描述 Figure 1 shows the map of a castle.Write a program that calculates how many rooms the castle hashow big the largest room is The castle is divided into m * n (m<50, n<50) square modules.…

Linux 内核学习(1) --- 时钟子系统

标题 时钟系统说明时钟树Clock Provider时钟通用数据结构clock_device 的注册clock_provider DTS配置和注册clock consumer时钟系统总结 时钟系统说明 时钟就是 SoC 中的脉搏&#xff0c;由它来控制各个部件按各自的节奏跳动。比如&#xff0c;CPU主频设置&#xff0c;串口的波…

切面条(蓝桥杯)

目录 题目 分析 代码实现 题目 一根高筋拉面&#xff0c;中间切一刀&#xff0c;可以得到2根面条。 如果先对折1次&#xff0c;中间切一刀&#xff0c;可以得到3根面条。 如果连续对折2次&#xff0c;中间切一刀&#xff0c;可以得到5根面条。 那么&#xff0c;连续对折1…

【报名指南】2023-2024学年AILD劳动技能大赛初赛报名流程

温馨提示&#xff1a; 1.AILD劳动技能大赛免费报名参赛。报名网址&#xff1a;aild.org.cn 2.报名时间即日起至5月31日。&#xff08;上海赛区线下挑战项目4月25日报名截止&#xff0c;线上挑战项目5月31日报名截止&#xff09;。 3.指导教师只能为行政备案学校的在职教师。…

C语言 数据输入输出

本文 我们来说 数据的输入与输出 及数据的运算 在程序的运算工程中 往往需要输入一些数据 而程序的运算 所得到的运算结果又需要输出给用户 因此 数据的输入与输出 就显得非常重要 在C语言中 不提供专门的输入输出语句 所有的输入输出 都是通过对标准库的调用 来实现的 一般 …

itop4412内核编译_编译自定义函数到内核

我的itop4412开发板是半路捡的&#xff0c;所以没办法加他们的售后群&#xff0c;遇到的问题只好一点点记录吧 内核驱动编译 在日常工作过程中&#xff0c;编写内核程序可能机会不多&#xff0c;但是将厂商提供的内核源码编译到固件中&#xff0c;这个技能还是必须掌握的。 i…

认识异常(1)

❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&a…

系统架构最佳实践 -- 一般优惠券平台系统架构设计

优惠券是商城的一种基础的营销工具&#xff0c;在目前c端用户对于电子优惠券已经非常熟悉的情况下&#xff0c;一般自营商城的营销活动系统&#xff0c;都是从优惠券开始搭建。 一、名词定义 基于个人理解&#xff0c;为方便表述&#xff0c;首先对可能产生歧义的名词进行如下…

十九.案例演示---天猫订单分析

目录 1.数据预处理 2.对订单状况进行分析 3.不同省份订单数详情 4.省份地图绘制 5.不同星期&#xff0c;订单分布 6.订单金额与订单数量 本次案例演示数据条数为:28010 import pandas as pd from pyecharts import options as optsdf_data pd.read_excel(../data/天猫订单…

【笔记】探索生成范式:大型语言模型在信息提取中的作用

探索生成范式&#xff1a;大型语言模型在信息提取中的作用 摘要介绍 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限可能&#xff0c;共同成长&am…

五、书架开发--3.弹出框功能开发、离线缓存功能开发

实现弹出框真实业务逻辑 私密阅读tab业务逻辑 1、根据点击的tab不同&#xff0c;从而展示出不同的popup弹窗 每个tab中都有自己的index&#xff0c;点击的时候获取这个index&#xff0c;就可以知道当前点击的是哪个tab&#xff0c;然后用switch-case来根据不同的index展示不…

【GD32】MQ-6丙烷检测传感器

2.34 MQ-6丙烷检测传感器 MQ-6气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sno2)。当传感器所处环境中存在可燃气体时&#xff0c;传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为该气体浓度相对应的输出信号。M…

Windows下使用PanguVip实现浮动IP

在某些高可用场景下&#xff0c;我们往往需要使用浮动IP来进行实际访问的切换&#xff0c;比如为了保证Web应用的高可用&#xff0c;当主节点宕机后&#xff0c;我们将浮动IP切换到备节点&#xff0c;那么备节点就继续可以提供服务&#xff0c;在linux下我们可以使用keepalived…

scala---基础核心知识

一、什么是scala Scala 是一种多范式的编程语言&#xff0c;其设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台&#xff08;Java虚拟机&#xff09;&#xff0c;并兼容现有的Java程序。 二、为什么要学习scala 1、优雅 2、速度快 3、能融合到hado…

【SpringBoot】获取参数

获取参数 传递单个参数传递多个参数传递对象后端参数重命名传递数组传递 json 数据获取 URL 中参数上传文件获取 cookie 和 session获取cookie获取session 传递单个参数 RequestMapping("/user") RestController public class UserController {// 传递单个参数Reque…