概述
数据链路层的协议数据单元--帧。
数据链路层作用:将网络层交下来的数据报(分组)封装成帧发送到链路上,同时也可以取出接收到的帧中的数据交给网络层。
数据链路层像个数字管道。
常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。数据链路层不必考虑物理层如何实现比特传输的细节。甚至还可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方。
信道分类
两种类型
点对点信道
点对点信道通信流程:
结点 A 的数据链路层把网络层交下来的 IP 数据报添加首部和尾部封装成帧。
结点 A 把封装好的帧发给结点 B 的数据链路层。
若结点 B 的数据链路层收到的帧无差错,则从收到的帧中提取出 IP 数据报上交给网络层;否则丢弃这个帧(重发工作由上层完成,此处只确保无错传输)。
一对一通信。
因为不会发生碰撞,因此也比较简单,使用 PPP 协议进行控制。
广播信道
一对多通信,一个节点发送的数据能够被广播信道上所有的节点接收到。
所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞)。
主要有两种控制方法进行协调,一个是使用信道复用技术,一是使用 CSMA/CD 协议。
以下是使用点对点信道的数据链路层分析
点对点信道三个基本问题
封装成帧
将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
首部与尾部的作用就是帧定界。
各种数据链路层协议对首部与尾部的格式都有明确的规定。
MTU:最大传送单元---即帧的数据部分的长度上限。
控制字符 SOH 放在帧的最前面,控制字符 EOT 放在帧的最后面。
透明传输
透明表示一个实际存在的事物看起来好像不存在一样。
帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。可以在数据部分出现首部尾部相同的内容前面插入转义字符,这种方法称为字符填充。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
用字节填充法解决透明传输的问题。
差错检测
目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。
这里所说的“差错”是“比特差错”,1 可能会变成 0 而 0 也可能变成 1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。 误码率与信噪比有很大的关系。 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。
Tips: 仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。“无比特差错”与“无传输差错”是不同的概念。在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输(还需加入确认和重传的机制以防止帧丢失、帧重复和帧失序)。
PPP 协议
用处:互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。
PPP协议的特点
简单、封装成帧、透明性、多种网络层协议,能够在同一条物理链路上同时支持多种网络层协议。
多种类型链路,能够在多种类型的链路上运行。
差错检测,能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
检测连接状态,能够及时自动检测出链路是否处于正常工作状态。
最大传送单元,必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性 。
网络层地址协商,必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
数据压缩协商,必须提供一种方法来协商使用数据压缩算法。
PPP协议的组成
一个将 IP 数据报封装到串行链路的方法(PPP帧格式)。
链路控制协议 LCP (Link Control Protocol)。
网络控制协议 NCP (Network Control Protocol)。
PPP 的帧格式
PPP协议面向字节的,所有 PPP 帧的长度都是整数字节。
如图所示,PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。标志字段 F = 0X7E(帧的定界符),地址字段A = 0xFF,控制字段通常 = 0x003,协议字段为2个字节:若为 0x0021,则信息字段就是 IP 数据报。 若为 0x8021,则信息字段是网络控制数据。 若为 0xC021,则信息字段是 PPP 链路控制数据。 若为 0xC023,则信息字段是鉴别数据。尾部的第一个字段(2个字节)是使用 CRC 的帧检验序列。
问题:那么具体在PPP协议中,透明传输中信息字段和标志字段的比特组合一样,又该如何处理呢?
这要分情况讨论,当PPP使用异步传输时,就要使用一种特殊的字节填充法(规定转义符定义为0x7E):将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列 (0x7D, 0x5E)。 若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列 (0x7D, 0x5D)。 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。
当PPP使用同步传输时(用在SONET/SDH链路),就要采用零比特填充法来实现透明传输:在发送端,只要发现有 5 个连续 1,则立即填入一个 0。 接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。
PPP 协议的工作状态
我们再返回到 PPP 协议的用处:用户使用拨号电话线接入互联网时, 用户计算机和 ISP 进行通信时所使用的数据链路层协议就是 PPP 协议。
来看看到底是怎么在用户计算机和 ISP 之间建立通信连接的:当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。 PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。 这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。
Tip: 由此可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。
以下是使用广播信道的数据链路层分析
广播信道可以进行一对多的通信,而局域网使用的就是广播信道,局域网技术在计算机网络中占有非常重要的地位,所以我们先来谈一谈局域网的数据链路层。
局域网的数据链路层
局域网
局域网的定义在这里就不在赘述了,我们来看看局域网的特点:网络为一个单位所拥有,且地理范围和站点数目均有限。
局域网的优点:具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。 提高了系统的可靠性、可用性和残存性。
局域网的分类:按照网络拓扑分为星形网、环形网和总线网。
注意:局域网的工作层次跨越了数据链路层和物理层,但是技术多包含在数据链路层,所以这里讨论的是数据链路层中的局域网技术。
为了使用户能够共享资源,就要考虑怎么划分信道:静态划分信道 :频分复用 时分复用 波分复用 码分复用 动态媒体接入控制(多点接入) :随机接入 受控接入 ,如多点线路探询 (polling),或轮询。
重点讨论随机接入:所有的用户可以随机的发送信息,但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞,为此必须有解决碰撞的网络协议,即下述的 CSMA/CD 协议。
CSMA/CD协议
CSMA/CD 表示载波监听多点接入 / 碰撞检测。
多点接入 :说明这是总线型网络,许多主机以多点的方式连接到总线上。
载波监听 :每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。
碰撞检测 :在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。
因此 CSMA/CD 要做的概括起来就是“先听后发,边听边发,冲突停止,延迟重发”。
Tips: 在使用 CSMA/CD 协议时,一个站不可能同时进行发送和接受(但必须边发送边监听信道),所以使用CSMA/CD的以太网进行的是双向交替通信(半双工通信) 。
当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 截断二进制指数退避算法 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。
网络适配器
为了进行后面的内容,我们先来谈论下适配器(adapter)。
网络接口板又称为通信适配器 (adapter) 或网络接口卡 NIC (Network Interface Card),或“网卡”。
适配器的重要功能: 进行串行/并行转换、对数据进行缓存、数据的封装与解封、链路管理、在计算机的操作系统安装设备驱动程序、 实现以太网协议。当适配器收到正确的帧时,它就使用中断来通知计算机,并交付给协议栈中的网络层。当计算机要发送 IP 数据报时,就由协议栈把 IP 数据报向下交给适配器,组成帧后发送到局域网中。
MAC 地址
固化在局域网中计算机适配器的 ROM 中的,所以又叫硬件地址或物理地址。
MAC 地址是**链路层地址,长度为 6 字节(48 位),用于唯一标识网络适配器**(网卡)。
一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。
适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址。 如果是发往本站的帧则收下,然后再进行其他的处理。 否则就将此帧丢弃,不再进行其他的处理。 “发往本站的帧”包括以下三种帧: 单播 (unicast) 帧(一对一) 广播 (broadcast) 帧(一对全体) 多播 (multicast) 帧(一对多)
以太网
以太网概述
以太网是一种星型拓扑结构局域网。
早期使用集线器进行连接,集线器是一种物理层设备, 作用于比特而不是帧,当一个比特到达接口时,集线器重新生成这个比特,并将其能量强度放大,从而扩大网络的传输距离,之后再将这个比特发送到其它所有接口。如果集线器同时收到两个不同接口的帧,那么就发生了碰撞。
目前以太网使用交换机替代了集线器,交换机是一种链路层设备,它不会发生碰撞,能根据 MAC 地址进行存储转发。
以太网帧格式:
类型 :标记上层使用的协议;
数据 :长度在 46-1500 之间,如果太小则需要填充;
FCS :帧检验序列,使用的是 CRC 检验方法;
交换机与以太网拓展
① 物理层拓展以太网
使用集线器。已经退出市场。
② 数据链路层拓展以太网
使用交换机。
为了提高以太网的覆盖范围,我们需要扩展以太网,而最常用的方法就是在数据链路层扩展。早期使用网桥,现在使用以太网交换机。1990 年问世的交换式集线器 (switching hub) 可明显地提高以太网的性能。 交换式集线器常称为以太网交换机 (switch) 或第二层交换机 (L2 switch),强调这种交换机工作在数据链路层。
以太网交换机的特点:本质上就是一个多接口的网桥。每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都使用全双工方式。以太网交换机具有并行性(能够同时连通多对接口,使多对主机能同时通信),所以相互通信的主机都是独占传输媒体,无碰撞地传输数据。以太网交换机的接口有存储器,能在输出端口繁忙时把到来的帧进行缓存。 以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。 以太网交换机使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
以太网交换机的优点:用户独享带宽,增加了总容量;从共享总线以太网转到交换式以太网时,所有接入设备的软件和硬件、适配器等都不需要做任何改动;有多种速率的接口,方便各种不同情况的用户。
以太网交换机的交换方式:大多对收到的帧采取存储转发的方式,少数采用直通的方式。
以太网交换机的自学习:查找交换表中与收到帧的源地址有无相匹配的项目。 如没有,就在交换表中增加一个项目(源地址、进入的接口和有效时间)。 如有,则把原有的项目进行更新(进入的接口或有效时间)。交换机具有自学习能力,学习的是
交换表的内容,交换表中存储着 MAC 地址到接口的映射。
正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。
下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。
以太网的转发帧:查找交换表中与收到帧的目的地址有无相匹配的项目。 如没有,则向所有其他接口(进入的接口除外)转发。 如有,则按交换表中给出的接口进行转发。 若交换表中给出的接口就是该帧进入交换机的接口,则应丢弃这个帧(因为这时不需要经过交换机进行转发)。
Tips: 早期,以太网采用无源的总线结构。 现在,采用以太网交换机的星形结构成为以太网的首选拓扑。 总线以太网使用 CSMA/CD 协议,以半双工方式工作。 以太网交换机不使用共享总线,没有碰撞问题,因此不使用 CSMA/CD 协议,而是以全双工方式工作。但仍然采用以太网的帧结构。
虚拟局域网
虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息。
例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。
使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。