接收方如何确定 PPP 帧的长度(不是 PPPoE 或 PPPoA)? PPP 帧的结构不显示长度字段。当然,在帧的末尾有一个 2 字节的校验和,后跟一个魔术字节,但这几乎是防碰撞的。
如何知道 PPP 帧的长度?
网络工程
层2
购买力
2021-07-06 21:02:36
2个回答
当然,有一个 2 字节的校验和后跟一个魔术字节,但这几乎是防碰撞的。
魔术字节的出现被转义。有两种类型的转义使用,称为“字符填充”和“位填充”。
PPP 报头以 16 位协议 ID 开头。你需要先看看那个,才能知道如何解释其余的。
如果协议 id 是 LCP/IPCP/IPv6CP,则标头结构通常如下所示:
struct PPP {
uint16_t protocolId;
uint8_t code;
uint8_t identifier;
uint16_t length; // <= network-encoded length field
};
如果协议 id 是 IPv4 或 IPv6,则 IP 标头紧跟在协议 id 之后。IPv4 和 IPv6 的报头中都有一个长度字段。
我不熟悉 HDLC 帧,但我假设您是从套接字接收它们的。套接字读取/接收功能将为您提供每个传入帧的大小。因此,您也可以将其用于验证目的。
其它你可能感兴趣的问题