以太网帧传输层识别

时间:2018-04-03 08:51:54

标签: tcp udp raw-ethernet

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

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

我可以向一些更有经验的IT人员寻求帮助,解释主题/提示在哪里寻找帮助吗?我觉得自己已经走到了尽头。

提前谢谢你。

1 个答案:

答案 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。