03 数据链路层

数量链路层的信道主要有两种:

  • 点对点信道(ADSL拨号、广域网)

  • 广播信道

局域网中,分组从一台主机传送到另一台主机,不经过路由器的转发。从整个互联网的范围来看,局域网仍属于数据链路层的范围。

  • 链路(link):从一个结点到相邻结点的物理路线(有线或无线),中间没有交换结点。

  • 数据链路(data link):物理路线加上控制数据的通信协议。

3.1 使用点对点信道的数据链路层

数据链路层的三个基本问题:

  • 封装成帧(framing)

  • 透明传输

  • 差错检测

封装成帧

把网络层传下来的IP数据报加上首部和尾部,构成一个帧。首部尾部的作用:

  • 帧定界

  • 包含控制信息

帧定界符:

  • SOH:十六进制01,二进制00000001

  • EOT:十六进制04,二进制00000100

透明传输

这里透明的含义就是数据”看不见“数据链路层有什么妨碍数据传输的东西,即数据链路层对这些数据是透明的。

为了让IP数据报中的SOH和EOT不被接收端解释为控制字符,我们再它们前面加上转义字符ESC(十六进制1B)

差错检测

  • 比特差错:传输过程中,比特位出现了差错,0变成1,1变成0。

  • 误码率(Bit Error Rate):错误传输的比特占总比特的比率。误码率和信噪比反相关。

利用循环冗余校验(CRC)可以实现无比特差错的传输(因为错误的都被丢弃了)。但这并不保证可靠传输。传输差错分两类:

  • 比特差错

  • 帧丢失、帧重复、帧失序

如果要让让数据链路层提供可靠传输,可以增加帧编号、确认和重传机制。

由于通信链路质量的提高,现在互联网采取了区别对待的方式:

  • 对于通信质量良好的有线传输链路,数据链路层不使用确认和重传机制,即数据链路层不提供可靠服务。

  • 对于通信质量较差的无线传输链路,数据链路层使用确认和重传机制,向上提供可靠服务。

3.2 点对点协议PPP

PPP协议的特点

PPP(Point-to-Point Protocol)是目前使用最广泛的数据链路层协议。PPP协议是用户计算机和ISP进行通信时所使用的的数据链路层协议。

PPP协议的特点:

  • 简单:接收方每收到一个帧,就进行CRC检验,正确就接收,错误就丢弃。其他什么也不做。

  • 支持多种网络层协议:如IP、IPX

  • 支持多种类型的链路:如PPPoE(PPP over Ethernet),把PPP帧再封装在以太网帧中。可以让多个连接在以太网上的用户共享一条到ISP的宽带链路。现在即使是只有一个用户利用ADSL上网,也是使用PPPoE协议。

PPP协议的组成

三部分:

  • 将IP数据报封装到串行链路的方法

  • 链路控制协议(LCP,Link Control Protocol):用来建立、配置和测试数据链路连接

  • 网络控制协议(NCP,Network Control Protocol):其中的每一个协议支持不同的网络层协议。

PPP协议的帧格式

首部四个字段

  • F:标志字段,规定为0x7E。这时PPP帧的定界符。连续帧之间只需要一个标志字段。如果有两个连续的0x7E,则表示一个空帧,应当丢弃。

  • A:地址字段:规定为0xFF,没有使用。

  • C:控制字段:规定为0x33,没有使用。

  • 协议字段:两个字节。0x0021表示信息部分是IP数据报。0xC021表示信息是LCP数据。0x8021表示信息是网络层控制数据。

尾部字段:

  • FCS:两个字节,是CRC的帧检验序列

  • F:标志字段

信息字段长度可变,不超过1500字节。

PPP协议的转义

当PPP使用异步传输时,有如下的字节填充规则:

  1. 信息字段中的每一个0x7E字节转变为两个字节序列(0x7D,0x5E)

  2. 信息字段中的0x7D转变为两个字节序列(0x7D,0x5D)

  3. 若信息字段中出现ascii码的控制字符(即数值小于0x20的字符),在改字符前加0x7D,并把改字符加0x20。如0x03变成(0x7D,0x23)

当PPP协议用在SONET/SDH链路时,使用同步传输,这时使用零比特填充的方法:只要发现5个连续的1,立即在后面填入一个0(保证不会出现0x7E)。接收端先找到标志F,再扫描后面的比特位,遇到连续五个一,就删除后面一个0。

PPP协议的工作状态

