PPTP连接通过将其封装到PPP中,然后通过先前协商的增强GRE链路发送它,从而传输负载数据。
根据PPTP RFC,以下内容是正确的:
封装的PPP数据包本质上是PPP数据包,减去任何特定于媒体的帧元素。不包括HDLC标志、位插入、控制字符或控制字符转义。没有CRCs通过隧道。
因此,必须不对PPP数据进行转义,所有字符都被视为普通字符,而不是控制字符。
但是,PPTP还在Set-Link-Info中定义了第2.15节.Set-Link-Info消息,该消息的唯一目的是设置ACCM,它代表异步控制字符映射。它还定义,除非发送此消息,否则另一方将假定0xFFFFFFFF为默认值。
ACCM的唯一目的是告诉对方哪些控制字符必须转义,但是第4节禁止转义控制字符,那么设置ACCM的目的是什么?如果默认值表示ASCII代码32以下的所有字符都必须转义,而转义是禁止的,那么预期会发生什么行为?
我发现的所有实现都完全忽略了ACCM,从不逃避任何事情,然而这使得Set-Link-Info消息完全没有意义,因为它永远不会产生效果。有人能照亮这个矛盾吗?
相关的区域资源中心:
发布于 2020-12-20 18:16:00
封装的PPP数据包本质上是PPP数据包,减去任何特定于媒体的帧元素。不包括HDLC标志、位插入、控制字符或控制字符转义。没有CRCs通过隧道。
这意味着PPTP本身在传输的PPP数据包中不使用任何控制字符。所有信号都转移到PPTP。
ACCM用于为底层异步链路启用类似于控制字符的字符序列的透明传输。这些必须转义,否则链接中断(想想海耶斯~+++~AT序列)。
https://networkengineering.stackexchange.com/questions/71475
复制相似问题