PPP帧和以太网帧

数据链路层的三个基本问题

运行在链路层的协议有多种,但是三个基本问题是共同,这三个基本问题是 封装成帧透明传输差错检测

封装成帧

封装成帧的概念就是在数据链路层的传输协议中加入帧首部和帧尾部,方便链路层区分帧界限。为什么一定要封装成帧,这是因为一旦帧在传输过程中出现差错,链路层就可以通过帧首部和尾部进行判断,丢弃出错的帧。

透明传输

由于帧界定符是一些特殊的ascii码组合成的,在传输的数据中可能出现与界定符一样的数据,透明传输的意思就是要避免出现这样的数据,对于数据中的界定符采取转义的方式重合编码,接收方再根据同样的规则进行解码,从而完成正确的数据传输。

差错检测

差错检测就是检测一帧数据中是否在传输过程中出现了差错,如果出现差错就丢弃(数据链路层不做可靠性保证,由上层协议完成错误重发)。差错检测是使用的循环冗余校验CRC技术。

PPP协议

点对点协议(Point-to-Point Protocal)是目前应用最广泛的链路层协议。PPP协议的特点:

  1. 简单 PPP协议提供不可靠的数据服务,不提供纠错、不需要序号、不需要流量控制等功能。
  2. 封装成帧
  3. 透明性
  4. 支持多种网络层协议 如IP、IPX等协议。
  5. 支持多种链路类型 如串行、并行、同步和非同步等等。
  6. 差错检测
  7. 检测链接状态
  8. 最大传输单元
  9. 支持网络地址协商
  10. 支持数据压缩协商

PPP协议不支持多点线路,只支持全双工通信。

PPP协议帧格式

PPP协议的帧格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E
(0x代表它后面的字符是用十六进制表示的。7E即01111110)
标志字段表示一个帧的开始或结束。因此标志字段就是PPP帧的定界符。
连续两帧之间只需要用一个标志字段,如果连续出现两个标志字段,
就表示是一个空帧,应当丢弃。
首部中的地址字段A规定为0xFF(即11111111),
控制字段C规定为0x03(即00000011)。这两个字段实际上并没有携带PPP帧的信息。
PPP首部的第四个字段是2字节的协议字段。
当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。
当为0xC021时,则信息字段是PPP链路控制协议LCP的数据,
而0x8021表示这是网络层的控制数据。

PPP协议带有身份认证功能,用户接入互联网用的基本都是PPP协议。

PPP协议的六个阶段:

  1. 链路不可用阶段: 初始阶段
  2. 链路建立阶段: LCP协商,(协商认证方式等)
  3. 验证阶段: PAP/CHAP验证
  4. 网络层协议阶段:**NCP协商
  5. PPP会话维持阶段: 维持PPP会话, 定时发送Echo Request报文,并等待Echo Reply报文
  6. 网络终止阶段: 终止PPP会话,回到链路不可用阶段

以太网协议

经过多年的发展,现在局域网基本等于以太网的同义词,大多数局域网使用的协议都是以太网协议。

CSMA/CD协议

局域网发展早期,使用的是总线模式的局域网,特点是所有的计算机都在同一个总线上,只有当总线空闲时才能发送数据。这样就需要一个协议来协商多个计算机之间的发言冲突问题,这就是CSMA/CD协议:载波监听多点接入/冲突检测。

由于以太网发送数据都是使用曼彻斯特编码的信号,因此以太网协议不需要界定符的尾部,因为一旦主机不再发送信号,以太网中的高低电平转换就消失了,这个特点就可以作为帧的尾部。

根据CSMA/CD协议,可以推算出要想检测到传输过程中的碰撞,数据的最小长度为64字节。以太网的MTU为64-1500

MAC帧格式

MAC帧格式如下:

1
2
3
4
5
6
7
类型字段 (2个字节):用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议
数据字段 (46-1500):正式名称是MAC客户数据字段最小长度64 字节-18字节的首部和尾部 = 数据字段的最小长度
FCS字段 (4 字节): 当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的MAC帧长不小于64 字节
在帧的前面插入的 8 字节中的第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC帧的比特同步。第二个字段是帧开始定界符,表示后面的信息就是MAC帧

PPPoE

以太网虽然应用广泛,但是却不带有身份认证功能,有人想到了把PPP协议移植到以太网中,因此有了我们接入互联网常见的PPPoE协议。

PPPoE的帧是封装在mac帧中的,格式如下: