计网复习之介质访问控制子层复习笔记

介质访问控制子层

传统信道分配FDM&TDM的缺点是带宽利用率不高,并且存在高延迟
动态信道分配

多路访问协议

纯ALOHA协议:当用户有数据时就传送,解决冲突的办法是,在一个站发送了一个帧过后,把该帧广播到所有其他站。不监听信道,所以冲突是很容易发生的。

分槽ALOHA:将时间分成离散的时间间隔,这些时间间隔就为时间槽,每个时间槽对应一帧。
最佳的效率为1/e

载波监听多路访问协议:站监听是否存在载波(即是否有传输),并依据此进行相应的操作。

1-坚持载波监听多路访问:站点在发送数据前监听信道,如果信道上有其他数据正在传输,则等待,直到信道变得空闲;然后发送该帧,如果发生冲突,则等待一个随机时间,在监听信道,重复上面的操作。
存在的问题:
(1)当等待发送的帧不为1时,若信道出现空闲,所有的帧将在同一时刻发送,必将导致冲突。
(2)信号的传播延迟也会带来冲突。如果一个站刚开始发送并且信号并没到达一个准备发送的站点,此时这个站点也将发送从而导致冲突。

非坚持式CSMA:
和前面坚持式协议不同的是,同样该协议会监听信道,但是不会一直监听信道,也就是说,当信道忙时,其直接会等待一定的时间,在尝试监听信道,直到信道空闲,才发送该帧。
该算法很好的解决了冲突的问题,但也带来了更高的延迟。

P-坚持式CSMA:适用于分槽的信道。当一个站准备好要发送数据时,其监听信道,如果信道是空闲的,则其按照概率p发送该帧,以1-p的概率讲该帧推迟到下一个时间槽发送。如果下一个时间槽也为空,则其同样以p概率发送这一帧,以1-p的概率延迟该帧到下一个时间槽,以此往复,直到这个帧被发送出去。如果发生冲突,则等待一个随机时间再进行尝试发送。

带冲突检测的CSMA:
检测到冲突过后立即停止传输该帧,等待一段时间再尝试发送。这种方式可以有效的节省时间和带宽。
带冲突检测的CSMA会交替的出现传输期,竞争期和空闲期。

检测冲突的最小时间是将信号从一个站点播到另一个站点所需要的时间t。
所以一个站点认为自己“抓住”了信道,最坏的情况下需要的时间是二倍于传送到另一个站点所需要的时间2t,当然这是最坏的情况。

无冲突的协议

上面带冲突检测的CSMA虽然如果一个站抓住了信道,冲突就不在发生。但是冲突还是会发生在竞争期中,特别是当延迟很大,线缆很长而帧特别短的情况下,冲突会浪费带宽,并且让一个帧的发送时间动荡不定,无法很好的适应实时流量。

无冲突的协议在整个帧的发送过程中都不会产生冲突。

  1. 位图协议。每个竞争周期都包含N个槽,若某个站要发送一个帧,则在相应的槽中插入一位来表明自己将要发送。当经过了所有的N个槽后,所有的站点都知道哪些站希望传递数据,这个时候就可以按照数字顺序开始发送了。传输数据之前需要广播自己传输意愿的的协议被称为预留协议。高序号站点平均只需要等待0.5N个槽时间,而低序号站需要等待的平均时间是1.5N个槽的时间。对于所有站而言,需要平均等待的时间为N个槽的时间。
    在低负载的情况下,每一帧的额外开销为N位,数据长为d,则信道的利用率为d/(d+N).
  2. 令牌环协议。如果一个站点有需要发送的队列,则其发送一帧,并把令牌传递给下一个站点,如果该站没有要发送的帧,则只是简单的传送一下令牌而已。这里的令牌指的是发送帧的权限。等待时间为令牌传递N-1次的时间和N-1个站点发送一个帧的时间。
  3. 二进制倒计数。解决站点多的问题。这里每个站点以二进制串的形式广播自己的地址,从高位序开始,所有站的地址都有相同的长度,对于同一时刻,对发送进来的位进行布尔或。并且存在一个仲裁规则:bool或为为1时,舍掉为0的站点,bool或为0时,继续比较下一位。信道利用率为
    d/(d+log2N),经过优化甚至可以达到100%。

