以太网帧传输层识别

Ethernet frame transport layer recognition

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

我找了几天这个信息,但找不到任何来源,可能是因为我误解了什么。

我可以通过解释 subject/hinting 在哪里查看来向更有经验的 IT 人员寻求帮助吗?我觉得我在死胡同里。

提前致谢。

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

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

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