我需要捕获通过以太网帧向我发送的UDP信息。我有一个通过光纤与1000BASE-X以太网的点对点连接.我收到的信息是GMII格式的,它是字节,速率为125 MHz。
UDP头格式如下所示。
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| Source | Destination |
| Port | Port |
+--------+--------+--------+--------+
| | |
| Length | Checksum |
+--------+--------+--------+--------+
| |
| data octets |
+-----------------------------------+ 源端口= SP目标端口= DP长度=L校验和= CS
作为参考,以太网帧如下所示。
+-----------+-------+---------+---------+--------+------------------+---------+
| Preamble | SFD | DA | SA | TL | Data (Payload) | CRC-32 |
| 6 bytes |1 Byte | 6 bytes | 6 bytes |2 bytes | 46 to 1500 bytes | 4 bytes |
+-----------+-------+---------+---------+--------+------------------+---------+假设我的数据将放在Etnernet框架的data (有效载荷)字段中,我的问题是:
( 1)第一、第二、第二、第三、第四、L、第五数据byte1、第六数据byte2等是双字节的顺序?
发布于 2017-03-31 04:24:12
您缺少了一个网络层:
以太网帧的有效负载可能是IPv4或IPv6数据包。您需要检查以太网帧头EtherType字段,以确定什么,特别是有效负载。
UDP数据报将是IPv4或IPv6数据包的有效负载。您可以检查IPv4数据包报头协议字段,或者IPv6报头下一个标头字段,以确定IP数据包的有效负载。
就字节顺序而言,IETF有一个网络字节顺序:
1.1。背景与动机1980年撰写的“关于圣战与和平呼吁”[莲-137]的文件认为,这个行业应该以一个字节的顺序来解决问题。从那时起,IETF基本上已经确定了一个名为“”的字节顺序,这份备忘录旨在记录这个粗略的约定。不幸的是,CPU制造商之间的“圣战”仍在继续。2.定义网络字节顺序时,当一个数字太大而不能容纳一个字节时,使用多个字节对该数字进行编码。当这些数字通过面向字节的协议(例如,TCP是面向8位字节的)发送时,必须选择字节的顺序,以便两端以独立于CPU体系结构的相同方式解释这些数字。当构成这种多字节数的字节从最重要的字节排序到最小的字节时,即称为“网络字节顺序”或“大端字节”。例如,取未签名的十六进制数0xFEEDFACE (小数点4,277,009,102)。如果使用网络字节顺序(大endian)作为8位字节序列发送,则序列为: 0xFE、0xED、0xFA、0xCE。在小endian (最小的字节到最重要的字节)中,这将是: 0xCE,0xFA,0xED,0xFE。
对于以太网和其他IEEE,目标地址优先,但对于IPv4、IPv6、TCP、UDP和其他IETF标准,源地址优先。
https://networkengineering.stackexchange.com/questions/40092
复制相似问题