《计算机网络》--ch03 数据链路层

数据链路层在物理层之上,也属于计算机网络的底层。如果物理层简述为实现或完成了计算机网络的比特传输,那么数据链路层就可以理解为完成了计算机网络的帧传输。数据链路层使用的信道主要有两种类型:点对点信道和广播信道。广播信道上主机数量较多,要实现一对多的通信比较复杂,需要使用专门的共享信道协议来协调主机的数据发送。

本章主要内容是数据链路层的实现,包括:(1)两种信道特点、信道所使用协议(PPP协议以及CSMA/CD协议)的特点;(2)三个基本问题:组装成帧、透明传输和差错检测;(3)以太网MAC层的硬件地址;(4)适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合。

两台主机通过互联网通信时数据链路层所处地位如下(图3-1,P71)。数据链路层的地位
而讨论研究数据链路层时,则只关心协议栈中水平向的个数据链路层,即两主机通信时,数据在数据链路层水平方向从左至右移动(图3-2,P72)。只考虑数据在数据链路层的流动

3.1 数据链路层的几个共同问题

本节讨论点对点信道中的几个概念和基本问题。

1 数据链路和帧

首先要区分链路和数据链路两个概念:
链路(link) 指从一个节点到相邻节点的一段物理线路(有线或无线),中间不经过其他交换节点。
数据链路(data link) 指传输数据的物理线路,加上控制传输的必要协议(包含实现协议的硬件软件)。
数据链路连接中常用的方法是使用网络适配器实现必要协议,一般的适配器都包括数据链路层和物理层两层的功能。

其次是,它是数据链路层的协议数据单元。数据链路层把网络层交下来的数据组成帧发送到链路上,把接收到的帧中的数据提取出来上交给网络层(图3-3,P73)。可以理解为,帧是数据链路层有效通信数据的基本单元,通信在经过数据链路层时都是以帧的形式存在或传输的。使用点对点信道的数据链路层

2 三个基本问题

前面说到通信时数据链路层传输的基本单元是帧,就有个很重要的问题:怎样在保证正确传输的情况下把数据变成帧的形式。

封装成帧
在数据前后再添加首部和尾部,就构成了一个帧(图3-4,P74)。接收端在可以通过识别首尾部来提取一帧中的具体数据,即接收到帧首部则表示之后的数据为有效数据,需要进行接收或下一步处理;接收到帧尾部后则表示之后为无效数据,不再做处理。添加在首部和尾部的数据可以实现帧定界的作用,也可以添加必要的控制信息。因此,各种数据链路层的协议都对帧首部和尾部格式的格式有明确规定。用帧首部和帧尾部封装成帧这里涉及到一个最大传送单元MTU(Maximum Transfer Unit)的概念,就是指链路层能传送帧的数据部分长度上限,要注意是数据部分,不包含帧首部和帧尾部。

透明传输
帧的开始和结束都是使用特定字符进行控制,这时就有一个问题:待传输的数据和控制字符相同的情况下如何进行传输。如果还是简单的对数据进行封装发送,接收端会错误的判断帧边界,使传输出错。这样的传输是不透明传输。所谓透明,就是某一个实际存在的事物看起来却好像不存在一样(例如100%透明的玻璃)。数据链路层的透明传输要实现的效果就是:无论什么样的比特组合的数据,都能够按照原样没有差错地通过数据链路层。说白了就是要解决帧首部和尾部添加的字符对传输数据的影响。

书中举例了一种字节填充法来解决,具体为在数据段传输的控制字符前添加转义字符(图3-7,P76)。转义字符相当于一个提示,当接收端在收到转义字符后,就知道后面紧跟的是普通数据而不是起控制作用的控制字符。图中使用的转移字符为“ESC”,而ESC字符本身也需要进行一次转义。字节填充法解决透明传输的问题
差错检测
现实中通信链不是理想的,比特在传输时难免出现比特差错,比如1变为0或者0变为1。差错检测用来识别传输过程出现的错误。数据链路层广泛使用的检错技术为循环冗余校验CRC(Cyclic Redundancy Check)。具体计算过程这里不记录,以后有可能的话会更新在 循环冗余校验CRC。

借助CRC差错检测,可以识别数据链路层出现的比特差错,通过检验的帧保留,未通过的帧丢弃。这样在数据链路层就可以实现:凡是接收端数据链路层接受的帧都没有(比特)错误。

还有些更高级的差错如帧丢失,帧重复,帧失序,都是关于帧的差错,这类更高级的问题会在高层进行处理,数据链路层只是保证了帧的无比特差错的传输。

这里有个概念:误码率BER Bit Error Rate) 指一段时间内,传输错误的比特占所有传输比特总数的比率。误码率与信噪比是正相关的,即信噪比越高就会使误码率越高。

3.2 点对点协议PPP

本节介绍点对点协议PPP(Point-to-Point Protocol),是目前使用最广泛的数据链路层协议。

1 PPP协议的特点

互联网用户通过连接到某个ISP连接到互联网,用户计算机和ISP进行通信时使用的数据链路层协议就是PPP协议。PPP协议1992年由IETF制定,经1993年和1994年修正后成为互联网正式标准。IETF制定时认为PPP协议必须考虑以下多方面需求:

  1. 简单 PPP协议制定的首要要求就是简单,这种链路层协议简单到:接收方每接收到一个帧,进行CRC校验。校验通过就收下这个帧,不通过就丢弃,其他什么不做。
  2. 封装成帧 PPP协议要求规定特殊字符作为帧定界符。
  3. 透明性 PPP协议要保证透明传输,即能够处理数据与帧定界符相同的情况。
  4. 多种网络层协议 PPP协议必须保证同一条物理链路上同时支持多种网络层协议的运行。
  5. 多种类型链路 PPP协议必须能够在多种类型的链路上运行。
  6. 差错检测 PPP协议必须能够在接收端对收到的帧进行检测,并立即丢弃有误差的帧。
  7. 检测连接状态 PPP协议必须有一种机制能够及时(不超过几分钟)自动检测出链路是否在正常工作状态。
  8. 最大传送单元 PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的默认标准。
  9. 网络层地址协商 PPP协议必须提供一种机制使通信的两个网络层(例如两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。
  10. 数据压缩协商 PPP协议必须提供一种方法来协商使用数据压缩算法。

在TCP/IP协议族中,可靠性传输由TCP协议负责,PPP协议不负责纠错、设置序号、流量控制等。PPP协议只支持点对点的链路通信,只支持全双工链路。

PPP协议有三个组成部分:

  1. 一个将IP数据包封装到串行链路的方法。
  2. 一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol)。
  3. 一套网络控制协议NCP(Network Control Protocol),每种协议支持不同的网络层协议,如IP、OSI的网络层、DECent和AppleTalk等。

2 PPP协议的帧格式

各字段的意义
PPP帧的首部和尾部分别为四个字段和两个字段(图3-10,P81)。PPP帧的格式
首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E。标志位标志一个帧的开始或结束,即帧的定界符。两帧之间只需要用一个标志字段,出现连续两个标志字段就表示一个空帧,应当丢弃。地址字段A规定为0xFF,控制字段0x03。协议字段为可变字段,0x0021时表示信息部分为IP数据报,0xC021时表示链路控制协议LCP的数据,0x8021时表示网络层的控制数据。FCS字段使用2字节的CRC校验序列。一个PPP帧长度不超过1500字节。

字节填充
其实还是要解决传输数据和标志字段(0x7E)相同时的问题。PPP协议使用的方法:1)把数据段每个要传输的0x7E字节变成两个字节序列(0x7D,0x5E);2)把数据段每个要传输的0x7D字节变成另外两个字节序列(0x7D,0x5D);3)然后是对于信息字段出现的ASCII码的控制字符(值小于0x20的字符),也要在前面加上一字节0x7D。可见,PPP协议采用的也是字节填充的方式实现前面的透明传输要求。

零比特填充
书中原话:PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是一部传输(逐个字符地发送)。在这种情况下,PPP协议采用令比特填充方法实现透明传输。具体实现方式是:开始与结束标志还是字段F(01111110),即首尾共两个0,中间连续6个1。而数据段部分,只要出现连续5个1之后,就在后面填充一位的0。即除开始和结束控制字符外,发送方每发送连续5个1之后就会发送一个0作为填充。而接收方在接收到字符F后后开始接收数据,当接收到连续5个0后,若下一位是0,就判定为填充位,将填充0丢弃。这样,在链路层传输的数据部分就不再会出现标志字符F。(图3-11,P82)
零比特的填充与删除