当用户拨号接入ISP后,就建立了一条物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。接着进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时IP地址。

用户通信结束时,NCP释放网络层连接,收回IP地址。接着,LCP释放数据链路层连接。最后释放物理层的连接。

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

局域网的数据链路层

局域网工作的层次跨越了数据链路层和物理层。由于局域网技术中关于数据链路层的内容更丰富,所以放到这一章。局域网可以使用多种传输媒体,目前双绞线是主流。速度要求高时,往往需要用光纤。

由于以太网占据局域网市场的绝对优势,所以现在以太网几乎成了局域网的同义词。

局域网的有点:

  • 具有广播功能,从一个站点可以很方便的访问全网。

  • 便于系统的扩展和演变

  • 提高了系统的可靠性、可用性和生存性

按网络拓扑进行分类:

  • 星型网

  • 环形网

  • 总线网

按速度分:

  • 传统以太网:10Mbit/s

  • 高速以太网:100Mbit/s

  • 吉比特以太网:1Gbit/s

共享信道的两种方法:

  • 静态划分信道:如前面所述的频分、时分、波分、码分复用等。

  • 动态媒体接入控制:信道并非在用户通信时固定分配给用户。又分为两种:

    • 随机接入:所有用户都可以随机的发送信息。但信息可能在信道上碰撞

    • 受控接入:用户发送信息收到控制。

以太网属于随机接入。

计算机与局域网的连接通过适配器(adapter)进行。适配器以前是网卡,现在直接嵌入主板。适配器的作用:

  • 实现局域网串行和IO总线并行信号之间的转换

  • 局域网和计算机内部速率不同,适配器还要有缓存的功能。

计算机的硬件地址就存在适配器的ROM中,而软件地址(IP)则存在存储器中。

以太网的特点

早期以太网用总线连接。总线具有天然的广播特点。为了能在总线上进行一对一的通信,要在每一台计算机的适配器中存放一个唯一的物理地址。

以太网采用的两种措施:

  • 采用较为灵活的无连接的工作方式。提供尽最大努力的交付,即不可靠交付。如果RCR检测有错,则直接丢弃。

  • 以太网的数据都是用曼切斯特编码(即周期中心向上跳为0,向下跳为1),这样保证了即是是一串1或0,电信号也能有很好的区分度,方便提取。

CSMA/CD协议

在总线上直接广播可能会超生碰撞,载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection)协议可以解决这个问题。

  • 载波监听:就是检测信道。每个站在发送前和发送中都必须不断的检测信道。

  • 多点接入:就是说明这是总线型网络。

  • 碰撞检测:若发生碰撞,电压信号会叠加。适配器检测到电压超过阈值,就会立即停止发送。等一段时间再发送。

电磁波在1km电缆的传播时延约为5μs。在局域网分析中,常把总线上单程端到端传播时延记为τ。

  • 以太网发送的不确定性

    每个站在自己发送数据后的一小段时间内,存在着遭遇碰撞的可能性。这一段时间和数据能否发送成功都是不确定的。

  • 争用期(contention period),又称碰撞窗口(collision window):为端到端的往返时间2τ。一个站发送完数据后,经过了争用期后还没有检测到碰撞,才能肯定这次发送没有碰撞。

可见,在使用CSMD/CD协议时,以太网只能进行半双工通信。一个站点不可能同时进行发送和接受(但必须边发送,边监听信道)

(CSMA/CD协议的具体实现细节就不再这里记录了)

使用集线器的星型拓扑

早期以太网使用同轴电缆,现多使用双绞线。使用双绞线的以太网和集线器配合使用,为星型结构。

1990年IEEE制定出星形以太网标准10BASE-T,10代码10Mbps速率,BASE表示信号是基带信号,T代表双绞线。

使用集线器的星型有如下特点:

  • 在逻辑上仍是一个总线网,使用的还是CSMA/CD协议

  • 一个集线器有多个接口,集线器更像一个多接口的转发器

  • 集线器工作在物理层,仅进行比特转发,不进行碰撞检测

以太网信道的利用率

发送一帧的平均时间 = 发生碰撞的时间 + 占用信道的时间

发生碰撞的时间 = n * 2τ,假设发生n次碰撞 占用信道的时间 = T + τ,T为发送时间。τ是最后一个比特从源到目的端的时间。

发送一帧的平均时间 = n * 2τ + τ + T

