【发布时间】:2020-04-10 16:50:04
【问题描述】:
我需要通过以太网协议将以太网数据包从一台设备发送到另一台设备。经过一番研究,我决定使用 TCP\IP 协议。我创建了相互通信的 TCP 服务器和 TCP 客户端。我为此使用了 TcpClient 和 TcpListener 类。它工作正常,但我有一些问题:
- 我需要从收到的消息中检查 CRC,并以某种方式将其与在侦听器端手动计算的结果进行比较。我怎样才能做到这一点?如何从收到的消息中获取此 CRC?我得到的只是我从客户端发送的确切消息。
- 以这种数据包格式查看我的消息有什么共同点?我在监听器端看到的都是“数据”字段,但我想看到带有标题、CRC(FCS)等的“原始”, like at that picture.
【问题讨论】:
-
“我需要将以太网数据包从一台设备发送到另一台设备”和“我决定使用 TCP\IP”并没有叠加。协议位于不同的层。 (以太网 PDU 最好称为帧,而不是数据包。)
-
您可以使用数据包分析工具,例如 tcpdump 或 Wireshark
-
@stickybit 对不起,我还是新手。实际上这是真的,我完全对这些层感到困惑。你能推荐一些东西来澄清一下吗?不像书,而是像快速阅读。在那种情况下你能推荐我什么?我怎样才能以这种原始形式发送这些以太网帧并同时读取它们?
-
@mangusta 谢谢!我会尝试搜索它。但这意味着我无法通过原生 .NET 工具获得 TCP/IP 协议的 CRC?
-
我认为这些都嵌入在 TCP 客户端中并且不可见。它使用它来确保正确接收数据(没有错误)。如果您担心安全性(例如有人拦截和更改数据)而不是错误检查,您需要将自己的校验和与传输的数据一起发送。