计算机网络-数据链路层
上一篇博客中我们学习了计算机网络中的物理层,如果还没有看的可以先去学习了解一下哎,有助于我们这次学习的开始。传送门: 计算机网络-物理层
接下来正式开始讲解 - 数据链路层
基本概念
数据链路层是实现设备之间通信非常重要的一层;
其所使用的信道分为两种:
- 点对点信道
- 广播信道
链路 :就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他交换结点。一条链路只是一条通路的一个组成部分。
数据链路:是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。数据链路还可以分为物理链路和逻辑链路。
- 物理链路就是上述所说的链路。
- 逻辑链路就是上述所说的数据链路,是物理链路加上必要的通信协议。
现在最常用的方法就是使用适配器(网卡)来实现这些协议的硬件和软件。市面上一般的适配器都包括了数据链路层和物理层。
数据链路层以帧为单位传输和处理数据。
数据链路层的协议有很多种,有三个基本问题是共同的~
- 封装成帧
- 透明传输
- 差错控制
封装成帧
在数据的头部和尾部加上标记(加上帧头和帧尾),确定帧的范围。
当数据是有可打印的ASCII码组成的文本文件时,帧的定界可以用特殊的帧定界符(SOH
,EOT
)分别控制帧的开始和结束~
透明传输
是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。无论发送什么样比特组合的数据,这些数据都会没有差池的通过整个数据链路层。
通过上述的封装成帧的操作,就有人思考到一个问题,如果在封装的时候发现数据中某个节点部分恰好和SOH
\ EOT
一样,那么数据链路层不就会错误地找到帧的边界吗?别急当然有解决办法~
解决方法:字符填充/字节填充。
- 发送端的数据链路层在数据中出现控制字符
SOH
或EOT
的前面插入一个转义字符ESC
(十六制编码为1B
)。 - 接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
- 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
差错控制
在传输过程中可能会出现比特差错,1变成0,0变成1
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率。误码率与信噪比有很大的关系。为了保证数据传输的可靠性,必须采用差错检测措施。数据链路层广泛使用了 循环冗余检验CRC / 帧检查序列FCS 检错技术。
- 收发双方约定好一个生成多项式G(x).
- 发送方基于待发送的数据生成多项式计算出差错检测码(冗余码),将其添加到带传输数据的后面一起传输。
- 接收方通过生成多项式来计算收到的数据是否产生了误码。
点对点PPP协议
点对点协议PPP是目前使用最广泛的点对点数据链路层协议。
PPP协议应满足:
- 简单
- 封装成帧
- 透明性
- 多种网络层协议
- 多种类型链路
- 差错检测
不需要的功能:
- 纠错
- 流量控制
- 序号
- 多点线路
- 半双工或单工链路
PPP协议有三个组成部分:
- 对各种协议数据报的封装方法(封装成帧);
- 链路控制协议
LCP
:用于建立,配置以及测试数据链路的连接; - 网络控制协议
NCP
:其中每一个协议支持不同的网络层协议;
帧格式
PPP帧首部和尾部分别为4个字段和2个字段。PPP是面向字节的,所有的帧长度都是整数字节。
首部
标志字段 F = 0x7E
(符号0x,表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110
),标志字段表示一个帧的开始。
首部中的地址字段A规定为0xFF
(即11111111
)。
首部中的控制字段C规定为0x03
(即00000011
)。
尾部
尾部中的第一个字段(2个字节)是使用CRC的帧检验序列FCS。
透明性
当PPP用在异步传输时,就会使用一种特殊的字符填充法
-
把信息字段中出现的每一个
0x7E
字节转变为2字节序列(0x7D,0x5E
)。 -
若信息字段中出现一个
0x7D
的字节,则把转义字符0x7D
转变为2字节序列(0x7D,0x5D
)。 -
若信息字段中出现
ASCII
码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D
字节,同时将该字符的编码加以改变。
当PPP用在同步传输链路(SONET / SDH)时,协议规定采用硬件来完成零比特填充
-
在发送端先扫描整个信息字段(通常使用硬件实现,但也可以用软件实现,但是会慢一些)。
-
只要发现有5个连续的1,则立即填入一个0。
-
接收端在收到一个帧时,先找到标志字段F以确定帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把5个连续1后的一个0删除,以还原成原来的信息比特流。
PPP协议为什么不使用序号和确认机制
- 在数据链路层出现差错的概率不大
- 在因特网环境下,PPP的信息字段放入的数据时IP数据报,数据链路层的可靠传输并不能保证网络层也可靠传输。
- 帧检查序列
FCS
字段可以保证无差错接受。
传媒体接入控制
局域网的数据链路层
- 网络为一个单位所拥有;
- 地理范围和站点数有限;
- 具有广播功能,从一个站点可以广泛的访问全网,局域网上的主机可以共享连接局域网上的各种硬件和软件资源;
共享信道要着重考虑的一个问题就是如何协调多个发送和接受站点对一个共享传输媒体的占用,如果多个设备同时发送数据,则会彼此形成干扰,导致发送失败。
媒体接入控制分为静态划分信道和动态接入控制。具体如下: