计算机网络——数据链路层

本文是在读谢希仁所著的《计算机网络》第7版的第三章后所做的总结与摘要。

数据链路层需要解决三个基本问题:
1)封装成帧。
2)透明传输:在 “数据链路层透明传送数据” 表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。具体在PPP协议中,还需要通过字节填充/零比特填充的方法来保证帧的数据部分中的控制字符不会被解释为帧首/尾部中控制字符
3)差错检测:采用循环冗余检验CRC,具体见书P74。不论是点对点网络还是以太网,都需要差错检测。

点对点协议PPP

在通信线路质量较差的年代,在数据链路层使用可靠传输协议曾经是一种好办法,因此,能实现可靠传输的高级数据链路控制HDLC (High-level Data Link Control) 就成为当时比较流行的数据链路层协议。但现在HDLC已经很少用了。对于点对点的链路,简单得多的PPP (Point-to-Point Protocol) 则是目前使用得最广泛的数据链路层协议。
互联网用户通常需要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机与ISP进行通信时所使用的数据链路层协议。

关于PPP协议,这里不多阐述,具体见书P76。需要注意的是,1999年公布了能够在以太网上运行的PPP,即PPP over Ethernet,简称PPPoE [RFC 2516]。

以太网协议

适配器

计算机与外界局域网的连接是通过通信适配器 (adapter) 进行的。 适配器本来是在主机箱内插入的一块网络接口板,或者是在笔记本电脑中插入一块PCMCIA卡——个人计算机存储器卡接口适配器。这种接口板又称为网络接口卡NIC (Network Interface Card) 或者简称 “网卡”。 不过现在计算机主板上都已经嵌入了这种适配器,不再使用单独的网卡了,因此为了更加准确书中采用了适配器这一术语。
适配器上面装有处理器和存储器 (包括RAM和ROM)。适配器与局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此,适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。 由于网络上的数据率与计算机总线上的数据率并不相同,因此在适配器中必须装有对数据进行缓存的存储芯片。 在主板上插入适配器时,还必须把管理该适配器的设备驱动程序安装在计算机的操作系统中。这个驱动程序以后就会告诉适配器,应当从存储器的什么位置上把多长的数据块发送到局域网,或者应当在存储器的什么位置上把局域网的数据块存储下来。适配器要能够沟实现以太网协议。
适配器在接收和发送各种帧时,不使用计算机的CPU。这使计算机中的CPU可以处理其它人物。当适配器收到有差错的帧时,就把这个帧直接丢弃而不必通知计算机。当适配器收到正确的帧时,它就使用中断来通知该计算机,并交付给协议栈中的网络层。当计算机要发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网。
另外,要特别注意,计算机的硬件地址就在适配器的ROM中,而计算机的软件地址——IP地址就在计算机的存储器中。

CSMA/CD协议

CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 协议,意思是载波监听多点接入/碰撞检测协议,是用来检测与应对传统以太网中的碰撞问题的。
具体见书P86,在这里不多阐述。

使用集线器的星形拓扑

随着技术发展,传统以太网最初是使用粗同轴电缆,发展到使用更便宜和更灵活的双绞线。这种以太网采用星形拓扑,在星形的中心增加了一个可靠性非常高的设备,叫做集线器 (hub),双绞线以太网总是和集线器配合使用的。
集线器的一些特点如下:

  • 从表面上看,使用集线器的局域网在物理上是一个星形网,但由于集线器使用电子器件来模拟实际电缆线的工作,因此整个系统仍像一个传统以太网那样运行。也就是说,使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,各站中的适配器使用的还是CSMA/CD协议。网络中各站必须争夺对传输媒体的控制,并且在同一时刻之多只允许一个站发送数据。
  • 一个集线器有许多个硬件端口。
  • 集线器工作在物理层,它的每个物理端口仅仅简单地转发比特,不进行碰撞检测。
  • 集线器采用了专门的芯片,进行自适应串音回波抵消,每个比特在转发之前还要进行再生整形并重新定时。

集线器本身必须非常可靠。现在的堆叠式 (stackable) 集线器有4~8个集线器堆叠起来使用。集线器一般都有少量的容错能力和网络管理能力。 具体可以见书P91提供的例子。

以太网的MAC层
  • MAC层的硬件地址:MAC层的硬件地址叫做MAC地址,也叫做硬件地址 (hardware address) 或物理地址。适配器有过滤功能,当它收到以太网上的MAC帧时会先用硬件检查MAC帧中的目的地址。如果是发往本站的帧就手下,然后再进行其它的处理。否则就将此帧丢弃,不再进行其它的处理。
  • MAC帧的格式:具体见书P95。
    关于更多内容,详细见书P93,这里不多阐述。
扩展的以太网