3 PPP协议的工作状态

首先就是PPP链路工作流程:用户拨号接入ISP后,就建立了一条用户个人电脑到ISP的物理连接。这是用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),来建立LCP连接。接着是进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP,这样用户个人电脑就是互联网上一个有IP的主机了。当用户通信完毕,NCP释放网络层连接,回收IP。接着LCP释放数据链路层连接,最后释放物理层的连接(图3-12,P82)。PPP协议的状态图

3.3 使用广播信道的数据链路层

使用广播信道可以进行一对多的通信,局域网使用的就是广播信道。

1 局域网的数据链路层

局域网的最主要的特点是:网络为应该一个单位所拥有,且地理范围和站点数目均有限。局域网具有一下优点:

  1. 具有广播功能,从一个站点可以很方便的访问全网。局域网上的主机可以共享连接在局域网上的各种硬件和软件资源。
  2. 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
  3. 提高了系统的可靠性(reliably)、可用性(availability)和生存性(survivability)。

按照网络拓扑结构,局域网可分为星形网环形网总线网(图3-13,P84)。星形网使用集线器(hub)和双绞线连接。总线网两端要使用匹配电阻吸收电磁波信号的能量,避免总线上产生有害的电磁波反射。局域网的拓扑
既然局域网使用的是广播通信的方式将用户进行连接,就存在一个问题:怎样合理且方便地共享通信媒体资源。从技术上有两种方法:

  1. 静态划分信道 如同之前所提的频分复用、时分复用、波分复用和码分复用等,用户只要分配到了信道就不会与其他用户发生冲突,但这种方法放在局域网众多用户通信时代价会显得很高,显然不适合。
  2. 动态媒体接入控制 又称为多点接入(multiple access),其特点就是信道并非固定分配给用户,具体又分为:
    (1)随机接入 所有用户都可以随时发送消息,但两个或更多用户在同时发送消息时就会出现冲突,使用户都发送失败。此时需要有解决这种冲突的网络协议。
    (2)受控接入 用户不能随即地发送消息,需要服从统一的控制。典型代表有分散控制的令牌环局域网和集中控制的多点线路探询(polling),或成为轮询。这种目前在局域网中使用较少,不具体介绍。

传统以太网
以太网最早由美国施乐(Xerox)公司1975年研制并命名为以太(Ether)。1980年9月提出DEC公司、英特尔公司和施乐公司联合推出10Mbit/s以太网规约第一版DIX V1。1982年有修改为第二版(也是最后版),即DIX Ethernet V2,世界上第一个局域网产品的规约。IEEE 802委员会在此基础上于1983年制定了第一个IEEE的以太网标准IEEE 802.3,速率为10Mbit/s。IEEE 802.3标准与DIX Ethernet V2只有很小的差别,很多人也把802.3局域网成为以太网。由于厂商商业竞争激烈,IEEE802委员会并未形成统一的局域网标准,被迫制定了几个不同的标准。为了适应多种局域网标准,IEEE802委员会层把局域网的数据链路层拆分称两个子层(图3-14,P86),即逻辑链路控制层LLC(Logic Link Control)子层和媒体接入控制MAC(Medium Access Control)子层。与媒体接入有关的内容都放在MAC子层,与LLC子层无关。20世纪90年代后,以太网在局域网市场取得了垄断地位,局域网使用最多的只剩下DIX Ethernet V2标准,其他多种标准不再使用。IEEE 802制定的逻辑链路控制子层LLC作用也消失,厂商的适配器仅装有MAC协议而没有LLC协议。局域网对LLC子层是透明的
适配器
计算机通过适配器(adapter)和外界局域网连接(图3-15,P87)。适配器就是主机向内插入的一块网络接口板卡,又称为网络接口卡NIC(Network Interface Card),简称网卡。适配器与网络之间通信通过电缆或双绞线以串行方式进行,与计算机之间通过计算机主板上的I/O总线进行并行传输,因此适配器要进行数据串行和并行传输的转换。适配器插入主板后,还要把管理适配器的设备驱动程序安装在计算机操作系统。网络上数据帧收发由适配器进行,不需要使用计算机的CPU。当收到正确帧时,适配器会使用中断通知计算机,并交付到协议栈中的网络层;当计算机要发送IP数据报时,由协议栈把IP数据报交给适配器,由适配器组装成帧后发送到局域网。而具体数据包交付内存中位置及发送数据报的读取位置,则由驱动程序告知适配器。计算机通过适配器和局域网进行通信这里IP地址是指计算机的软件地址,硬件地址存储在适配器的ROM中。

