数据链路层基本概念
路由器是网络层设备
数据链路层:数据管道,传输的是数据包加上发送地址,接收地址,校验的数据帧
数据链路层的信道类型:
- 点到点信道:使用一对一的点到点通信方式(两个设备之间直接使用网线相连)
- 广播信道:使用一对多的广播信道方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送
链路:一条点到点的物理线路段,中间没有其他交换节点。一条链路只是一条通路的一个组成部分。
数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
- 现在最常用的方法是使用适配器(网卡)来实现这些协议的硬件和软件。
- 一般的适配器都包括了数据链路层和物理层这两层的功能。
数据帧
数据帧=数据包+帧头+帧尾+物理层地址+校验值
数据链路层解决的问题
封装成帧
透明传输
- 字节填充解决透明传输
发送端的数据链路层在数据中出现控制字符SOH
或EOT
的前面插入一个转义字符ESC
(0x1B
)
接收端的数据链路在将数据发送给上一层的网络层的时候会删除前面的转义字符
如果转义字符也出现在数据当中,那么应该在转义字符前插入一个转义字符。当接收端收到两个连续的转义字符的时候就删除其中前面那个
因此只有如果接收数据中含有一个ESC
那么一定是数据中开始字符或者结束字符。
差错控制
误码率(BER):传输错误的比特占所传输比特总数的比率。误码率和信噪比有很大的关系。
如果传送过程中出现错误,路由器发现错误后会直接丢掉这个帧。可靠传输由传输层实现。
- 循环冗余检验(CRC)
运算过程为加上x个0以后,用x+1位数作为除数(随便选一个)。每次进行异或操作。要确保每次会至少减少一位,意思是如果某次的余数的最高位位0,则商为0,如果最高位为1,则商为1.
帧检验序列FCS为运算的余数,可以通过多种方法得到,不一定是CRC
最后传输的数据是数据加上FCS,如果余数不为0,则丢弃
特点:
- 这种检测方法不能确定究竟是哪一个或哪几个比特出现了差错
- 如果除数选择的足够好(位数足够长),那么检错能力就很强
使用循环冗余检验(CRC)差错检测技术只能做到无差错接受。
无差错接收:凡是接收的帧我们几乎都能认为是没有差错的。
要做到可靠传输(发送什么接收什么)就必须加上确认和重传机制
CRC是一种无比特差错,而不是无传输差错的检测机制。虽然数据链路层要求做成无传输差错的,但是目前没有做到。
两种情况下的数据链路层
点对点通信
使用PPP协议,用于点到点通信。全世界用的最多的数据链路层协议。
PPP协议特点:
- 简单
- 封装成帧
- 透明传输
- 差错检验
- 多种网络层协议:可以在PPP协议种封装TCP/IP协议,可以封装IPX,SPx协议
- 多种数据链路
- 检测连接状态
- 最大传送单元
- 网络层地址协商
- 数据压缩协商
缺点: - 不能纠错
- 不能流量控制
- 不能得到序号
- 不支持多点线路
- 不支持半双工或单工链路
PPP协议的组成
- 数据链路层协议可以用于异步串行或者同步串行介质
- 使用LCP(链路控制协议)建立并维护数据链路连接
ADSL拨号上网账号密码正确、有网费数据链路层才会通。即LCP有身份验证和计费功能 - 网络控制协议(NCP)允许点到点连接上使用多种网络层协议
PPP协议帧格式
A段是地址,因为是点对点传输,所以是固定的FF
,没有起什么作用
C段是控制字段,但是没有使用,一般是03
协议中的两个字节表示数据包中是什么内容
标志字段F=0x7E
PPP是面向字节的,所有PPP帧的长度都是整数字节
-
字节填充实现透明传输
将信息字段中出现的每个0x7E(01111111)
字节转换成0x7D 0x5E(0111111001011111)
如果信息字段中出现0x7D(01111110)
的字节,则将其转换为2字节序列(0x7D,0x5D(0111111001011110)
)
如果信息字段中出现ASCLL码的控制字符(数值小于0x20
)则在前面加入一个0x7D
最后接收的时候再转换为原来的信息 -
零比特填充方法实现透明传输
如果信息字段发送的不是字节,而是二进制流,则在发送端,只要发现5个连续的1就在其中填入一个0。在接收的时候每接收5个1就删除一个0。 -
不使用序号和确认机制
在数据链路层出现差错概率不大时,使用比较简单的PPP协议比较合理
在因特网环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的
帧检验序列FCS字段可保证无差错接受
PPP协议的工作状态(拨号上网的过程):当用户拨号拨入ISP时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。PC机向路由器发送一系列的LCP分组(封装成多个PPP帧)。这些分组及其响应选择一些PPP参数,进行网络层配置,NCP给新接入的PC机分配一个临时的IP地址,时PC机成为因特网上的一个主机。
通信完毕时,NCP释放网络层链接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接,最后释放物理层链接。