认识数据链路层
三、局域网的工作原理
局域网使用的就是典型的广播信道。
如一个宿舍4位同学,通过一个路由器连接到一根宽带上,这个共同的宽带就是局域网的信道,连接在信道上的主机可以非常方便地实现1对多的通信。
局域网的常用拓扑
- 拓扑结构指的是计算机、电缆和网络上其他组件的安排方式或物理布局。
- 局域网常用的拓扑结构主要有4种:星形网、总线网、环形网和树形网。
局域网的拓扑
总线网和树形网中都有匹配电阻,其功能是吸收在总线上传播的电磁信号的能量,避免在总线上产生有害的电磁波辐射。
局域网工作的层次问题
局域网工作的层次跨越了数据链路层和物理层,但由于局域网技术中有关数据链路层的内容比较丰富,放在DLL中讨论。
局域网工作的主要问题是共享信道,如何使众多用户能够合理而方便地共享通信媒体资源
网卡的作用
网络接口板又称为通信适配器 (adapter) 或 网络接口卡 NIC (Network Interface Card),或 “网卡”。
网卡的重要功能:
- 进行串行/并行转换。A/D
- 对数据进行缓存。Chache
- 在计算机的操作系统安装设备驱动程序。
- 实现以太网协议。
计算机通过适配器和局域网进行通信
媒体共享技术
静态划分信道
- 频分复用FDM
- 时分复用TDM
- 波分复用WDM
- 码分复用 CDM
动态媒体接入控制(多点接入)
- 随机接入,用户随机发送信息。
- 受控接入 ,如多点线路探询(polling),或轮询。
局域网需要动态媒体接入控制方法
在认识物理层(三)中详细介绍过信道复用技术,如FDM、TDM、CDMA和WDM等,都属于静态划分信道的方法,这在局域网中并不适用,因为局域网中最常见的是灵活性和扩展性,主机可能会随时接入和撤出,静态划分信道的方法就会不适用。局域网要采用一种动态的媒体接入控制方法来解决共享信道可能带来的冲突问题。
CSMA/CD 协议
以太网的广播方式发送
- 总线上的每一个工作的计算机都能检测到 B 发送的数据信号。
- 由于只有计算机 D 的地址与数据帧首部写入的地址一致,因此只有 D 才接收这个数据帧。
- 其他所有的计算机(A, C 和 E)都检测到不是发送给它们的数据帧,因此就丢弃这个数据帧而不能够收下来。
- 具有广播特性的总线上实现了一对一的通信。
在B向D发送数据的同时,总线上不能有其他主机再发送数据
因为一旦有两个主机同时发送数据,会造成总线上的数据信号叠加,结果是使得数据无效。
为了通信的简便,以太网采取了两种重要的措施
- 采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。
- 以太网对发送的数据帧不进行编号,也不要求对方发回确认。
这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。
以太网提供的服务
- 以太网提供的服务是不可靠的交付,即尽最大努力的交付。
- 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。
- 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
【注意】
我们一般说的面向连接的服务是可靠的,有连接有确认。
面向无连接的服务是不可靠的,没有连接也没有确认,但不是说不可靠的服务就是差的服务,有些情况下,尽最大努力的服务就是最好的服务。
载波监听多点接入 / 碰撞检测
- CSMA/CD 表示 Carrier Sense Multiple Access with Collision Detection。
- “多点接入” 表示许多计算机以多点接入的方式连接在一根总线上。
- “载波监听” 是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
- 总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
载波监听的含义
例如当前有一个站正在发送数据,那么总线上存在着电磁信号,假设一个站发送数据总线上的电压是1V,考虑到一些噪声的干扰,当一个站发送数据时总线上的电压不超过1.5V,这是一个设定的阈值,如果某个时刻发现总线上的电压超过了阈值,代表不止一个站发送了数据,则发生了碰撞。其实每个计算机都有能检测信号电压的设备,使得载波监听成为可能。
碰撞检测
- “碰撞检测” 就是计算机边发送数据边检测信道上的信号电压大小。
- 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
- 当一个站检测到的 信号电压摆动值 超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
- 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。
检测到碰撞后
在发生碰撞时,总线上传输的信号产生了 严重的失真 ,无法从中恢复出有用的信息来。
每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
电磁波在总线上的有限传播速率的影响
- 当某个站监听到总线是空闲时,也可能总线并非真正是空闲的。
- A 向 B 发出的信息,要 经过一定的时间后才能传送到 B 。如电磁破在1KM电缆的传播时延约为 5us(记住这个数字) 。
- B 若在 A 发送的信息到达 B 之前发送自己的帧(因为这时 B 的载波监听检测不到 A 所发送的信息),则必然要在某个时间和 A 发送的帧发生碰撞。
- 碰撞的结果是两个帧都变得无用。
传播时延对载波监听的影响
- t=0时刻,A站检测到信道空闲,开始发数据;
- t=τ-δ时刻,假设δ非常小,即A的数据马上到达B时,B开始检测信道并且发现信道空闲,开始发送数据;
- t=τ-δ/2时刻,数据在信道上发生了碰撞,但由于双方的数据都没有到达对方,A和B都还不知道碰撞发生;
- t=τ时刻,A的数据到达了B,B检测到碰撞,立即停止数据的发送,但已经发送的数据仍然在信道中传播;
- t=2τ-δ时刻B发送的数据到达了A,A检测到碰撞,A停止数据发送。
重要特性
- 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
争用期
- 最先发送数据帧的站,在发送数据帧后至多经过时间 2τ(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。
- 以太网的端到端往返时延 2τ 称为争用期,或碰撞窗口。
- 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
怎样解决碰撞问题呢?只要一发生碰撞就停止发送,再次发送要一直等到信道闲吗?
最根本的方法应该是减少再次发生冲突的概率。
二进制指数类型退避算法
二进制指数类型退避算法 (truncated binary exponential type)
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。
- 确定基本退避时间,一般是取为争用期 2τ。
- 定义重传次数 k ,k ≤10,即
k = Min[重传次数, 10] - 从整数集合[0,1,…, (2k- 1)]中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间。
- 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。
例如一个站经过两次数据发送均发生了碰撞,那么k=2,那么下次发送它要退避的时间可能是3x2τ =6τ ,如果经过了三次发送没有成功,那么退避时间可能是5x2τ =10τ ,总的原则就是重传次数越多的站就让它等待更多的时间再发送。
10Mb/s以太网争用期的长度
取 51.2 us 为争用期的长度。
对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节。
以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
最短有效帧长
- 如果发生冲突,就一定是在发送的前 64 字节之内。
- 由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节。
- 10Mb/s以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。
帧间最小间隔
帧间最小间隔为 9.6 us,相当于 96 bit 的发送时间。96bit/10MB/S
一个站在检测到总线开始空闲后,还要等待 9.6 us 才能再次发送数据。
这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。
强化碰撞
当发送数据的站一旦发现发生了碰撞时:
- 立即停止发送数据;
- 再继续发送若干比特的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生了碰撞。
CSMA/CD协议总结
- 形成以太网帧,放入适配器缓存待发送
- 检测信道为空则发送,否则等待
- 在发送时继续检测,若无冲突发送成功,否则终止数据发送,并发送人为干扰信号
- 执行指数退避算法,等待后转到步骤2
以太网的信道利用率
一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功且信道转为空闲(即再经过时间 τ 使得信道上无信号在传播)时为止,是发送一帧所需的平均时间。
参数 a
- 要提高以太网的信道利用率,就必须减小 τ 与 T0 之比。在以太网中定义了参数 a,它是以太网单程端到端时延 τ 与帧的发送时间 T0 之比:
- a→0 表示一发生碰撞就立即可以检测出来,并立即停止发送,因而信道利用率很高。
- a 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道
利用率明显降低。
如果要提高信道利用率,就应该减小a的值。设信道的长度为S,信号在信道上的传播速率为V,设数据帧的长度为L,发送速率为C
通常情况下信道的物理介质选定后C是固定不变的,如果帧的发送速率V也确定了,那么要提高信道的利用率只有两个途径:
- 减小信道长度S;
- 增加帧的长度L。