0

最近我一直致力于嵌入式系统中的原始以太网支持。主要用于教育目的和专业知识。使用在谷歌上找到的一些数据,我能够实现 ARP 支持,以及单独的 UDP/TCP 传输层支持。不幸的是,我在同时支持它们(UDP/TCP)时遇到了问题。基本上我无法识别传入的帧协议,因此无法决定是将其发送到 UDP 还是 TCP 处理程序。无法将其发送给两者,而不会冒获取格式错误数据的风险。我期望一些位域表示​​该信息,但找不到它。

我正在寻找这些信息好几天,但找不到任何来源,可能是因为我误解了一些东西。

我可以通过解释主题/提示去哪里寻找一些更有经验的 IT 来寻求帮助吗?我觉得我在死胡同。

先感谢您。

4

1 回答 1

0

TCP/UDP 不应直接嵌入到以太网帧中。TCP 段应位于Type = 6 的 IP 数据包内,IP 数据包应位于EtherType = 0x800 的以太网帧内(对于 IPv4):

     Ethernet EtherType=0x800 (IPv4)
   +----------------------------------+
   |          IP Type=6 (TCP)         |
   |     +-------------------------+  |
   |     |                         |  |
   |     |     +---------------+   |  |
   |     |     |   TCP         |   |  |
   |     |     |               |   |  |
   |     |     +---------------+   |  |
   |     |                         |  |
   |     +-------------------------+  |
   |                                  |
   +----------------------------------+

UDP也是一样,只是IP类型是17而不是6。

于 2018-04-03T09:05:17.340 回答