一、数据链路层基础知识
1、概念
相信我们已经知道物理层考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。它尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。就好比我们使用的是双绞线又或者是其他的物理设备,这些都不重要,物理层站的比较高,他定义了一些规则,双绞线这些物理设备按照这些规则实现就好了。
但是我们又该如何理解数据链路层的作用呢?链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
这里面出现了两个概念:
(1)链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分。
(2)数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
2、分类
数据链路层使用的信道主要有以下两种类型:
(1)点对点信道。这种信道使用一对一的点对点通信方式。
(2)广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发
3、解决三个基本问题
(1)封装成帧
封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
(2)透明传输
封装好了之后就开始传输,透明传输是遇到的第一个问题。
这时候怎么办呢?总得有解决办法吧,
解决办法:字符填充
字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
这就是解决办法,当然只是出现了一个错误,如果出现了下面的错误呢?
(3)差错检测
在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER 。为了保证数据传输的可靠性,必须采用各种差错检测措施。
解决办法,就是那个赫赫有名的循环冗余校验码。因为我在很多个地方都学习了他,不只是计算机网络。怎么去计算,我在这里就不说了,但是需要注意一点循环冗余检验 CRC只是实现了差错检验,并不纠正错误。
下面我们根据两种信道类型分开来讲讲。
二、点对点通信
现在全世界使用得最多的数据链路层协议是点对点协议 PPP。PPP 协议有三个组成部分
(1)一个将 IP 数据报封装到串行链路的方法。
(2)链路控制协议 LCP (Link Control Protocol)。
(3)网络控制协议 NCP (Network Control Protocol)。
由于 TCP/IP 体系经常使用的局域网是 DIX Ethernet V2 而不是 802.3 标准中的几种局域网,因此现在 802 委员会制定的逻辑链路控制子层 LLC(即 802.2 标准)的作用已经不大了。一般不考虑 LLC 子层
1、PPP协议的帧格式
(1)标志字段 F = 0x7E
(2)地址字段 A 只置为 0xFF。地址字段实际上并不起作用。因为点对点通信,地址是确定的。
(3)控制字段 C 通常置为 0x03。
(4)PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。
(5)当协议字段为 0x0021 时,PPP 帧的信息字段就是IP 数据报。若为 0xC021, 则信息字段是 PPP 链路控制数据。若为 0x8021,则表示这是网络控制数据。
2、透明传输问题
PPP帧出现了透明传输问题之后有两个解决办法:
(1)字符填充
(2)零比特填充
在发送端,只要发现有 5 个连续 1,则立即填入一个 0。接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除,
这是一个常见的面试题。
3、不提供使用序号和确认的可靠传输
PPP 协议之所以不使用序号和确认机制是出于以下的考虑:
(1)在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
(2)在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
(3)帧检验序列 FCS 字段可保证无差错接受。
PPP协议的主要内容就这么多。
三、广播信道
1、局域网
局域网是一种典型的广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。主要有以太网、令牌环网、FDDI 和 ATM 等局域网技术,目前以太网占领着有线局域网市场。下面说的局域网都是以太网。
以太网提供的服务是不可靠的交付,即尽最大努力的交付。当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
2、适配器的作用
网络接口板又称为通信适配器(adapter)或网络接口卡 NIC (Network Interface Card),或“网卡”。
3、载波监听多点接入/碰撞检测 CSMA/CD
(1)“多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
(2)“载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
(3)“碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
出现碰撞的原因有很多。比如传播时延对载波监听的影响
因此使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信。这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
最先发送数据帧的站,在发送数据帧后至多经过时间 2t(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。以太网的端到端往返时延 2t称为争用期,或碰撞窗口。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。因此出现了二进制指数类型退避算法,尽可能的避免碰撞。
4、集线器
以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器,注意的是集线器其实是工作在物理层,千万不要看到这里介绍到了,就误以为工作在数据链路层。
目前以太网使用交换机替代了集线器,交换机是一种链路层设备,它不会发生碰撞,能根据 MAC 地址进行存储转发。
5、以太网的 MAC 层
在局域网中,硬件地址又称为物理地址,或 MAC 地址。一个地址块可以生成224个不同的地址。这种 48 位地址称为 MAC-48,它的通用名称是EUI-48。
适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址.如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。
6、 扩展局域网
(1)物理层扩展局域网:用集线器扩展局域网
(2)数据链路层扩展局域网:
在数据链路层扩展局域网是使用网桥。网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口
网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。
集线器在转发帧时,不对传输媒体进行检测。网桥在转发帧之前必须执行 CSMA/CD 算法。若在发送过程中出现碰撞,就必须停止发送和进行退避。
7、虚拟局域网 VLAN
虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组。这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的工作站是属于哪一个 VLAN。虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。
下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。
虚拟局域网使用的以太网帧格式
速率达到或超过 100 Mb/s 的以太网称为高速以太网。以太网已成功地把速率提高到 1 ~ 10 Gb/s ,所覆盖的地理范围也扩展到了城域网和广域网,因此现在人们正在尝试使用以太网进行宽带接入。
OK,这就是数据链路层基本的面试知识点。