最近,我一直致力于嵌入式系统中的原始以太网支持。主要用于教育目的和技术诀窍。使用谷歌上的一些数据我能够实现ARP支持,并分离UDP / TCP传输层支持。 不幸的是,我有同时支持它们(UDP / TCP)的问题。基本上我无法识别传入的帧协议,因此无法决定是将其发送到UDP还是TCP处理程序。无法将其发送给两者而没有获取格式错误的数据的风险。 我期望一些位域表示该信息,但无法找到它。
我正在寻找这些信息好几天但找不到任何来源,可能是因为我误解了一些事情。
我可以向一些更有经验的IT人员寻求帮助,解释主题/提示在哪里寻找帮助吗?我觉得自己已经走到了尽头。
提前谢谢你。
答案 0 :(得分:0)
TCP / UDP不应直接嵌入以太网帧。 TCP段应位于Type = 6的IP数据包内,并且IP数据包应位于以太网帧内EtherType = 0x800(对于IPv4):
Ethernet EtherType=0x800 (IPv4)
+----------------------------------+
| IP Type=6 (TCP) |
| +-------------------------+ |
| | | |
| | +---------------+ | |
| | | TCP | | |
| | | | | |
| | +---------------+ | |
| | | |
| +-------------------------+ |
| |
+----------------------------------+
对于UDP,它是相同的,只有IP类型是17而不是6。