有限竞争协议

竞争的协议在负载低的情况下具有非常低的延迟,非竞争协议在负载高的情况下具备很好的信道利用率,因此有限竞争协议结合了这两种协议的优势,在低负载的情况下使用有竞争的协议,在高负载的情况下使用无竞争的协议。
有限竞争协议是这样做的:
将所有的站点划分成组,只有0号组才用时间去竞争0号槽,类似的只有n号组才能去竞争n号时间槽,若出现冲突,直接往后面推到下一个时间槽。
当负载很低时,每个时间槽的站点数就可以多一些,若负载很高的时候,每个时间槽的站点就需要低一点,甚至为了避免冲突只使用一个站一个组。

无线局域网协议

冲突发生在接收端而不是发送端,两种问题:隐藏终端问题和暴露终端问题(好好理解)。
这里有一个协议:冲突避免多路访问(MACA),其原理是这样的:如果一个站点想要给另一个站点发送帧,那么其先发送一个RTS帧,然后接收方再发送一个CTS帧作为应答,然后就可以发送了。如果一个其他站点听到了RTS帧,那么它一定离该站点很近,其必须保持沉默,等待足够长的时间使CTS返回给这个站点。如果一个站点收到了CTS,其必须保持沉默,知道该帧被顺利的发送(可以根据帧长来估计等待的时间)。

二进制指数后退的CSMA/CA

使用1-坚持CSMA算法,在发生冲突过后立即停止传输,并等待一定的时间尝试传输。如果再发生冲突,则随机等待的时间槽的最大值按指数级增长。
例如如果两个站点冲突一次,则选择随机等待0或者1个时间槽,若再次冲突,等待的时间槽为0,1,2,如果冲突n次,则随机等待的时间槽的为0-2^n -1之间的一个随机数。当达到1023的最大值的时候,便不再增加。
该算法可以动态的确定发送站的数量,如果随机数的最大值为1023,则冲突的可能性就很小了;如发生冲突,平均的等待时间将会是数百个时间槽,从而延迟时间特别大。这种算法只能保证两种情况:(1)在冲突只有少量发生的情况下,可以确保较低的延迟;(2)当许多站点发生冲突的时候,可以在一个合理的时间间隔解决冲突。

交换式以太网

使用交换机来处理不断增长的负载。
交换机:把帧传输到该帧想去的端口。当交换机接收到来自某个站的帧,其检查该帧的以太网地址,确认该帧去的目的地端口。并且是全双工的,并不用担心任何的冲突,因为不会发生冲突。交换机可以同时发送多个帧(发往不同的端口),如果同时有多个帧需要经同一个端口发送出去,那么只需要交换机含有缓存。
交换机也能够更安全的发送,因为其不是以广播的形式发送出去的,它只会发给某一个特定的端口,经由该端口被发送出去。所以相比集线器,其更加安全。

千兆以太网

设计目标:提升10倍的性能,并保持与现有以太网标准的兼容。
提供单播和广播的无确认数据报服务,采用48位的地址,保持相同的帧格式,包括最大最小帧的要求等。
为了达到距离经典以太网100倍的速度提升,在其他不变的情况下,最大的线缆长度下降了100倍,即为25米。考虑到25米在实际运用中的限制,这里使用了两种方法吧线缆长度深升到了200米。

(1)载波扩充:让硬件在帧的后面加上一定的长度,将帧的长度扩展到512字节,再又硬件去除填充。这里存在一个问题,利用率不高(填充大多数是无用的)

(2)帧突发:将多个帧连在一起,如果不满512字节再进行填充。这种方案是比较有效的(但前提是存在那么多帧)

没有写入标准的还有巨形帧,可以达到9KB,但与较老的标准并不兼容。

以太网传输中的冲突和帧大小的关系

以太网的最大传输长度为2.5km,信号在介质上传输的速度为2*10^8m/s
那么延迟为2500/v = 12.5us
最坏的情况下是若发送一个很小的帧,则检测冲突需要的时间为2t,25us。
在长的线缆上进行传输,需要经过4个中继器。因此传输的延迟最坏为50us,这里取到51.2us,在一个10Mbps的经典以太网上,其帧最小长度为512位=64B。这里的51.2us指的是传输间隙。
最小长度的定义:为了使发送方能够在一个帧的传输时间内检测到此帧是否在链路上发生冲突。
若帧小于了最小帧长,那么就无法检测是否发生了冲突了。

