还是这个数据包,看看点对点链路的帧,看到源地址,目的地址还是没有变!但是由于链路不一样,协议也不一样,帧的格式也不一样,可以看到点到点的帧就不需要MAC地址。
PPP 协议的帧格式
- PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。
- 标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。(首部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的开始。)
- 地址字段 A 只置为 0xFF。地址字段实际上并不起作用。
- 控制字段 C 通常置为 0x03。
- PPP 是面向字节的,所有的PPP 帧的长度都是整数字节。
首部有四个字段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 的做法一样)。
同步传输的单位就是一个帧 ,这个帧有开始定界符和结束定结符
异步传输
字符填充
- 将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列 (0x7D, 0x5E)。
- 若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列 (0x7D, 0x5D)。
- 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。
零比特填充
- PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。
- 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
- 接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。
不提供使用序号和确认的可靠传输
PPP 协议之所以不使用序号和确认机制是出于以下的考虑:
- 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
- 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
- 帧检验序列 FCS 字段可保证无差错接受。