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

2024-04-12 23:36

本文主要是介绍计算机网络——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

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

答案

这篇关于计算机网络——CSMA/CD协议以及相关习题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/898550

相关文章

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10