目录
局域网的数据链路层
局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。
在局域网刚刚出现时,局域网比广域网具有较高的数据率、较低的时延和较小的误码率。但随着光纤技术在广域网中普遍使用,现在广域网也具有很高的数据率和很低的误码率。
局域网具有如下的一些优点:
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和生存性。
局域网可按照网络拓扑分类
以太网拓扑:逻辑上总线型,物理上星型
总线网以传统以太网最为著名,但以太网后来又演变成了星形网。经过四十多年的发展,以太网的速率已大大提高。
现在最常用的以太网的速率是1Gbit/s(家庭或中小企业)、10 Gbit's(数据中心)和100 Gbit/s(长距离传输),且其速率仍在继续提高。现在以太网已成为了局域网的同义词,
局域网与共享信道
必须指出,局域网工作的层次跨越了数据链路层和物理层。由于局域网技术中有关数据链路层的内容比较丰富,因此我们就把局域网的内容放在数据链路层这一章中讨论。但这并不表示局域网仅仅和数据链路层有关。
共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便地共享通信媒体资源。这在技术上有两种方法:
1.静态划分信道:
- 频分复用
- 时分复用
- 波分复用
- 码分复用
用户只要分配到了信道就不会和其他用户发生冲突。但这种划分信道的方法代价较高,不适合于局域网使用。
2.动态媒体接入控制:
其特点是信道并非在用户通信时固定分配给用户。这里又分为以下两类:
1)随机接入
随机接入的特点是所有的用户可随机地发送信息但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞(即发生了冲突),使得这些用户的发送都失败。因此,必须有解决碰撞的网络协议。
2)受控接入
受控接入的特点是用户不能随机地发送信息而必须服从一定的控制。这类的典型代表有分散控制的令牌环局域网和集中控制的多点线路探询,或称为轮询。
以太网的两个主要标准
- DIX Ethernet V2:第一个局域网产品(以太网)规约。
- IEEE 802.3:IEEE 802委员会802.3 工作组制定的第一个IEEE的以太网标准。
IEEE 802委员会未能形成一个统一的局域网标准,而是被迫制定了几个不同的局域网标准。
为了使数据链路层能更好地适应多种局域网标准,他们将局域网的数据链路层拆成两个子层。
逻辑链路控制LLC子层和媒体接入控制MAC子层。与接入到传输媒体有关的内容都放在 MAC子层,而LLC子层则与传输媒体无关,不管采用何种传输媒体和 MAC子层的局域网对 LLC子层来说都是透明的。
**LLC的作用:**为数据建立连接,使他们在以太网上进行设备之间的传输
MAC的作用:使用硬件地址,分配给网络接口卡,来标识特定的设备,显示源和目标数据传输
然而到了20世纪90年代后,激烈竞争的局域网市场逐渐明朗。以太网在局域网市场中己取得了垄断地位,并且几乎成为了局域网的代名词。
这里不必叙述后来陆续出现的多种以太网标准的详细过程。目前使用最多的局域网只剩下 DIX Ethernet V2(简称为以太网)而不是IEEE 802委员会制定的几种局域网。
本章在介绍以太网时就不再考虑LLC子层。这样对以太网工作原理的讨论会更加简洁。
适配器与mac地址
适配器,也常被称为网络接口卡或网络接口控制器,在计算机网络中负责实现计算机与网络之间的物理和数据链路层连接。
要将计算机接入以太网,都需要使用网卡
它是一个硬件组件,通常以扩展卡的形式插入主板的PCI插槽或直接集成在主板上。适配器的主要功能包括:
- 数据封装与解封装:将上层数据包(如IP包)封装成适合在物理介质上传输的数据帧,以及接收时进行相反的过程。
- 物理地址(MAC地址)管理:每个适配器都有一个全球唯一的MAC地址,用于在网络中标识该设备。
- 介质访问控制:遵循相应的介质访问控制协议(如以太网的CSMA/CD或无线网络的CSMA/CA),决定何时发送数据到共享介质上。
- 数据传输:负责实际的数据传输,包括信号的发送与接收
适配器的组成与运作
- 在计算机内部,网卡与CPU之间的通信,一般是通过计算机主板上的IO总线以并行传输方式进行。
- 网卡与外部以太网(局域网)之间的通信,一般是通过传输媒体(同轴电缆、双绞线电缆、光纤)以串行方式进行的。
- 网卡除要实现物理层和数据链路层功能,其另外一个重要功能就是要进行并行传输和串行传输的转换。由于网络的传输速率和计算机内部总线上的传输速率并不相同,因此在网卡的核心芯片中都会包含用于缓存数据的存储器。
- 在确保网卡硬件正确的情况下,**为了使网卡正常工作,还必须要在计算机的操作系统中为网卡安装相应的设备驱动程序。**驱动程序负责驱动网卡发送和接收帧。
请注意,虽然我们把适配器的内容放在数据链路层中讲授,但适配器所实现的功能却包含了数据链路层及物理层这两个层次的功能。现在的芯片的集成度都很高,以致很难把一个适配器的功能严格按照层次的关系精确划分开。
适配器的运作:
- 适配器在接收和发送各种帧时,不使用计算机的CPU。这时计算机中的CPU可以处理其他任务。
- 当适配器收到有差错的帧时,就把这个帧直接丢弃而不必通知计算机。
- 当适配器收到正确的帧时,它就使用中断来通知该计算机,并交付协议栈中的网络层。
当计算机要发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。
我们特别要注意,计算机的硬件地址就在适配器的ROM中;而计算机的软件地址------IP地址,则在计算机的存储器中。
MAC地址
在点对点信道中,数据链路层不需要使用地址,但是在广播信道中,需要辨别谁发送数据帧,谁接收数据帧,就需要硬件地址
MAC地址的详细介绍
每个网络适配器都有一个固定的MAC地址,该地址在生产时就被固化到硬件中,不能更改。
(1)假定连接在局域网上的一台计算机的适配器坏了而我们更换了一个新的适配器,那么这台计算机的局域网的"地址"也就改变了,虽然这台计算机的地理位置一点也没有变化,所接入的局域网也没有任何改变。
(2)假定我们把位于南京的某局域网上的一台笔记本电脑携带到北京,并连接在北京的某局域网上。虽然这台电脑的地理位置改变了,但只要电脑中的适配器不变,那么该电脑在北京的局域网中的"地址"仍然和它在南京的局域网中的"地址"一样。
综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
如果连接在局域网上的主机或路由器安装有多个适配器,该设备就有多个"地址"。
MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址,所以MAC地址有时也被称为物理地址。
不要被物理地址中的"物理"二字误导,误认为物理地址属于网络体系结构中物理层的范畴。物理地址属于数据链路层范畴。
- 一般情况下,普通用户计算机中往往会包含两块网卡:
- 一块是用于接入有线局域网的以太网卡
- 另一块是用于接入无线局域网的Wi-Fi网卡
- 每块网卡都有一个全球唯一的MAC地址。
- 交换机和路由器往往具有更多的网络接口,所以会拥有更多的MAC地址。
局域网的mac地址格式
但是由于6字节的地址字段可使全世界所有的局域网适配器都具有不相同的地址,因此现在的局域网适配器实际上使用的都是6字节MAC地址。
现在IEEE的注册管理机构RA 是局域网全球地址的法定管理机构,它负责分配地址字段的6个字节中的前三个字节(即高位24位)。世界上凡要生产局域网适配器的厂家都必须向IEEE购买由这三个字节构成的这个号(即地址块)。
**这个号的正式名称是组织唯一标识符OUI,通常也叫作公司标识符。**但应注意,24位的OUI不能够单独用来标志一个公司,因为一个公司可能购买了几个OUI,也可能有几个小公司合起来购买一个 OUI。
地址字段中的后三个字节(即低位24位)则是由厂家自行指派,称为扩展标识符,只要保证生产出的适配器没有重复地址即可。
可见购买了一个 OUI,就可以生成出个不同的6字节(48位)MAC 地址,这种地址又称为EUI-48,这里EUI表示扩展的唯一标识符
mac地址的发送顺序
单播、多播,广播mac地址
网卡从网络上每收到一个无误码的帧,就检查帧首部中的目的MAC地址,按以下情况处理:
- (1)如果目的MAC地址是广播地址(FF-FF-FF-FF-FF-FF),则接受该帧。
- (2)如果目的MAC地址与网卡上固化的全球单播MAC地址相同,则接受该帧。
- (3)如果目的MAC地址是网卡支持的多播地址,则接受该帧。
- (4)除上述(1).(2)和(3)情况外,丢弃该帧。
混杂方式:
网卡还可被设置为一种特殊的工作方式:混杂方式。工作在混杂方式的网卡,只要收到共享媒体上传来的帧就会收下,而不管帧的目的MAC地址是什么。
对于网络维护和管理人员,这种方式可以监视和分析局域网上的流量,以便找出提高网络性能的具体措施。
嗅探器就是一种工作在混杂方式的网卡,再配合相应的工具软件,就可以作为一种非常有用的网络工具来学习和分析网络。
混杂方式就像一把"双刃剑",黑客常利用这种方式非法获取网络用户的口令。
mac帧
- **前导码:**一系列的比特模式,用于同步接收器并指示新帧的到来。在以太网中,前导码通常由56位的10101010...101010位序列组成。
- 帧起始定界符:一个单独的位模式,用于标记MAC帧的开始。在以太网中,SFD是一个10101011位序列。
- 目的MAC地址:接收方网络接口卡的物理地址,长度为6字节(48位)。
- 源MAC地址:发送方网络接口卡的物理地址,同样为6字节。
- 类型/长度字段:用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议。例如,当类型字段的值是0x0800时,就表示上层使用的是IP数据报。
- 数据字段 :承载来自网络层的数据,其长度可变,最大传输单元(MTU)通常受限于网络类型,例如以太网的最大有效载荷为1500字节。(46字节是这样得出的:最小长度64字节减去18字节的首部和尾部就得出数据字段的最小长度)
- 帧检验序列:用于错误检测的循环冗余校验(CRC)值,通常为4字节
如何取用以太帧中的数据
Q1:MAC帧格式中,其首部并没有一个帧长度(或数据长度)字段,那么,MAC子层如何知道从接受的以太网帧取出多少字节的数据交付上一层协议?
**A1:**曼彻斯特编码的一个重要特点就是:在曼彻斯特编码的每一个码元(不管码元是1或0)的正中间一定有一次电压的转换(从高到低或从低到高)。
当发送方把一个以太网帧发送完毕后,就不再发送其他码元了(既不发送1,也不发送0)。因此,发送方网络适配器的接口上的电压也就不再变化了。
这样,接收方就可以很容易地找到以太网帧的结束位置。在这个位置往前数4字节(FCS字段长度是4字节),就能确定数据字段的结束位置。
MAC子层填充字段
当数据字段长度小于46字节,MAC子层会在数据字段的后面加入一个整数字节的填充字段,以保证以太网的Mac帧不小于64字节(注意是以太网的MAC帧而不是数据字段)
Q1:IP层如何知道这里有没有填充字段?
**A1:**IP协议首部有一个"总长度"字段,如果IP数据报的"总长度"超过或等于46字节,那么肯定没有填充字段;反之小于46字节,那么就很容易算出填充字段。
例如,若IP数据报的总长度为42字节,填充字段就应当是4字节。当MAC 帧把46字节的数据上交给IP层后,IP层就把其中最后4字节的填充字段丢弃。
以太网MAC帧进入物理层
在传输媒体上实际传送的要比MAC帧还多8个字节,这是因为一个站在刚开始接收MAC 帧时,由于适配器的时钟尚未与到达的比特流达成同步,因此MAC 帧的最前面的若干位就无法接收,结果使整个的MAC成为无用的帧。
为了接收端迅速实现位同步,从 MAC子层向下传到物理层时还要在帧的前面插入8个字节(由硬件生成)
第一个字段是7个字节的前同步码(1和О交替码),它的作用是使接收端的适配器在接收MAC帧时能够迅速调整其时钟频率,使它和发送端的时钟同步,也就是"实现位同步"(位同步就是比特同步的意思)。
第二个字段是帧开始定界符,定义为10101011。它的前六位的作用和前同步码一样,最后的两个连续的1就是告诉接收端适配器:"MAC帧的信息马上就要来了,请适配器注意接收。"
其他注意事项与无效MAC帧
还需注意,在以太网上传送数据时是以帧为单位传送的。以太网在传送帧时,各帧之间还必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个MAC帧。可见以太网不需要使用帧结束定界符,也不需要使用字节插入来保证透明传输。
MAC 帧的FCS字段的检验范围不包括前同步码和帧开始定界符。
顺便指出,在使用SONET/SDH进行同步传输时则不需要用前同步码,因为在同步传输时收发双方的位同步总是一直保持着的。
IEEE 802.3标准规定凡出现下列情况之一的即为无效的MAC帧:(1)帧的长度不是整数个字节;
(2)用收到的帧检验序列FCS查出有差错;
(3)收到的帧的MAC客户数据字段的长度不在46~1500字节之间。考虑到MAC帧首部和尾部的长度共有18字节,可以得出有效的MAC帧长度为64~1518字节之间。
对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。
CSMA/CD协议
最早的以太网:将许多计算机都连接到一根总线上。
总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。
为了在总线上实现一对一的通信,可以使每一台计算机的适配器都拥有一个与其他适配器都不同的地址。在发送数据帧时,在帧的首部写明接收站的地址。
现在的电子技术可以很容易做到:仅当数据帧中的目的地址与适配器ROM中存放的硬件地址一致时,该适配器才能接收这个数据帧。
. 总线缺点:多个站点同时发送时,会产生发送碰撞或冲突,导致发送失败。
以太网用来简化通信的两种措施
为了通信的简便,以太网采取了以下两种措施:
- 采用较为灵活的无连接的工作方式。
- (1)不必先建立连接就可以直接发送数据。
- (2)对发送的数据帧不进行编号,也不要求对方发回确认
注:
- 这样做可以使以太网工作起来非常简单,局域网信道的质量很好,因通信质量不好产生差错的概率是很小的。 因此,以太网提供的服务是尽最大努力的交付,即不可靠的交付。
- 当目的站收到有差错的数据帧时 (例如:用CRC查出有差错):就把帧丢弃,其他什么也不做。对有差错帧是否需要重传则由高层来决定。 例如,如果高层使用TCP协议,那么TCP就会发现丢失了一些数据。于是经过一定的时间后,TCP就把这些数据重新传递给以太网进行重传。但以太网并不知道这是重传帧,而是当做新的数据帧来发送。
- 同一时间只能允许一台计算机发送数据: 以太网采用最简单的随机接入 来协调总线上各计算机的工作,但有很好的协议用来减少冲突发生的概率,以太网使用的协议是CSMA/CD。
2.以太网发送的数据都使用曼彻斯特编码。
Q1:为什么不使用其他二进制基带数据信号?
A1:使用高、低电压交替出现的信号,最大问题就是当出现一长串连续的1或连续的0时,接收端就无法从收到的比特流中提取位同步(即比特同步)信号。详情如此
曼彻斯特编码是从高电压变到低电压,这样保证了每一个比特的正中间出现一次电压的转换。而接收端就利用这种电压的转换很方便地把位同步信号提取出来。
**缺点:**从曼彻斯特编码的波形图可以看出,这就是它所占的频带宽度比原始的基带信号增加了一倍(因为每秒传送的码元数加倍了)。
CSMA/CD协议的要点
1、多点接入 :
说明这是总线型网络。许多计算机以多点接入的方式连接在一根总线上。协议的实质是"载波监听"和"碰撞检测"。
2、载波监听 :
即**"边发送边监听"** 。**不管在想要发送数据之前,还是在发送数据之中,每个站都必须不停地检测信道。**在发送前检测信道,是为了避免冲突。
如果检测出已经有其他站在发送,则本站就暂时不要发送数据。在发送中检测信道,是为了及时发现如果有其他站也在发送,就立即中断本站的发送。这就称为碰撞检测。
3、碰撞检测(冲突检测):
适配器边发送数据,边检测信道上的信号电压的变化情况。当两个或几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加)。
电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞(或冲突)
一旦发现总线上出现了碰撞,其适配器就要立即停止发送,免得继续进行无效的发送,白白浪费网络资源,然后等待一段随机时间后再次发送。
CSMA/CD的缺陷
因为传播有时延,可能B还没传输到总线上,C未检测出来,于是发送了数据。
退避一段时间,再次检测并重传该帧,总体流程如下:
以太网还采取了另外一种措施如下:
- 载波监听检测到总线空闲,但总线并不一定空闲。
- 使用CSMACD协议的共享总线以太网上的各站点,只是尽量避免碰撞并在出现碰撞时做出退避后重发的处理,但不能完全避免碰撞。
- 在使用CSMA/CD协议时,由于正在发送帧的站点必须"边发送帧边检测碰撞",因此站点不可能同时进行发送和接收,也就是不可能进行全双工通信,而只能进行半双工通信(双向交替通信)。
争用期
争用期的特点
不现实的理想争用期
从条件1与条件2就可以得知该状态不存在。
另外考虑到其他时延因素, 争用期2τ应小于51.2μs。
练习
这里不能直接套前面的碰撞公式,注意这里是要求从发送数据到检测到碰撞时刻的最短时间,应该是分类讨论不同的情况
共享式以太网的最小帧长和最大帧长
最小帧长
有情况如下:
综合如上情况,我们可得出最小帧长的概念:
当某个站点在发送帧时**,如果帧的前64B没有遭遇碰撞,那么帧的后续部分也就不会遭遇碰撞。** 也就是说,如果遭遇碰撞,就一定是在帧的前64B之内。
由于发送帧的站点边发送帧边检测碰撞,一旦检测到碰撞就立即中止帧的发送,此时已发送的数据量一定小于64B。
因此,接收站点收到长度小于64B的帧,就可判定这是一个遭遇了碰撞而异常中止的无效帧,将其丢弃即可。
最大帧长
如果不对帧的数据长度加以限制,会产生问题如下:
所以MAC帧最大长度为1518帧,数据载荷帧最小为46B也是为了满足这个最小帧长,如如果不满足,就填充字段。
练习
这里了解一下最小帧长的公式,实际前面的以太网最小帧长公式就是通过该公式求出来的:
另外,争用期2τ只跟信号速度与信道总长有关(即本质是信号从信道一端到达另一端的时间×2),不要被其他参量搞错了。
共享式以太网的退避算法
在使用CSMA/CD协议的共享总线以太网中,正在发送帧的站点一边发送帧一边检测碰撞,当检测到碰撞时就立即停止发送,退避一段随机时间后再重新发送。
共享总线以太网中的各站点采用截断二进制指数退避(Truncated Binary Exponential Backoff)算法来选择退避的随机时间。
- 如果连续多次发生碰撞,就表明可能有较多的站点参与竞争信道。但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(即动态退避),因而减小产生碰撞的概率。
- 当重传达16次仍不能成功时,就表明同时打算发送帧的站点太多,以至于连续产生碰撞,此时应放弃重传并向高层报告。
退避过程
- 退避时间为:2 τ× r(争用期)
- 第一次冲突后,r={0,1},每个站点将会等待在0或者1个基本退避时间后进行重传。
- 第二次冲突后,r={0,1,2,3},每个站点将会随机等待0,1,2,3之中选取一个随机数乘以基本退避时间作为退避时间后再开始重传。
- 第i ≤ 10 i≤10次冲突后,r={0,1,2,3,......-1}会在该区间整数中选取一个随机数乘以争用期作为退避时间后再开始重传。
- 第10次冲突后,r={0,1,2^=......1023},第十次之后,选择的基本的时间将会固定的在0到1023之间选取一个随机数乘以基本退避时间作为退避时间后开始重传。
- 第16次冲突后,发送失败,报告上层
强化碰撞
当发送数据的站一旦发现发生了碰撞时,除立即停止发送数据外,还要再继续发送32比特或48比特的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞
TB:A站从发送数据开始到检测到碰撞并停止发送的时间间隔
TJ:A站得知碰撞已经发生时发送的强化碰撞的干扰信号的持续时间
τ:总线中干扰信号需要传送一个端到端的距离
发生碰撞使A浪费的时间:TB+TJ
整个信道被占用的时间:TB+TJ+τ
共享式以太网的信道利用率
提高信道利用率的提高方式:
D选项中信号传播延迟趋近于0",这相当于信号瞬间到达整个网络,致使公式中的τ=0,得出Smax=1
使用集线器的星形拓扑
传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。
采用双绞线的以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备 ,叫做集线器 (hub)
(1)使用集线器的以太网在逻辑上仍然是总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议(更具体来说,各个站点适配的还是CSMA/CD协议),各站中的站点必须竞争对传输媒体对控制,并且在同一时刻至多只允许一个站发送数据
从表面上看使用集线器的局域网物理上是一个星型网,但是由于集线器使用电子器件模拟实际电缆线的工作,所以运行从逻辑上讲还是和传统以太网一样。
(2)集线器有许多端口,是一个多端口的中继器,即一个多端口的转发器
原先使用中继器作为物理层的转发设备时,只能互联两个端系统(即两台主机),所以超过两个设备的互联,中继器不再适用,所以出现了多个端口的转发设备-----集线器。
(3)集线器工作在物理层,它的每个端口仅仅简单地转发比特收到1就转发1,收到0就转发0,不进行碰撞检测。
若两个端口同时有信号输入(即发生碰撞),那么所有的端口都将收不到正确的帧。
(4)集线器采用了专门的芯片,进行自适应串音回波抵消。
这样就可使端口转发出去的较强信号不致对该端口接收到的较弱信号产生干扰(这种干扰即近端串音)。每个比特在转发之前还要进行再生整形并重新定时。
10BASE-T以太网
- IEEE于1990年制定了10BASE-T星型以太网的标准802.3i,这种以太网是局域网发展史上的一座非常重要的里程碑,它为以太网在局域网中的统治地位奠定了牢固的基础。
- 10BASE-T以太网的通信距离较短,每个站点到集线器的距离不能超过100m。
- IEEE 802.3以太网还可使用光纤作为传输媒体,相应的标准为10BASE-F,"F"表示光纤。光纤主要用作集线器之间的远程连接。