还是这个数据包,看看点对点链路的帧,看到源地址,目的地址还是没有变!但是由于链路不一样,协议也不一样,帧的格式也不一样,可以看到点到点的帧就不需要MAC地址。

数据链路层 PPP协议的帧格式_字段

PPP 协议的帧格式


  • PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。
  • 标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。(首部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的开始。)
  • 地址字段 A 只置为 0xFF。地址字段实际上并不起作用。
  • 控制字段 C 通常置为 0x03。
  • PPP 是面向字节的,所有的PPP 帧的长度都是整数字节。

数据链路层 PPP协议的帧格式_网络_02

首部有四个字段F,A,C,协议。尾部有两个字段FCS,F。这个就是ppp协议规定的。

F代表开始和结束,分别占用一个字节,这一个字节的数值是16进制的。7E代表了16进制里面的0111 1110。

A是地址字段。FF全部都是1111 1111,这个地址又不代表目标MAC地址,ppp协议不涉及MAC地址。ppp协议就不需要MAC地址,从一根线的一端发送到另外一端信号,中间没有其他设备,A发送的接收端必然是B,所以有没有地址都是无所谓的,所以这个地址字段形同虚设没有什么实际的意义。

PPP 有一个 2 个字节的协议字段。(和快递一样,得指明快递里面包裹是文件还是什么类型的物品)

  • 其值 若为 0x0021,则信息字段就是 IP 数据报。
  • 若为 0x8021,则信息字段是网络控制数据。
  • 若为 0xC021,则信息字段是 PPP 链路控制数据。
  • 若为 0xC023,则信息字段是鉴别数据。

PPP帧的尾部
尾部中的第一个字段(2个字节)是使用CRC的帧检验序列FCS。

尾部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的结束。

注:标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果连续出现两个标志字段,就表示这是一个空帧,应当丢弃。

透明传输问题


  • 当 PPP 用在异步传输时,就使用一种特殊的字符填充法。
  • 当 PPP 用在同步传输链路时,协议规定采用硬件来完成比特填充(和 HDLC 的做法一样)。

同步传输的单位就是一个帧 ,这个帧有开始定界符和结束定结符

数据链路层 PPP协议的帧格式_字段_03

 异步传输

数据链路层 PPP协议的帧格式_字段_04

字符填充

  • 将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列 (0x7D, 0x5E)。
  • 若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列 (0x7D, 0x5D)。
  • 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。

零比特填充

  • PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。
  • 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
  • 接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。

数据链路层 PPP协议的帧格式_字段_05

不提供使用序号和确认的可靠传输


 PPP 协议之所以不使用序号和确认机制是出于以下的考虑:

  1. 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
  2. 在因特网环境下,PPP 的信息字段放入的数据是 IP  数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
  3. 帧检验序列 FCS 字段可保证无差错接受。