计算机网络Chap3-数据链路层
1. 数据链路层基本概念
1.1 数据链路层使用的信道类型

- 点到点信道:一对一的通信
- 广播信道:一对多的通信,必须使用专用的共享信道协议来协调这些主机的数据发送。
1.2 链路以及数据链路
链路:link,从一个节点到相邻节点的一段物理线路,中间没有任何其他的交换节点。
一条链路知识一条通路的一个组成部分。
但是,当需要在一条线路上传送数据的时候,除了必须的物理线路(链路)外,还必须有一些必要的通信协议来控制数据的传输。
数据链路:data link,若把实现上述协议的硬件和软件加到链路上,就构成了数据链路。
最常用的方法就是使用适配器(网卡)来实现协议的硬件和软件。
1.3 帧
帧:数据链路层的协议数据单

数据链路层在进行通信的时候主要步骤(不考虑物理层的细节,设想好像是水平方向):
- 节点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
- 节点A把封装好的帧发送给节点B的数据链路层
- 若节点B的数据链路层收到帧,则从帧中提取IP数据报交付给上面的网络层
2. 数据链路层基本问题
数据链路层协议有多种,但是又三个基本问题是共同的。
2.1 封装成帧

封装成帧 (framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。
首部和尾部的一个重要作用就是进行帧定界。
且每一种链路层协议都规定了所能传输的帧的数据部分长度上限—最大传送单元MTU。
【思考:为什么要加这个首部和尾部呢?】
设想,在发送端尚未发送完一个帧时突然出现故障,中断了发送,当恢复正常时重新从头开始发送这个帧。由于使用了帧定界符,接收端就会知道刚才前面的是不完整帧(只有首部开始符号SOH而没有传输结束符EOT)则必须丢弃。去接收下一个帧。
2.2 透明传输
透明:就是指一个实际存在的事物看起来却好像不存在一样
透明传输:在链路层透明传输数据就是表示无论传输什么样的数据,这些数据都能按照原来的样子无差错的通过数据链路层进行传输。也就是说对于数据来讲,数据链路层是透明的。
当传送的帧的数据部分是文本文件(从键盘输入的),数据部分肯定不会出现SOH或EOT这样的帧定界控制字符(规定使用不可打印字符),所以不管从键盘输入什么字符都可以放在帧中传输,这样的传输就是透明传输
但是如果当传送的数据是非ASCII码的文件时,若其中某个字节的二进制编码恰好和SOH或者EOT控制字符一样,数据链路层就会错误的找到帧的边界,把部分帧手下,将剩下的数据丢弃。显然这就不是透明传输。

解决办法:为了解决这种情况下的透明传输的问题,就必须设法使数据中可能出现的控制字符SOH或EOT在接收端不被解释为控制字符。想起编程中的转义字符。
字节(字符)填充:就是在发送端的数据链路层中出现SOH或者EOT的前面加上一个转义字符ESC,接收端的数据链路层在数据送往网络层之前删除这个转移字符。故用字节填充的办法解决透明传输的问题。

2.3 差错检测
比特差错 : 现实的通信链路都不会是理想的,比特在传输过程成可能会出现差错:1 -> 0 / 0 -> 1。
误码率: 在一段时间内,传输错误的比特占所传输的比特总数的比率。
那么为了保证数据传输的可靠性,在传输数据时,必须采用各种差错检测措施,目前在数据链路层广泛使用的差错检测措施为循环冗余检验CRC
使用CRC可以做到无差错接受,也就是凡是接受的帧(也就是不包括丢弃的帧)都能以非常接近于1的概率认为传输中没差错。
但是单纯的使用CRC无法做到无差错传输(发送什么就接收到什么),还必须加上确认和重传机制。
所以这一章的数据链路层协议都是不可靠传输的协议。
3. 两种情况下的数据链路层
3.1 使用点对点信道的数据链路层
对于点对点的链路,目前使用最广泛的数据链路层协议是点对点协议PPP(Point-to-Point Protocol)。
PPP协议帧的格式如下图:

3.2 使用广播信道的数据链路层
广播信道可以进行一对多的通信,且局域网使用的就是广播信道。
以太网采用的协议是CSMA/CD(Carrier Sense Multiple Access with Collision Detection)载波监听多点接入/碰撞检测。
3.2.1 局域网的数据链路层
局域网的特点:网络为一个单位所拥有,地理范围和站点数据有限。
3.2.2 共享信道
共享信道要着重考虑的问题是如何使众多用户能够合理而方便的共享通信媒体资源。方法如下:
静态划分信道:如频分复用、时分复用等等
动态媒体接入控制(多点接入):信道并非在用户通信时固定分配给用户
受控接入
随机接入(主要被以太网采用):所有的用户都可随机的发送消息,如果恰巧两个或多个用户在同一时刻发送消息,那么在共享媒体上就要产生碰撞,因此必须要又解决碰撞的网络协议。
3.3 CSMA/CD协议
多点接入:总线型网络。
协议的实质是载波监听、碰撞检测。
载波监听:边发送边监听。
碰撞检测:在发送中检测信道,就即使发现如果有其他站也在发送就立即中断本站的发送。
4. 以太局域网(以太网)
4.1 以太网的两个标准
- DIX Ethernet V2:世界上第一个局域网产品(以太网)的规约。
- IEEE 802.3:第一个 IEEE的以太网标准。
DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。
严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网 。
4.2 数据链路层的两个子层
为了使数据链路层能更好的适应多种局域网标准,IEEE802委员会将局域网的数据链路层拆成两个子层:

逻辑链路控制LLC(Logical Link Control)子层:无论哪种协议的局域网对LLC子层都是透明的,且由于目前使用的最多的局域网是DIX Ethernet V2(以太网),故802委员会指定的LLC层作用不大了,且很多厂商生产的适配器上都没有LLC协议了,故一般都不考虑本层了。- 媒体接入控制MAC(Medium Access Control)子层:与接入到传输媒体有关的内容都放在 MAC子层
4.3 以太网的MAC层
4.3.1 MAC层的硬件地址
MAC地址:在局域网中,硬件地址又称为物理地址或者MAC地址(因为这种地址会被用在MAC帧中)。MAC地址用于在网络中唯一标识一个网卡(也叫网络适配器)。
MAC地址一般是48位(6个字节)组成,前面24位(高位24位)为了标识厂家,称为组织唯一标识符,后24位(低位24位)厂家自己指定,称为扩展唯一标识符。通常采用十六进制数表示每个字节。
4.3.2 MAC帧的格式

5. 扩展以太网
很多情况下我们希望把以太网的覆盖范围扩展。
5.1 在物理层扩展以太网
- 使用光纤扩展
- 使用集线器扩展
5.2 在数据链路层扩展以太网
- 使用网桥(早期)
- 使用以太网交换机(现在)
6. 高速以太网
速率达到或超过100 Mbit/s的以太网称为高速以太网。