·设计数据链路层的主要目的是在有差错的物理线路的基础上,采取差错检测、差错控制与流量控制等方法,将有差错的物理线路改进成无差错的数据链路,向网络层提供高质量的数据传输服务。
·从参考模型的角度来看,物理层以上的各层都有改善数据传输质量的责任,数据链路层是最重要的一层。
数据链路层使用的信道主要有以下两种类型:
·点对点信道。这种信道使用一对一的点对点通信方式。
·广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
·链路 (link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
·一条链路只是一条通路的一个组成部分。
·或物理链路。
·数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
·现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
· 一般的适配器都包括了数据链路层和物理层这两层的功能。
·或逻辑链路。
·数据链路层协议数据单元:帧
封装成帧 透明传输 差错控制
·封装成帧 (framing):在一段数据的前后分别添加首部和尾部,构成一个帧。
·首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。
最大传送单元 MTU (Maximum Transfer Unit) :规定了所能传送的帧的数据部分长度上限。
·用控制字符作为帧定界符
·当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。
·控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。
·问题:如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”,导致错误。
·解决方法:字节填充 (byte stuffing) 或字符填充 (character stuffing)。
·发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC” (其十六进制编码是 1B)。
·接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
·如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
透明:指某一个实际存在的事物看起来却好像不存在一样。
在数据链路层透明传送数据”表示:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。
用字节填充法解决透明传输的问题:
·在传输过程中可能会产生比特差错:1 -> 0, 0 -> 1。
·在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
·误码率与信噪比有很大的关系。
·为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
·在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC (Cyclic Redundancy Check)的检错技术。
·在发送端,先把数据划分为组。假定每组 k 个比特。
·假设待传送的一组数据 M = 101001(现在 k = 6)。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。
1,用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。
2,得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q ,余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位。
3,将余数 R 作为冗余码拼接在数据 M 后面,一起发送出去。
这种为了进行检错而添加的冗余码常称为帧检验序列 FCS (Frame Check Sequence)。
·在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。
·循环冗余检验 CRC 和帧检验序列 FCS 并不等同。
·CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
·FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
广泛使用的生成多项式P(X)
CRC-16 = X16 +X15 + X2 + 1
CRC-CCITT = X16 +X12 + X5 + 1
CRC-32 = X32 +X26 + X23 + X22 + X16 +X12 + X11 +X10 + X8 +X7+ X5 +X4 + X2 + X + 1
注意:
·仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。
·即:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。
·即:“凡是接收端数据链路层接受的帧均无差错”。
注意:“无比特差错”与“无传输差错”是不同的
·可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。
·传输差错可分为两大类:
·比特差错;
·传输差错:帧丢失、帧重复或帧失序等。
·在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。
·要做到可靠传输,还必须再加上帧编号、确认和重传等机制。
·对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
·PPP 协议在 1994 年就已成为互联网的正式标准 [RFC 1661, STD51]。
1,简单 ——首要要求。
2,封装成帧 —— 必须规定特殊的字符作为帧定界符。
3,透明性 —— 必须保证数据传输的透明性。
4,多种网络层协议 —— 能够在同一条物理链路上同时支持多种网络层协议。
5,多种类型链路 —— 能够在多种类型的链路上运行。
6,差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
7,检测连接状态 —— 能够及时自动检测出链路是否处于正常工作状态。
8,最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性。
9,网络层地址协商 —— 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
10,数据压缩协商 —— 必须提供一种方法来协商使用数据压缩算法。
三个组成部分:
·一个将 IP 数据报封装到串行链路的方法。
·一个链路控制协议 LCP (Link Control Protocol)。
·一套网络控制协议 NCP (Network Control Protocol)。
·首部:4 个字段
标志字段 F: 0x7E 。连续两帧之间只需要用一个标志字段。
地址字段 A:只置为 0xFF。实际上不起作用。
控制字段 C:通常置为 0x03。
协议字段。
·尾部:2 个字段。
·当 PPP 用在异步传输时,使用字节填充法。
·当 PPP 用在同步传输链路时,采用零比特填充法。
PPP 链路初始化过程:
·用户拨号接入 ISP 后,就建立了一条从用户个人电脑到 ISP 的物理连接。
·用户个人电脑向 ISP 发送一系列的链路控制协议 LCP 分组(封装成多个 PPP 帧),以便建立LCP连接。
·之后进行网络层配置。网络控制协议 NCP 给新接入的用户个人电脑分配一个临时的 IP 地址。
·当用户通信完毕时,NCP 释放网络层连接,收回原来分配出去的IP地址。LCP 释放数据链路层连接。最后释放的是物理层的连接。
·局域网最主要的特点:
· 网络为一个单位所拥有;
·地理范围和站点数目均有限。
·局域网具有如下主要优点:
·具有广播功能,从一个站点可很方便地访问全网。
·便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
·提高了系统的可靠性、可用性和生存性。
媒体共享技术:
静态划分信道: 1.频分复用 2.时分复用 3.波分复用 4.码分复用
动态媒体接入控制(多点接入):
·随机接入:所有的用户可随机地发送信息。
·受控接入:用户必须服从一定的控制。如轮询(polling)。
·DIX Ethernet V2:世界上第一个局域网产品(以太网)的规约。
·IEEE 802.3:第一个 IEEE 的以太网标准。
这两种标准的硬件实现可以在同一个局域网上互操作。
这两个标准标准只有很小的差别,因此很多人也常把 802.3局域网简称为“以太网”。
·逻辑链路控制 LLC (Logical Link Control) 子层:与传输媒体无关。
·媒体接入控制 MAC (Medium Access Control) 子层:与传输媒体有关
重要功能:
·进行串行/并行转换。
·对数据进行缓存。
·在计算机的操作系统安装设备驱动程序。
·实现以太网协议。
本文仅为个人学习笔记,欢迎一起学习~