本篇文章主要介绍媒体接入控制的相关技术,如图所示,各主机接在同一根同轴电缆上,构成了总线型结构:
各主机抢占主线,随机地在信道上发送数据,如果恰巧有两个或更多的主机同时发送数据,那么信号在共享信道上就会发生碰撞,即发生了冲突,使得这些主机的发送都失败。
因此共享信道要考虑一个问题:如何协调多个发送和接收主机对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)。
关于媒体接入控制,有如下方法:
随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全替换了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
本文将简单概述下静态划分信道,然后着重学习下动态划分信道中的随机接入技术,并且本文侧重于学习有线链路共享信道中为避免冲突所使用的CSMA/CD技术。无线链路不在本系列文章的重点关注对象中。
我们先来简单看看静态划分信道技术。
一、静态划分信道
此类方法主要使用了信道复用技术。
-
复用:是指通过一条物理线路同时传输多路用户信号。
-
当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。
很常见的有频分复用、时分复用、波分复用和码分复用。
1.1、频分复用
当多路信号输入一个多路复用器时,这个复用器将每一路信号调制到不同频率的载波上,接收端由相应的分用器通过滤波将各路信号分开。换言之,用户同时占用不同的频带资源进行并行通信。
1.2、时分复用
是指将时间划分成一段段等长的时分复用帧,时分复用的所有用户在不同的时间占用同样的频带。
1.3、波分复用
波分复用实际上就是光的频分复用,可见下图,将信号调制到各个波长的光载波上传输,通过光复用器实现在一根光纤中传输,由于在长距离传输中存在衰减问题,所以中间增加了放大器,大大提高传播距离。
1.4、码分复用
是另一种共享信道的方法,由于该技术主要用于多址接入,人们更常称为码分多址CDMA。
频分复用FDM和时分复用TDM也同样可用于多址接入,相应的名词分别是FDMA(频分多址)和TDMA(时分多址)。
这里说的多址是个什么概念呢?
我们上面说了复用的概念,复用是指将单一媒体的频带资源划分为佷多子信道,这些子信道之间相互独立,互不干扰,从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
多址,更确切地被称为多点接入,处理的是动态分配信道给用户,这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况,相反,在信道永久地分配给用户的应用中,多址是不需要的。
基本原理是:各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。
二、CSMA/CD协议
在有线共享信道中为避免冲突,一般可采用CSMA/CD 协议,虽然具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全替换了共享式局域网,但是我们还是有必要好好学习它,这样在后面学习交换机时才会真切直呼专业。
CSMA/CD 是 Carrier Sense Multiple Access / Collision Detection
的缩写,主要是分为三个大名词:载波监听(CS)、多址接入(MA)、碰撞检测(CD)。
为了搞懂这个复杂名字的意思,我们需要重新来看总线拓扑。
在总线拓扑中,因为所有机器共享一个主线缆,因此在某一时刻 t,只允许一台机器发送信息。如果在某一时刻 t,有两台甚至更多的机器发送信息,那就产生了冲突。
为什么会发生冲突呢?假设一个电信号是是 0 V,而另一个是 5 V,那么结果就变成了 5 V。这样接收方就不能正确地理解信息了。就好比两个政客同时在电视上发言,我们就听不清他们在说什么。
那么如何避免这样的冲突呢?
遗憾的是,并不能避免。但是,我们可以试着减少冲突的数目。这也是 CSMA/CD 协议被发明的原因。CSMA/CD 协议的目的就是“通过分配发言的权利,来限制冲突的数目”。这里的“发言”是指发送信息。
CSMA/CD 是这样运作的:
-
两台机器 Machine A 和 Machine B 在同一时刻发送信息;
-
它们侦测到了冲突;
-
它们各自等待随机的一段时间。例如:Machine A 等待 3 秒,Machine B 等待 4 秒(实际上一般是检测总线空闲96bit时间就发送这个帧,这里说的96bit时间是指发送96bit需要花费的时间);
-
当 3 秒过后,Machine A 重新开始发送信息;
-
当 4 秒过后,Machine B 检测到 Machine A 正在发送信息,因此 Machine B 等待;
-
一旦 Machine A 发送信息结束,Machine B 就可以开始发送信息。
下面来回过头看下概念。
1、多址接入的意思是:多个主机连接在同一条总线上,竞争使用总线。
2、载波监听的意思是:每个主机在发送帧之前先要检测一下总线上是否有其他站点在发送帧,若检测到总线忙,则继续检测并等待总线转为空闲后发送这个帧。(“先听再说”)
3、碰撞检测的意思是:每个正在发送帧的主机边发送帧边检测碰撞,一旦总线出现碰撞,则立即停止发送(“一旦冲突立即闭嘴;等待时机重新插话”)
记住碰撞检测的这句话,即发送帧的过程中会检测碰撞,一旦你发送完了,就不会再管了,这将跟下面要说的帧长问题有关系。
三、争用期概念
考虑极端情况,主机A和主机B在总线的最两端,假设从A到B传播时延记为T。
由于电磁波在总线上总是以有限速率传播的。
设局域网两端站A和站B相距1km,用同轴电缆相连。电磁波在1km电缆的传播时延约为5us。
因此,A向B发出的数据,在约5us后才能传送到B。如果B在A发送的数据到达前发送数据,这时B的载波监听检测不到A发送的信息,就一定会在某个时间A的帧和B的帧碰撞。
产生碰撞之后,A和B分别对数据进行差错控制,一定会检测到所接收到的数据出现错误,而碰撞之后接收的数据发生错误,这两个帧都会变得无用,A和B站也会停发数据,不让这个错误继续下去。
发送的数据站希望尽早知道是否发生了碰撞,最多要经过的时间是两倍的总线端到端的传播时延(2T),或总线的端到端往返传播时延,也称为争用期/冲突窗口/碰撞窗口。
只要经过2T时间还没有检测到碰撞,就能肯定这次发送不会发生碰撞。
我们可以得到一个结论:在以太网中发送帧的主机越多,端到端的往返传播时延越大,发生碰撞的概率就越大,因此,共享式以太网不能连接太多的主机,使用的总线也不能太长。
四、最大/最小帧长问题
这里设计最小帧长问题和最大帧长问题。
为什么要规定最小帧长呢?
实际上就是为了保证主机在帧的发送过程中,能够检测到帧是否发生了碰撞。
为什么这么说呢,假设我们发送一个很小的帧,那么主机很快就发送完了,之后就不再针对该帧检测碰撞(上面的碰撞检测提到了),那么由于发送太快,某个主机在总线的另外一段,载波监听没有监听到总线在忙,就发送了帧,但实际上总线上并不空闲。
此时就会发送一个严重的问题,主机A并不知道该已发送的帧遭遇了碰撞,不会重发此帧。
很显然,使用CSMA/CD协议的以太网的帧长不能太短!在以太网中规定了最小帧长为64字节,即512比特,那么发送512比特的时间就是争用期。
如果发送的帧实在太小,那么必须加入一些填充字节,使帧长不小于64字节。
在以太网中最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遇到了碰撞!
-
如果在争用期(发送64字节的时间)没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞。
-
如果在争用期内检测到碰撞,就立即终止发送,此时已经发送出去的数据一定小于64字节,因此凡是长度小于64字节的帧都是由于碰撞异常中止的无效帧。
既然以太网中规定了最小帧长,那么最大帧长是否有限制呢?
有的,因为如果帧的长度过大,一个主机不停地发送帧,让其他站点一直无法无法使用信道。另外如果帧的长度过大,接收方的缓冲区可能也装不下该帧产生溢出。
我们翻开以太网的帧结构:
其数据载荷最大长度为1500字节,加上首部和尾部的18字节,一共最大帧长是1518字节。
其中数据载荷最小是46字节,加上首部和尾部18字节,正好最小帧长是64字节。
好了,本篇文章就到这里结束了,下一篇见。
原文始发于微信公众号(幕后哈土奇):十二、数据链路层篇-媒体接入控制问题
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114165.html