802.11

增加可靠性:(1)降低传输速率(2)减小帧的长度(拆分帧)
节省电源,
服务质量,对等流量传输

802.11帧结构

数据帧的格式:
帧控制字段(2字节,含有11个子字段)
持续时间(2字节):告诉本帧和其确认帧会占据信道的时间,其他站点根据该值管理各自的NAV机制。
地址字段(3个,各6字节):第一个接收方地址,第二个发送方地址,第三个指明远程端点。
序号字段(2字节):帧的编号,用于重复字段的检测
数据字段:0-2312字节
校验字段:4字节

和管理帧(数据字段不相同)以及控制帧略有不同

802.11服务

  1. 关联:把移动站点连接到AP上(我们常说的连接Wi-Fi)
  2. 重新关联:允许移动站点改变它的首选AP(切换Wi-Fi)
  3. 认证(WPA WPA2)
  4. QoS流量调度:给予视频和语音更高的优待
  5. 发射功率限制
  6. 动态频率选择

802.16

基站使用了更大的功率和更好的天线,传输距离至少是802.11答十倍以上,并提供了更多的差错处理。

数据链路层交换

网桥:连接多个局域网组成更大的局域网,实际上网桥就是以太网交换机。网桥工作在数据链路层,通过检查数据链路层的地址来转发帧。
路由器:检查数据包的地址,并且基于这些地址路由包,它只能按照预先设计好的协议工作。

网桥的作用:(1)连接多个LAN,可构建更大的容量(2)增加了传输的可靠性(可以决定转发什么不转发什么)(3)完全透明,安装和使用简便。

网桥是如何工作的呢?
它接收隶属于每个端口的站发送的帧,网桥必须选择丢掉或者转发一个帧,作出决定的是依据帧的目标地址。

简单的方法是为每个网桥配备一个大的哈希表。该表列出每个可能的目标地址以及隶属的输出端口。

当网桥初次被使用到网络中的时候,其哈希表是空的。因此为了构建这样一个哈希表,网桥将使用泛洪算法,其对于每个未知目标地址的入境帧,网桥将会把其输出到所有的出境端口,网桥将会学习每个目标地址在哪买。一旦知道了一个目标地址,下一次发送直接就被放到正确的端口上发送。

网桥所用的算法是后向学习法。
当打开,关闭或移动网桥或机器的时候,网络的拓扑结构就会发生变化。为了记录这种动态的拓扑结构,一旦构造出一个哈希表项时,帧的到达时间也被记录在表项中。并且网桥会有一个进程扫描哈希表,清除那些时间值有几分钟的项(表示几分钟未使用)。这样的算法也意味着,如果一台计算机静止了几分钟,那么其再进行通信,帧仍然会被泛洪。

下面是一个详细的流程:

  1. 如果去往目标地址的端口和源端口相同,则丢弃该帧(不需要经过该网桥)。
  2. 如果去往目标地址端口与源端口不同,则以目标端口发送该帧。
  3. 如果目标端口未知,则使用泛洪算法。

生成树网桥

解决冗余链路导致的无限循环。构建一颗生成树来解决这样的问题。

其他

中继器:物理层,用于处理自己所连线缆上的信号,一般用于增强信号。
集线器:集线器,将多个线路连接在一起,从任何线路发来的信号都将发送到其他所有线路上。如果两帧同时到达,那么将会发生冲突。
网关
网桥,交换机:数据链路层,多端口,用于连接过个局域网在一起。
路由器:网络层,当一个数据包进入路由器,帧头和帧尾被去掉,帧的有效载荷字段送到路由软件。路由软件根据帧的头信息来选择输出线路。这个地址指的是IP地址,而不是48位的IEEE802地址。

网关:传输网关,将使用了两台不同传输协议的的计算机连接起来。
网关,应用网关,理解数据的格式和内容,并且根据需要将数据包重新进行格式化。

分享到 评论