1 数据链路层基本介绍
数据链路层属于计算机网络的底层。数据链路层使用的信道主要有以下两个
点对点信道
广播信道:这种一对多的通信方式,是比较复杂的。
点对点通信
我们假设主机H1向主机H2通信,其中需要经过多个路由器R1,R2和R3等。其整体流程图1所示。
如果只考虑链路层的数据传输那么上图可以被等效为:其中每个链路成传输时可能会采用不同的协议。
我们通常将数据链路层的协议数据单元称为--帧,将IP层的协议数据单元称为--包,或者分组。如下图3所示考虑点对点通信并且每个节点我们暂时考虑只有网络层,数据链路层和物理层。
在理想情况下,结点A将网络层的包装入链路层,增加头和尾部(这个后面会讲解)封装为帧。帧经过物理层传输然后到达结点B取出帧,最后解析出包。
假如由于网络波动结点B收到的帧并不准确,那应该怎么办呢?这就需要考虑到链路层协议了。
2 数据链路层协议
数据链路层协议有好多种,但都是要解决三方面
将网络层传过来的包封装成帧。
透明传输
差错检测
2.1 封装成帧
链路层将网络层传输过来的包,增加首部和尾部,这样就变量帧。为何要封装成帧的(这部分要涉及到网络寻址问题稍后会一起串起来)。
首部尾部可以起到帧定界问题(帧的长度)
每一种链路层协议规定了传输帧的数据部分的最大长度,最大传输单元MTU;
可以协助差错检测,如果用户B收到了一个帧的首部信息没有收到尾部信息,就会将次帧丢弃。
2.2 透明传输
为了理解透明传输的机制。我们举一个简单例子,当传送的帧是用文本文件组成的帧时 (文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像 SOH (首部)或 EOT (尾部)这样的定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
简单来说就是在传输过程中,传输的内容中不能包含帧的首部与尾部,如果包含需要将其转义。
如下图所示,传输内容中包含首部或者尾部可能会出现的问题:
解决方法增加转义信息。
2.3 差错检测
现实的通信链路都不会是理想的,也就是说可能会出现网络波动等现象。可能会使得0->1或者1->0。如何用一个标准来记录错误的次数呢?就像距离我们可以用米来衡量。误码率就是用来衡量传输差错这个问题的。
定义:误码率:传输错误的比特与总传输比特数的比率(Bit Error Rate, BER);
那么用户机如何检查接收到的数据是否正确呢?那么就需要使用到循环冗余校验CRC技术。这里我们不在讲解。需要了解的时候可以在网上百度,只用知道可以采用该技术进行校验即可。
那么到现在,数据链路层接收到的数据都是正确的,不正确的数据基本就被丢弃了。但现在我们并没有要求进行数据链路层向网络层提供"可靠传输"的服务。
所谓的“可靠传输”就是发送端发送什么,接收端就接收什么。
与可靠传输相对于的就是传输差错,传输差错可以分为两大类:一类就是前面所说的比特出错。另一类更为复杂,收到帧没有出现比特差错,却出现了帧丢失、帧重复和帧失序的情况。
例如我们发送了三个帧:[#1]-[#2]-[#3]
帧丢失:收到[#1]-[#3]
帧重复:收到[#1]-[#2]-[#3]-[#3]
帧失序:收到[#1]-[#3]-[#2]
那么链路层就需要在循环校验的基础上,增加帧编号,确认和重传机制。
2.3 PPP帧协议(基于点对点通信)
2.3.1PPP协议的帧格式
PPP 首部的第四个字段是 2 字节的协议字段。当协议字段为 0x0021 时,PPP 的信息字段就是 IP 数据报。若为 0xC021,则信息字段是 PPP 链路控制协议 LCP 的数据,而0x8021 表示这是网络层的控制数据。
PPP 如何实现透明传输呢?
当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。
当PPP使用异步传输时,它把转义符定义为0x7D(01111101并使用字节填充
RFC1662规定了如下所述的填充方法:
(1)把信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D, 0x5E)。
(2)若信息字段中出现一个0x7D的字节(即出现了和转字符一样的比特组合),则把0x7D转变成为2字节序列(0x7D, 0x5D)。
3 以太网的MAC层
MAC层硬件地址,
在局域网中,硬件地址又称为物理地址或 MAC 地址(因为这种地址用在 MAC 帧中),硬件地址唯一标识一台电脑主机(或者是笔记本),就像在中国每个人合法公民都有一个身份证。通常表示为12个16进制数
如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由 IEEE (电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性。
MAC帧的格式
主要有:目的地址,原地址,类型,数据和FCS组成;
类型:占用两个字节,用来标识(网络层)上一层使用什么协议。
数据:长度在46-1500字节之间
FCS::用于做循环校验。
以太网交换机
那么以太网交换机有哪些作用呢?
以太网交换机的接口有存储器,能在输出端口繁忙时把到来的帧进行缓存。
交换机用于帮助寻址(MAC地址),主要是通过内部的帧交换表,通过自学习算法建立起来的;(自学习能力)。
简单介绍一下自学习功能。
假定在图 3-25 中的以太网交机有 4 个接,各连接一台计算机,其 MAC 地址分别是 A,B,C 和D。在一开始,以太网交换机里面的交换表是空的(图9)。
A先向B发送一帧,从接口1进入到交换机。交换机收到帧后,先查找交换表,没有查找到应该从哪个接口转发这个帧。那么交换机吧这个帧的源地址A和接口1写入交换表中,然后向其他接口广播这个帧,C和D发现目的地址与自己MAC地址不对应那么就会丢弃这个帧。只有B发现是自己的目的地址,才能正确接收到这个帧,这也称为过滤。
然后通过循环上述方式建立完善的交换表。