数据链路层使用的信道主要有两种类型:
- 点对点信道(一对一);
- 广播信道(一对多)。
1 使用点对点信道的数据链路层
1.1 链路和数据链路
链路 ≠ 数据链路
- 链路(物理链路):从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
- 数据链路(逻辑链路):数据链路不仅仅需要一条物理线路(硬件),还需要控制数据传输的通信协议(软件)。
这些硬件和软件现在最常使用的就是网络适配器。
1.2 帧
帧是点对点信道的数据链路层的协议数据单元。
已知网络层的协议数据单元是IP数据包(数据包、分组、包)。点对点信道的数据链路层在进行通信时的主要步骤(结点A →结点B):
- 结点A的数据链路层把网络层加下来的数据包添加首部和尾部封装成帧;
- 结点A把封装好的帧发送给结点B的数据链路层;
- 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出数据报上交给上面的网络层;否则丢弃这个帧。
1.3 三个基本问题
1.3.1 封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。
首部和尾部的一个 重要作用就是进行帧定界。帧定界使用帧定界符:
- 首部:SOH(start of header)十六进制编码是01(00000001)
- 尾部:EOT(end of transmission)十六进制编码是04(00000100)
数据部分的长度越长,帧的传输效率越高,但是数据部分的长度上限是最大传送单元MTU(Maximum Transfer Unit)。
1.3.2 透明传输
只要数据部分不出现帧定界符,无论从键盘上输入什么字符都可以放在帧中传输过去,因此这样的传输就是透明传输。
如果数据部分出现了帧定界符,则使用转义字符“ESC”来进行字节填充。
数据部分的"SOH"变成了“ESC”“SOH”,“EOT"变成"ESC”“EOT”。
1.3.3 差错检测
循环冗余检验CRC:数据链路层使用的检错技术。
CRC原理:数据划分为组,每组k个比特。
设:要传输的一组数据为M(k bit)。
用二进制的模2运算计算冗余码。
- 被除数(k+n)bit:M + (n个0);
- 除数(n+1)bit:P(约定好);
除数是生成多项式,最广泛用的是:
CRC-16 [16\15\2\0];
CRC-CCITT [16\13\15\1];
CRC-32。 - 商:无意义;
- 余数(n)bit:n位
余数作为帧检验序列FCS(frame check sequence),发送的帧为M+FCS,长度为(k+n)bit。
“可靠传输”包含两方面的含义:“无比特差错”和“无传输差错”。CRC只能保证“无比特差错”,因为传输过程中可能会出现帧丢失、帧重复、帧失序的情况。
现在广泛使用的协议不要求数据链路层向上提供可靠传输的服务(帧标号、确认和重传机制),因为代价太高不划算,故交给上层处理,以提高通信效率。
2 点对点协议PPP
2.1 PPP协议的特点
2.1.1 PPP协议应满足的需求
- 简单:接收方每收到一个帧,就进行CRC检验。若正确就收下,若错误则丢弃;
- 封装成帧:规定特殊字符作为帧界定符,以确定帧的开始和结束;
- 透明性:使用转义字符进行字节填充,避免和帧界定符一样的字符被错误处理;
- 多种网络层协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议;
- 多种类型链路:PPP必须在多种类型的链路上运行;
- 差错检测:既是对接受到的帧进行检测,并及时丢弃有差错的帧;
- 检测连接状态:自动检测链路是否处于正常工作状态;
- 最大传送单元MTU:必须设置数据链路层可以负载的数据部分的最大长度,目的是为了各种实现之间的互操作性;
- 网络层地址协商:是通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址;
- 数据压缩协商:PPP必须提供一种方法来协商使用数据压缩算法。
2.1.2 PPP协议不需要的功能
- 纠错:数据链路层只检错 不纠错;
- 流量控制:端到端的流量控制由TCP 负责;
- 序号:PPP协议是不可靠 协议,无需使用帧的序号;
- 多点线路:只支持点对点;
- 半双工或单工链路:只支持全双工 链路。
2.1.3 PPP协议的组成
三个组成部分:
- 一个将IP数据报封装到串行链路的方法。既支持异步链路,也支持同步链路(面向比特);
- 一个用来建立、配置和测试数据链路连接的链路控制协议LCP;
- 一套网络控制协议NCP,其中每一个协议支持不同的网络型协议。
2.1.4 PPP协议的帧格式
字段的意义
首部
4个字段,占用5个字节:
- F(Flag):标志字段,1B,规定为0x7E,表示一个帧的开始或结束;
- A(Address):地址字段,1B,规定为0xFF,无意义;
- C(Control):控制字段,1B,规定为0x03,无意义;
- 协议字段:2B
0x0021:PPP帧的信息字段为IP数据报;
0xC021:为PPP链路控制协议LCP的数据;
0x8021:为网络层的控制数据。
信息字段
长度可变,不超过1500字节。
尾部
2个字段,3个字节
- FCS:CRC的校验序列,2B;
- F(Flag):标志字段,1B,规定为0x7E,表示一个帧的开始或结束;
字节填充
针对的是异步传输。
当PPP使用异步传输时,把转义符定义为0x7D,并使用字节填充。
零比特填充
针对的是同步传输(面向比特)
PPP协议在使用SONET/SDH链路时,使用的是同步传输。在发送端扫描整个信息字段,只要发现有5个连续1,就立即填入一个0。
3 使用广播信道的数据链路层
3.1 局域网的数据链路层
广播信道是可以进行一对多的通信,局域网使用的就是广播信道。
局域网不仅仅和数据链路层有关,实际上其工作的层次跨越了数据链路层和物理层,但关于数据链路层的内容跟更为丰富。
3.1.1 特点
最主要的特点:网络为一个单位所拥有,且地理范围和站点数目均有限。
主要优点:
- 具有广播功能,从一个站点可以很方便地访问全网,局域网上的主机可共享连接在局域网上的各种硬件和软件资源;
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变;
- 提高了系统的可靠性(reliability)、可用性(availability)和生存性(survivability)
3.1.2 分类
按照网络拓扑进行分类:
- 星型网:因为集线器的出现和双绞线大量用于局域网;
- 环形网:典型例子为令牌环形网;
- 总线网:可用协议1 - CSMA/CD,可用协议2 - 令牌传递总线网(已退出市场);
- 树形网:总线网的拓展,主要用于频分复用的宽带局域网。
3.1.3 传输媒体
局域网可用多种传输媒体:
- 双绞线:便宜、主流;
- 同轴电缆;
- 光纤:频带宽、抗电磁干扰能力强。
3.1.4 共享信道技术
有两种技术方法:
- 静态划分信道:如频分复用等,代价较高,不适合局域网使用;
- 动态媒体接入控制(多点接入)
特点:信道并不是在用户通信时固定分配给用户
分两类:
- 随机接入:所有用户可以随时地发送信息,但是可能发生冲突(碰撞)。例如以太网;
- 受控接入:用户发送信息必须服从一定的控制,例如多点线路探寻(轮询)
3.1.5 传统以太网的两个标准
- DIX Ethernet V2:世界上第一个局域网产品的规约;
- IEEE 802.3:第一个IEEE的以太网标准;
IEEE为使数据链路层能更好地适应多种局域网标准,将数据链路层拆成了两个子层,即逻辑链路控制(LLC, logical link contrul)子层和媒体接入控制(MAC, medium access control)子层。
现在TCP/IP系统经常使用的是DIX Ethernet V2,所以现在LLC的作用已经消失了,现在的适配器上仅装有MAC协议。
3.1.6 适配器的作用
适配器:连接计算机与外界局域网的通信。又称网络接口卡NIC(network interface card)或网卡。
计算机中包含CPU和存储器,以及适配器。
- CPU和存储器:保存IP地址信息。其作用是生成发送的数据和处理收到的数据;
- 适配器:适配器上装有处理器和存储器(RAM和ROM),保存硬件地址。其作用是将帧发送到局域网和从局域网接收帧。
注意:CPU和存储器与适配器之间的通信是通过计算机主板上I/O总线以并行传输方式进行的;适配器和局域网之间的通信是通过电缆和双绞线以串行