对以太网的扩展可以在物理层或是数据链路层进行,这种扩展的以太网在网络层看来仍然是一个网络。在物理层的扩展是通过多个集线器组成多级结构实现的,但这会带来一些去缺点 (P98),在数据链路层的扩展是通过以太网交换机实现的。
扩展以太网更常用的方法是在数据链路层进行,最初人们使用的是网桥 (bridge)。网桥对收到的帧根据其MAC帧的目的地址进行转发和过滤。当网桥收到一个帧时,并不是向所有接口转发此帧,而是根据此帧的目的MAC地址,查找网桥中的地址表然后确定该帧转发在哪一个接口,或者把它丢弃,即过滤。
1990年问世的交换式集线器 (switching hub)很快就淘汰了网桥。交换式集线器常称为以太网交换机 (switch) 或第二层交换机 (L2 switch),强调这种交换机工作在数据链路层。
以太网交换机实质上就是一个多接口的网桥,通常都有十几个或或更多的接口,和工作在物理层的转发器,集线器有很大的区别。以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。以太网交互机还具有并行性,即能同时连同多对接口,使多对主机能够同时通信 (而网桥只能一次分析和转发一个帧)相互通信的主机都是独占传输媒体,无碰撞地传输数据。
以太网交换机的接口还有存储器,能在输出端口繁忙的时候把到来的帧进行缓存。
以太网交换机是一种即插即用设备,其内部的帧交换表 (又称为地址表) 是通过自学习算法自动地逐渐建立起来的。 以太网交换机由于使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥块很对。
从共享总线以太网到交换式以太网,所有的接入设备的软件和硬件,适配器等都不需要作任何改动。
虽然许多以太网交换机对收到的帧采用存储转发方式进行转发,但也有一些交换机采用直通 (cun-through) 的交换方式。直通交换不必把整个数据帧先缓存后进行处理,而是对接收数据帧的同时就立即按数据帧的目的MAC地址决定该帧的转发接口。直通交换的一个缺点就是它不检查差错就直接将帧转发出去,因此可能会转发出无效帧。

以太网的自学习算法

A ______ s1-eth0 — s1-eth1 _________B
C ______ s1-eth2 — s1-eth3 _________D
考虑上面的拓扑,s1为以太网交换机,s1-eth#为以太网接口。
假设s1的地址表是空的,A向B发送了一个帧。

1. s1从s1-eth0接收到了A发送的帧,将A的MAC地址存在地址表中,安装如下的表项:
MAC_address(A) : s1-eth0
2. s1读取到帧的目的地址为B的MAC地址,查找地址表,发现没有匹配项,于是向除了s1-eth1外的所有接口广播该帧。
3. B收到A发送的帧后发现目的地址是自己的MAC地址,于是将它收下,并发送给A一个帧 (如果需要的话)
4. s1从s1-eth1接收到了B发送的帧,将B的MAC地址存在地址表中,安装表项,然后检查地址表匹配到A的MAC地址,因此将帧通过s1-eth0转发出去。
5. 最终s1将能够学习到所有主机的MAC地址对应的转发接口。

以太网的地址表中的每个表项都设定了一个有效时间。过期的表项会被自动删除。用这样的方法保证地址表中的数据都符合当前网络的实际情况。

有时为了增加网络的可靠性,在使用以太网交换机组网时,往往会增加一些冗余链路。 在这种情况下,自学习的过程可能会导致以太网帧在网络的某个环路中无限制地兜圈子 (事实上,如果以太网机之间组成了环形拓扑也会发生),引发广播风暴。 P101提供了一个例子。
为了解决这种问题,IEEE的802.1D标准制定了一个生成树协议STP (Spanning Tree Protocol)。其要点时不改变网络的拓扑,但在逻辑上切断某些链路,使得从一台主机到其它所有主机的路径都是无环的树状结构,从而消除了这种现象。

从总线以太网到星形以太网

总线以太网使用CSMA/SD协议,以半双工方式工作。但以太网交换机不使用共享总线,没有碰撞问题,因此不使用CSMA/SD协议,而是以全双工方式工作。

虚拟局域网

利用以太网交换机可以很方便地实现虚拟局域网VLAN (Virtual LAN)。在IEEE 802.1Q标准中,对虚拟局域网VLAN是这样定义的:
虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个VLAN。
虚拟局域网其实是局域网给用户提供的一种服务,而不是一种新型局域网。

同一个VLAN的计算机可以处在不通的局域网中,成员间发送数据时只会被同个VLAN内的计算机接受,该VLAN外的计算机不会收到数据。具体可见P102,书里提供了一个例子。

虚拟局域网协议允许在以太网的帧格式中插入一个4字节的标识符,称为VLAN标记 (tag),用来指明发送该帧的计算机属于哪一个虚拟局域网。VLAN标记插于MAC帧首部的源地址与类型字段之间,前两个字节设置为0x8100,指明该帧是VLAN帧,后两个字节中的前三位是用户优先级,接着是一位规范格式指示符 (Canonical Format Indicator),最后12位是该VLAN的ID,VLAN标识符VID,它唯一标志了这个以太网帧属于哪一个VLAN。
VLAN帧的格式可见P103。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值