再定义a = 单程端到端时延τ / 帧的发送时间内T。a越小,T占比越大,信道利用率越高。因此要求

  1. 以太网连线不能太长(让τ变小)

  2. 以太网帧长度不能太短(让T变大)

在理想情况下,假设不会发生碰撞,则信道极限利用率为

S = T / T + τ = 1 / 1 + a

由上面这个式子也可以看出,a越小,信道利用率越高。

以太网的MAC层

MAC层的硬件地址

现在网络适配器用的都是6字节(48位)的mac地址。IEEE的注册管理机构负责分配6字节中的前三字节(高24位)。适配器生产厂商必须向IEEE购买这三个字节组成的号。这个号称为组织唯一标识符(OUI,Organizationally Unique Identifier),通常也称公司标识符

后三个字节由厂家自行指派。这种方式得到的48位地址称为EUI-48(Extended Unique Identifier)。

适配器有过滤功能。每当适配器从网络上收到一个MAC帧,就先用硬件检查MAC帧中的目的地址。如果目的地址是本站就手下,否则丢弃。

以太网适配器还可以混杂方式(promiscuous mode)工作。这种模式下适配器只要”听到“有帧在以太网上传输就能接受下来,而不管目的地址是什么。

MAC帧的格式

MAC帧格式有两个标准:

  • DIX Ethernet V2

  • IEEE 802.3

现在最流行的是V2标准。由于IEEE标准和V2标准差别的地方很少被用到,大家也常常把V2标准的MAC帧就称为IEEE 802.3标准

V2标准的帧由5个字段组成,分别是:

  • 目的地址

  • 源地址

  • 类型

  • 数据(IP数据报),长度为46到1500字节

  • 帧检验序列FCS

MAC帧的最小长度规定是64字节,除数据外的其他字段空18字节。所以当数据小于46字节时,会填充满46字节。

另外在实际传输时,MAC帧向下传到物理层时,还要加上硬件生成的8个字节,作为前同步码帧开始界定符

3.4 扩展的以太网

两层扩展

以太网可以在物理层和数据链路层两层进行扩展。在物理层扩展以太网使用集线器

在数据链路层扩展以太网,最初使用网桥(bridge),后使用交换式集线器(switching hub),简称交换机(switch)

  • 网桥对MAC帧有转发和过滤功能。

  • 交换机本质上是一个多接口的网桥。且有缓存的功能。其内部的地址表通过自学建立起来。连接的主机都是独占传输媒体,无碰撞地传输数据。

对于传统10Mbps的以太网,若10个用户连接。则每个用户平均带宽为1Mbps。若用交换机连接,则每个用户的带宽还是10Mbps。10个接口的交换机的总容量变成了10Mbps。

交换机的性能远远超过了集线器,且价格不贵,很快使工作在物理层的集线器退出了市场。这种情况下,交换机的星型结构成为了以太网的首选拓扑结构,而使得传统的总线型以太网也退出市场。

总线以太网使用CSMA/CD协议,以半双工方式工作。交换机不使用共享总线,没有碰撞问题,不使用CSMA/CD协议,以全双工方式工作。但是,原先CSMA/CD协议帧的结构还是继续使用。

虚拟局域网

虚拟局域网(Virtual LAN, VLAN)并不是一种新型的局域网,只是局域网给用户提供的一种服务。

虚拟局域网协议允许在以太网的帧格式中插入一个4字节的标识符,称为VLAN标记(tag),用来指明发送该帧的计算机属于哪一个虚拟局域网。

3.6 高速以太网

100BASE-T以太网

100BASE-T是在双绞线上传送100Mbps基带信号的星形拓扑以太网,仍使用IEEE802.3的CSMA/CD协议。

吉比特以太网

标准是802.3z,其特点:

  • 有半双工和全双工两种工作方式

  • 使用IEEE802.3协议规定的帧格式

  • 半双工方式下用CSMA/CD协议,全双工方式下不用CSMA/CD协议

10吉比特以太网

  • 帧格式与10Mbps、100Mbps和1Gbps完全相同

  • 只在全双工方式工作,不存在争用问题,当然也不使用CSMA/CD协议

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

以太网帧格式中没有用户信息。要用以太网接入互联网,就必须解决这个问题。

解决方法是把数据链路层两个成功的协议结合起来,把PPP帧封装到以太网帧中来传输。1999年公布PPPoE。现在的FTTx都是用PPPoE进行接入的。

使用这种以太网接入宽带时,用户家中的计算机到户外第一台交换机之间的带宽是用户独占的。