2 CSMA/CD协议

最早的以太网是将许多计算机连接到一根总线上,这样一台计算机发送数据时,总线上所有计算机都能检测到这个数据。实际上所有计算机都接受这个数据是不必要的,而计算机是由适配器连接到以太网,因此可以通过适配器实现数据报过滤的功能。具体为:发送数据帧时,在帧首部写明接收站的地址,同时每一个适配器都分配一个硬件地址,放在适配器的ROM中,只有接收到帧的接受地址与适配器中硬件地址一致时,适配器才接受这个帧,否则就丢弃。

有一个问题就是,总线上只要由一台计算机在发送数据,总线资源就会被占用,这时就需要协调总线上各计算机之间的工作。以太网则是采用前面提到的随机接入的方式,然后使用载波监听对点接入/碰撞检测协议CSMA/CD(Carrier Sense Multiple Access with Collision Detection)来减少发生冲突的概率。这个协议大概过程就是:计算机时刻监控总线上是否有发送数据,有的话就不发送,自己有数据发送且别人都没有在发送数据的时候就把数据发出去。由于数据传输需要时间,假设两台计算机同时开始发送数据,然后都检测到来自别处的数据(即发生来冲突),就立刻停止数据发送,等待一段时间没人发送后再进行数据发送。这个协议有三个要点:

  1. 多点接入,多个计算机以多点接入的方式连接在总线上。
  2. 载波监听,不管数据发送前,数据发送时,每个站都要不停的检测信道。
  3. 碰撞检测,当两个或几个站同时发送数据时,总线上信号电压幅度变化会增大,即发生冲突,适配器要检测到这种冲突。

显然,使用CSMA/CD协议时,一个站不能同时发送和接受,因此使用这种协议的以太网只能进行双向交替通信(半双工)。协议具体的实现过程这里不记录,以后有可能的话会更新在 CSMA/CD协议。

3 使用集线器的星形拓扑结构

传统以太网最初使用粗同轴电缆,后来演化到较便宜的细同轴电缆,最后是更便宜更灵活的双绞线。这时的以太网普遍采用星形拓扑结构,在星形中心使用一种可靠性极高的设备,集线器(hub)。具有三个端口的集线器
集线器有以下特点:

  1. 使用集线器的以太网在逻辑上仍是一个总网,各站共享逻辑上的总线,使用CSMA/CD协议通信。
  2. 集线器有多个端口,像多端口的转发器。
  3. 集线器工作在物理层,只是简单地转发比特,不进行碰撞检测。
  4. 集线器使用专门的芯片,可以自使用串音回波抵消,每个比特在转发之前还要进行再生整形和重新定时。

集线器一般都具有少量容错能力和网络管理能力。例如,在以太网中有一个适配器出现故障,不停地发送以太网帧。这时,集线器可以检测到这个问题,在内部断开与出故障的适配器的连接。

4 以太网的信道利用率

假设一个10Mbit/s以太网有10个站在工作,最理想的情况下每个站发送数据的平均速率是总速率的1/10。然而一旦发生碰撞,信道资源就会被浪费,信道利用率达不到100% (图3-21,P94)。以太网的信道被占用的情况图中 2τ 表示争用期( τ 是以太网单程端到端传播时延),T0 表示发送帧需要的时间。

可以得出,成功发送一帧需要占用信道的时间为T0 + τ。因为一个站在发送完最后一个比特后,还需要等这个比特传输到另一端(最极端情况),此后以太网的媒体才能进入空闲状态,才能允许其他站发送数据。

