第二章 数据链路层
本章的重点内容是:
数据链路层的点对点信道和广播信道的特点,以及这两种信道使用的协议.(PPP)协议,以及CSMA/CD协议.
数据链路层的三个基本问题: 封装成帧,透明传输和差错检测
数据发送模型
从主机H1到主机H2通信,经过路由器R1,R2,R3.其中的H1和H2都是5层协议,路由器都是三层模型.
数据进入路由器后要从物理层上到网络层,在转发表中找到下一跳的地址后,在向下从物理层发送出去.
在我们研究数据链路层中,我们只研究数据链路层,也就是我们只关心协议栈水平方向的各数据链路层. 不必考虑物理层的信息,也就是使用模拟信号还是数字信号,频分复用,还是时分复用等等信息等等.
2.1.1数据链路层的信道类型
数据链路层属于计算机的网络的底层.数据链路层使用的信道主要有以下的两种:
点对点通信
广播信道 使用一对多的广播信道.使用专门的共享信息协议来协调主机的数据发送.
2.1.2链路与数据链路的概念区别
链路:指的是物理概念,是一个节点到下一个节点之间的物理线路(有线,或者无线)
数据链路: 除了物理线路外,必须有通行协议来控制这些数据的传输.把实现这些协议的硬件和软件加到链路上,构成了数据链路 . (别称逻辑链路)
最常见的方法是使用适配器(网卡) 来实现这些协议的硬件和软件
一般的适配器包括了数据链路层和物理层者这两种功能
2.1.3帧
数据链路把网络层交下来的数据构成帧,同样把收到的帧把其中的数据取出交给网络层.
点对点的通信协议主要的步骤:
节点A的数据链路层把网络层交下来的IP数据报添加到首部和(校验信息)尾部,封装成帧.
节点A把封装好的帧发送给B的链路层
若B的链路层收到的帧无差错,提取数据交给网络层
2.1.4数据链路层解决的三个基本问题
封装成帧
透明传输
差错控制
2.1.5封装成帧
就是一段数据的前后分别添加头部和尾部.这样就构成了一个帧.
用SACII码传输数据时,帧的定界使用特殊的字符. SOH和EOT
2.1.6透明字符
由于帧使用特殊的字符控制帧的定界,如果在字符中出现这种字符,那么会造成数据传输的问题.
使用转义字符,类似C语言中字符串中的问题. 在发送端的数据中出现转特殊控制字符是时,添加转义. 在接受端去除这种转义字符.
差2.1.7错检测
信息在传输的过程中会产生差错.我们使用误码率来衡量这个标准.在计算机网络中.使用一种循环冗余检验(CRC Cyclie Redundancy Cheek)的容错技术
就是在数据后后面添加上多余的信息保证前面的信息正确.
2.1.8 CRC的具体过程
n位的冗余码的计算过程如下:
用二进制的模2运算进行2的n次乘以M的运算,相当于在n的后面添加了n个0.得到(k+n)位的数,除以双方事先协商好了长度为(n+1)的除数P,这不是二进制除法.
注意 : 这里的模2运算,加法和减法没有进位值. 1111+1010=0101
在得到余数R被添加到数据中,发送出去,在此除以P,那么余数就为0.
模二运算模2运算
2.1.8 CRC结果处理
在数据链路层,反送帧检验序列(FCS)就是前面的余数,以及接受端CRC检验都是用硬件完成的,处理非常的迅速.并不会耽误数据的传输
这里只使用CRC技术,只能对做到对帧的无差错接受(就是凡是接受端数据链路层接受的帧均无差错).
这里注意,现在并没有对数据链路层向网络层提供可靠的传输服务. 前面说的是bit差错,就是在数据中发送错误.但是接受到的帧如果出现帧丢失,帧重复,帧失序则CRC无能为力了.
解决办法:
最简单的方法就是在数据上添加必要的冗余信息,例如帧编号,帧确认,帧重复.收到正确的帧要向发送端发送正确的通知,在一定的时间没有收到帧,发送帧丢失信息.进行重新传送.
交给上层的传输协议来检查,具体的数据是否正确
2.2 点对点的协议PPP
在通信质量比较差的年代,在数据链路层使用可靠传输协议曾经是一种比较好的办法(HDLC Height-Level Data Link Control0).但是现在普遍使用的点对点PPP(point-to-point)协议,在这里ISP实现了计费功能 验证功能
2.2.1 PPP协议特点
PPP协议就是计算机和ISP进行通信是使用的协议. PPP协议是IETF在1992年制定的. 在1994成为标准.
PPP协议满足的要求
简单,将最复杂放在TCP协议,网际协议IP提供的是不可靠的数据服务,数据链路层也不需要纠错,序号等冗余信息 简单的使用CRC算法
封装成帧 使用特殊的字符作为开始和结束字符
透明 前面数据透明相同
多种网络层协议 PPP必须同时能够在同一条物理链路上同时支持多种网络层协议(IP协议或者IPX)或者其他
多种类型链路 串行或者并行,同步异步,以及高速低速,光或者非光.
1999年发布在以太网上运行的PPP及就是PPP over Ethernet ,简称为PPoe,这就是PPP协议能够适应多种类型链路的典型例子.
差错检测:丢弃有差错的帧
连接状态检测: 自动检测链路是否处于正常工作状态
最大传送单元 PPP协议必须对每一种类型的点对点链路设置最大的传送单元MTU(maximum receive Unit).默认是1500字节. 这里是数据的长度不是帧的长度
网络层地址协商 : 使得通信的两个网络层能够通过协商能够知道或者配置彼此的网络层.
数据压缩:不是必须的标准
数据的可靠:数据的可靠是在运输层的TCP控制的.PPP协议不支持多点线路,一个主站轮流和链路上的多个从站交流 PPP指支持双全工
PPP协议帧的格式
F 0x7E表示帧的开始 首部地址AoXFF开始地址,控制字段0X03没有定义.
第四个字段: 使用的2个字节是协议字段 0X0021表示的IP数据段 0xC021表示的是PPP链路控制协议LCP的数据 ,0X8021表示的是网络层的控制数据.
尾部的FCS,前面的余数,最后7E结束.
字节填充
使用0X7D为转义定义
零bit填充
如果传输使用的bit流,如果出现5个1,则后面添加一个0实现,接受端接受带数据在删除0
PPP协议工作状态
用户拨号接入ISP时,路由器的调制解调器对拨号做出确认,并建立一条物理连接.
PC机发送一系列的LCP分组(分组成多个PPP协议) 这些分组信息及其相应信息对网络进行配置,NCP给接入的PC机分配一个临时IP地址,是PC机成为一个主机.
通信完毕,NCP释放网络层连接,收回分配的IP地址.最后释放物理层协议
路由器检测到调制解调器发出的载波信号后,建立的物理层连接