数据链路层的基本概念
1、链路与数据链路的区别
链路是从一个节点到相邻节点的一段物理线路,中间没有任何其他的交换节点。
数据链路是除了一条物理线路之外,还必须有一些必要的通信协议来控制这些数据的传输。也就是说数据链路等于链路加上实现这些协议的硬件和软件。比如网络适配器(既有硬件,也有软件)。
2、数据链路层的协议数据单元--帧
点对点信道的数据链路层进行通信的步骤:
(1)节点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。
(2)节点A把封装好的帧发送给节点B的数据链路层。
(3)若节点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给上面的网络层;否则丢弃这个帧。
3、数据链路层的三个基本问题
(1)封装成帧
封装成帧是在一段数据的前后分别添加首部与尾部,这样就构成了一个帧。所有在因特网上传达的数据都是以分组(即IP数据报)为传送单位的。
(2)透明传输
当传送的帧是用文本文件组成的帧时(文本文件的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。透明传输是不管从键盘上输入什么字符都可以放在这样的帧中传输过去。
但是当数据部分是非ASCII的文本文件时(如计算机程序或图像),数据中就可能出现某个字节的二进制代码恰好和SOH或EOT一样,因此可能数据链路层会错误的找到帧的边界。
解决办法:采用字节填充:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B);在接收端的数据链路层把数据送往网络层之前删除这个插入的转义字符。
(3)差错检测
为保证数据传输的可靠性,在计算机网络传输数据时,必须采用差错检测措施。目前使用广泛的是循环冗余检验CRC技术。
主要是计算冗余码FCS,利用模二计算(不计进位),举例:
多项式P(x)=x3+x2+1;则除数为1101,待传送数据是101001.余数比除数少一位,
最终传输的数据就是101001001。
在接收端对收到的每一帧经过CRC检验后,若得出的余数为0,则判定这个帧没有差错,就接受,否则就丢弃。
4、PPP协议
(1)三个组成部分
将IP数据报封装到串行链路的方法、链路控制协议LCP(Link Control Protocol)用来建立、配置、测试数据链路连接、网络控制协议NCP(Network Control Protocol).
(2)帧格式
PPP帧的首部和尾部分别为四个字段和两个字段。
当协议字段为0x0021时,PPP帧的信息字段就是IP数据报;
若为0xC021,则信息字段为链路控制协议LCP的数据;
若为0x8021,则信息字段为网络层的控制数据。
5、适配器
计算机与外界局域网的连接是通过通信适配器(adapter),在主机箱内插入一块网络接口板,又称为网卡NIC。适配器上装有处理器和存储器(RAM和ROM).
适配器的重要功能是进行数据串行传输和并行传输的转换。
适配器接受和发送各种帧时不使用计算机的CPU,这时CPU可处理其他任务。当适配器收到有差错的帧时,就把帧丢弃不必通知计算机。当收到正确的帧时,就使用中断来通知计算机并交付协议栈中的网络层。当计算机要发送IP数据报时,就有协议栈把IP数据报向下交给适配器,组装成帧之后发送给局域网。