以太网中定义了参数 a,它是以太网单程端到端时延 τ帧的发送时间 T0 之比:a=τ / T0 。当τ趋近于0时,表示争用期越短,一旦发生碰撞,很快能检测出来,因此信道被浪费是时间非常少。而 τ 越大,表明争用期占比越大,每次碰撞浪费资源越多,会使信道利用率明显降低。 同理,T0 越大,信道利用率会越高。此时就要求以太网的帧长不能太短(否则T0 会很小),而以太网连线的长度也受到限制(不能太长,否则 τ 会变大)。

极端理想情况下(不发生碰撞,且总线一旦空闲就有某个站发送数据),可以得到信道的极限利用率 Smax = T0 / (T0 + τ) = 1 / (1 + a)。即只有 a 远小于1才能得到尽可能高的极限信道利用率

5 以太网的MAC层

MAC地址
前面说到适配器连接在计算机与网络中间,每个适配器都有一个硬件地址,就是计算机的硬件地址,也称为MAC地址,这个地址是固化在适配器的ROM中的。因此就有两点:(1)一体计算机使用的适配器坏了,更换一个新适配器后,这台计算机的地址就变了;(2)一台计算机从一个地方被带到另一个地方,只要使用的适配器没变,计算机的物理地址就不变。由此可见,物理地址可以作为一台计算机在网络通信中的一个“名字”或标识,就像每个人都有一个身份证号。

为了给每个适配器分配一个地址且不会重复,这个地址就需要一定的长度。IEEE 802标准规定MAC地址采用6字节(48位)或2字节(16位)这两种中的一种。由于6字节地址可是全世界所有局域网适配器都有不同的地址,因此现在的局域网适配器实际上都是使用6字节的MAC地址。具体地址分配由IEEE的注册管理机构RA(Registration Authority)统一管理,它负责分配地址字段中的前三个字节。局域网适配器的厂家需要向IEEE购买前三个字节构成的号,称为组织唯一标识符OUI(Organizationally Unique Identifier),后三字节则有厂家自行分配,称为扩展标识符(Extended identifier)。这样的地址也称扩展的唯一标识符(Extended Unique Identifier),即EUI-48

前面提到,适配器有过滤功能,可以过滤掉发往本站的帧,这里的帧有三种:
(1)单播(unicast)帧(一对一),即收到的帧的MAC地址与本站MAC地址相同。
(2)广播(broadcast)帧(一对全体),即发送给本局域网上所有站点的帧(地址全1)。
(3)多播(multicast)帧(一对多),即发送给本局域网上一部分站点的帧。
适配器还可以设置成特殊的工作方式混杂方式(promiscuous mode),只要接收到以太网上传输的帧就悄悄地接收下来,不管是发往哪个站。实际上就是“窃听”其他站点的通信并不中断其他站点的通信。

MAC帧的格式
前面介绍以太网MAC帧格式有两种标准:DIX Ethernet V2标准和IEEE的802.3标准。而使用最多的是以太网的V2的MAC帧格式,以网络层的IP协议为例,以太网帧格式如下(图3-22,P98)。以太网V2的MAC帧格式
以太网MAC帧由5个字段组成:目的地址、源地址、类型、数据和FCS。目的地址和源地址都是6字节的MAC地址;类型用来标识上一层使用的是什么协议,因为MAC帧的数据要上交到上一层,本例中为IP协议,字段为0x0800;数据字段就是要传输的数据,本例中为IP数据报,长度在46到1500字节之间(当数据长度不足46字节是需要使用填充位);最后是帧检验序列FCS,4字节,使用CRC校验。

实际传输时,以太网帧前面还有8个字节插入:7字节前同步码,1和0交替码,1字节帧开始定界符,0x10101011。定界符的前六位和同步码相同,最后两位连续的1就是告诉接收端适配器,后面来的就是MAC帧了需要接收。前同步码和帧开始定界符由硬件进行生成,其目的是实现适配器时钟与到达比特流的同步。

以太网MAC帧有标识帧起始的前同步码和帧开始定界符,但是没有结束定界符。那么,以太网MAC帧如何确定帧传输结束了呢?这是由于前面提过的,以太网传输使用的是曼彻斯特编码,这种编码的特点就是,每个码元中间有一次电压的转换。所以当发送方把一个帧发送完毕后,就不再进行码元发送。这样,适配器接收时很容易就知道以太网帧的结束位置了。

即使MAC地址相同,适配器接收遇到这些情况,也会将接收到的帧进行丢弃:(1)帧的长度不是整数字节;(2)帧的校验序列FCS出错;(3)帧的数据段长度不在46-1500字节之间。

3.4 扩展的以太网

1 在物理层扩展以太网

首先说明,物理层扩展的以太网,在网络层看来仍然是一个网络。扩展方式就是使用一个主干集线器,将多个集线器网络连接起来,构成一个更大范围的星形结构的以太网(图3-24,P100)。这样的好处就是所有集线器连接的主机之间都可以互相通信。但缺点是,一个集线器网络内某个站在发送数据时,数据会转发到其他集线器网络,这样其他集线器网络的主机就不能发送数据。可以理解为,使用主干集线器后,以太网互联范围变大了,更多的主机可以实现通信。但伴随的是冲突域也一样扩大了,当用户非常多时,就会比较容易发生信道冲突。另一个缺点是,使用不同以太网技术(如数据率不同)的集线器网络是不能通过主干集线器进行连接的。因为集线器只进行转发,而不是存储转发。用多个集线器连接成更大的以太网

2 在数据链路层扩展以太网

扩展以太网更常用的方式是在数据链路层进行。最初是使用网桥(bridge),网桥可以根据MAC帧的目的地址进行转发和过滤。1990年交换式集线器(switching hub)出现,迅速淘汰了网桥。交换式集线器也称以太网交换机或第二层交换机,强调其工作在数据链路层。

以太网交换机的特点
以太网交换机实质是一个多端口网桥,与集线器有很大区别。以太网交换机的每个端口都直接和一台计算机或另一个以太网交换机连接,且一般工作在全双工方式。以太网交换机能同时连接多对端口,即支持多主机同时通信,通信的主机独占传输媒体,无碰撞地传输数据。很多以太网交换机采用的是存储转发的工作方式,在输出端口繁忙时会将到来的帧先缓存,以后再发送出去,这样的交换机端口一般都支持多种速率是数据传输。还有一些交换机采用直通的交换方式,内部采用基于硬件的交叉矩阵,接收到数据帧的同时立即按照数据帧的目的MAC地址转发到相应端口。
以太网交换机有个特点是即插即用,每部的帧交换表地址表)通过自学习算法自动建立,存储在一个内容可寻址存储器(Content Addressable Memory)。

以太网交换机的自学习功能
前面说过,交换机有很多个端口,将帧在各个端口之间转发。具体每个接收到的帧应该转发到哪个端口,就是通过查询交换表实现。我们知道,数据链路层传送的数据都是要封装成帧的格式,而帧的去向是由帧首部的目的MAC地址决定。交换机中的交换表所存储的信息就可以理解为端口和MAC目的地址之间的关系(图3-25,P102),它用来确定收到某个MAC地址的包之后应该转发到哪一个端口。以太网交换机中的交换表
交换表逐渐建立起来的过程:(1)一个交换机刚开始工作,交换表为空。(2)假设A向B发送了一个帧,从端口1进入交换机。交换机收到帧后先查找交换表。此时交换表为空,没有B的地址。于是,交换机将帧的源地址A和端口号1写入交换表,并向除1之外的端口广播这个帧,,保证B收到这个帧。而C和D会因为目的地址不匹配而丢弃这个帧,即过滤。此时,交换表中写入了项目(A,1),之后只要帧的目的地址是A,交换机就直接将收到的帧从端口1转发出去。(3)接下来假设B向A发送一个帧,从端口3进入交换机。交换机收到帧后,发现MAC地址为A,此时交换表中已有项目(A,1),就将这个帧从端口1 转发出去。同时,还会将源地址B和端口号3写入交换表,即项目(B,3),之后目的地址为B的帧都从端口3转发出去。(4)之后C和D等其他主机也会发送帧,以太网交换机会重复上述过程,逐渐添加项目到交换表。

有一点需要考虑的是:连接在交换机端口的主机可能会动态出现变动(主机接入、离线等),这就需要及时更改交换表中的项目。实现更改的过程为:每个项目写入时记录下当时的时间,只要超过预先设定的时间(例如300秒),此项目就被自动删除。之后重复上述的建立过程,以此来实现交换机的自学习效果,达到即插即用的同时又不需要人工配置。

生成树协议STP
在网络连接复杂,主机之间拓扑结构存在环形链路时,会出现帧在无限制循环兜圈子的情况(图3-26,P103)。在两个交换机之间兜圈子的帧上图中,(1)假设主机A向主机D发送一个帧。(2)由于目前交换表是空的,交换机#1将帧广播,从它的2、3、4号端口都进行转发。(3)交换机#2的1号端口收到帧后,将帧进行广播,转发到2、3、4端口,主机D收到帧。同时,交换机#2的2号端口也收到交换机#1发送的帧,也会进行一次广播,转发到1、3、4号端口。(4)此时,交换机#1的3、4端口都收到了发送到主机D的帧,而交换表中没有主机D的MAC地址,交换机#1会进行两次广播。(5)交换机#1两次广播后,交换机#2的1、2会端口分别收到发送到主机D的帧,会重复(3)中的操作,如此反复,广播循环。白白浪费网络资源。

为解决这样的问题,IEEE的802.1D 标准制定了一个生成树协议STP(Spanning Tree Protocol),在不改变网络的实际物理拓扑的情况下,从逻辑上切断了某些链路,使一台主机到其他所有主机的路径都是无环路的树状结构。协议具体的实现过程这里不记录,以后有可能的话会更新在 生成树协议STP。

从总线以太网到星形以太网
以太网上站点增多,使得总线结构的以太网可靠性下降。此时,集成电路与专用芯片的发展,使星形结构的以太网交换机既便宜又可靠,采用星形结构成为以太网的首选拓扑,传统以太网很快消失。
总线以太网使用CSMA/CD协议,以半双工方式工作。以太网交换机不适用总线,没有碰撞问题,不适用CSMA/CD协议,工作方式为全双工。即使此时没有使用以太网重要协议CSMA/CD协议,以太网依然叫做以太网,因为它的帧结构没变,仍采用以太网的帧结构。

3 虚拟局域网

以太网交换机可以很方便的连接很多台计算机,但当一个以太网包含计算机太多时,也会带来两个缺点:
(1)一个以太网是一个广播域。在以太网上会经常出现大量的广播帧,会消耗很多网络资源,如果配置出错还可能导致网络瘫痪;
(2)一个以太网可能由很多下属部门共享。而有些部门需要保密。多部门共享一个局域网对信息安全不利。

虚拟局域网
虚拟局域网VLAN(Virtual LAN)可以很方便的解决这个问题。把较大的局域网划分为一些较小的局域网,每个局域网是一个较小的广播域。虚拟局域网VLAN是由一些局域网网段构成与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪个VLAN。虚拟局域网只是局域网给用户提供的一种服务,并不是一种新型局域网

1988年IEEE批准802.3ac标准,定义蓝以太网的帧格式的扩展(图3-27,P104),以便支持虚拟局域网。虚拟局域网协议允许在以太网的帧格式中插入一个4字节的标识符,称为VLAN标签(tag),用来指明该帧属于哪一个虚拟局域网。VLAN标签的前两个字节总设置为0x8100,称为IEEE802.1Q标签类型。后两字节中前4位为无效位,后12位是该虚拟局域网的VLAN标识符VID,它唯一标识蓝802.1Q帧属于哪一个VLAN。插入VLAN标签后变成802.1Q帧
虚拟局域网划分及VID的分配信息存储在交换机中,网络上的主机并不知道自己的VID。当主机A发送一个帧后,路由器根据帧的目的MAC地址进行转发。若目的MAC地址的主机与本路由直接连接,且与发送主机属于同一个虚拟局域网(A->B),则直接向普通帧一样转发,不需要使用VLAN标签。若目的MAC地址的主机不与本路由器直接连接,但与发送主机属于同一虚拟局域网(A->E),则在转发前插入VLAN标签,此时链路层传送的帧变成802.1Q帧。交换机#2接收到帧后,识别出应转发给主机E后,将已插入的VLAN标签去掉,再将帧转发给主机E。若目的MAC地址与本主机不在同一虚拟局域网(A->C),则情况更加复杂,由更高层的路由来解决。利用以太网交换机构成虚拟局域网交换机在将普通帧变为802.1Q帧后要重新计算帧的校验序列FCS,同样,将802.1Q帧还原为普通帧时需要再次重算FCS。

