我正在尝试在 Ubuntu GNU/Linux 机器上创建一个软件模拟,它将像 PPPoE 一样工作。我希望这个模拟器能够接收传出数据包,剥离以太网报头,插入 PPP 标志(7E、FF、03、00 和 21)并将 IP 层信息放入 PPP 数据包中。我在处理数据的 FCS 时遇到了问题。据我所知,我使用的蜂窝调制解调器有一个使用 CRC16-CCITT 方法的 2 字节 FCS。我找到了几个可以计算这个校验和的软件,但是它们都没有产生从串行线路出来的东西(我有一个串行线路“嗅探器”,它可以显示调制解调器正在发送的所有内容)。
我一直在研究 pppd 的来源和 linux 内核本身,我可以看到它们都有一个在数据中添加 FCS 的方法。这似乎很难实现,因为我没有内核黑客的经验。有人能想出一种简单的方法(最好是在 Python 中)来计算与内核产生的 FCS 匹配的 FCS 吗?
谢谢。
PS 如果有人愿意,我可以将我得到的数据输出样本添加到串行调制解调器。