3.5 高速以太网

随着电子技术的发展,以太网速度已经从传统以太网的10Mbit/s提升到非常高的速率。

1 100BASE-T 以太网

100BASE-T 是在双绞线上传送100Mbit/s基带信号的星形拓扑以太网,仍使用IEEE802.3的CSMA/CD协议,称为快速以太网(Fast Ethernet)。用户只要用100Mbit/s的适配器和100Mbit/s的集线器或交换机,就可以从10BASE-T以太网升级到100BASE-T,不必改变网络的拓扑结构,即不需要改变物理连接。

100Mbit/s以太网标准改动来原10Mbit/s以太网的某些规定。前面提到一个以太网参数a,即以太网单程端到段时延 τ 和帧的发送时间 T0 的比值必须保持很小的数值。帧的发送时间和发送速率程正比,当速率提高时,发送时间减少,以太网参数a会变大。100Mbit/s采用的应对方法是将网络电缆(最大)长度减小到原来的十分之一,这样以太网单程端到段时延 τ 也相应降低,使以太网参数a不受影响。100Mbit/s以太网标准规定了三种物理层的标准(表3-1,P107)。100Mbit/s以太网的物理层标准

2 吉比特以太网

1997年IEEE通过来吉比特以太网的标准802.3z,1998年成为正式标准。吉比特以太网的标准有一下特点:
(1)允许在1Gbit/s下以全双工和半双工两种方式工作。
(2)使用IEEE802.3协议规定的帧格式。
(3)在半双工方式下使用CSMA/CD协议,而全双工方式时不使用。
(4)与10BASE-T和100BASE-T技术向后兼容。

吉比特以太网的物理层可以使用现有的以太网,也可使用美国国家标准协会ANSI制定的光纤通道FC(Fiber Channel)。吉比特以太网的物理层有四种标准(表3-2,P107)吉比特以太网物理层标准

3 10吉比特以太网(10GbE)和更快的以太网

10GbE的帧格式与10Mbit/s,100Mbit/s和1Gbit/s以太网的帧格式完全相同,且保留来802.3标准规定的以太网最小帧长和最大帧长,使得用户将已有以太网升级时仍能和较低速率的以太网方便通信。

10GbE只工作在全双工方式,因此不存在冲突问题,也不使用CSMA/CD协议,使得10GbE的传输距离大大提高。10GbE规定了五种物理层标准(表3-3,P109)10GbE的物理层标准
在10GbE之后又制定来40GbE/100GbE的标准IEEE 802.3ba-2010 和 802.3bm-2015,其物理层标准如下(表3-4,P109)。40GbE/100GbE的物理层标准

4 使用以太网进行宽带接入

现在人们也在使用以太网进行宽带接入互联网。然而以太网的帧格式标准种,在地址字段部分并没有用户名,也没有让用户键入密码来鉴别用户身份的过程。网络运营商要利用以太网接入到互联网,就必须解决这个问题。一个方法是把数据链路层的两个成功的协议结合起来,即把PPP协议种的PPP帧再封装到以太网种传输。这就是1999年公布的PPPoE(PPP over Ethernet)。现在的光纤宽带接入FTTx都要使用PPPoE的方式进行接入。

总结:
本章主要讲了数据链路层的一些基本概念、点对点通信、广播、局域网及以太网的一些相关知识。

《计算机网络》第八版-谢希仁 一书的个人总结,仅供学习使用,转载注明出处,欢迎批评指正。

本篇给自己埋的坑:
1、循环冗余校验CRC
2、CSMA/CD协议
3、生成树协议STP

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值