- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试计算 GFP(通用成帧过程)帧的有效负载 FCS (pFCS),但无法获得正确的值。
我所做的是对有效载荷进行解扰,并对从有效载荷报头(4 字节 PTI、PFI、EXI、UPI、eHEC)开始到 GFP PDU 结尾的字节使用 CRC32,不包括 4 字节 pFCS。我使用的 CRC32 代码取自 echo47's post .
#include <stdio.h>
int main(void)
{
unsigned char data[] =
{
0x00, 0x0A, 0xE6, 0xF0, 0x05, 0xA3, 0x00, 0x12,
0x34, 0x56, 0x78, 0x90, 0x08, 0x00, 0x45, 0x00,
0x00, 0x30, 0xB3, 0xFE, 0x00, 0x00, 0x80, 0x11,
0x72, 0xBA, 0x0A, 0x00, 0x00, 0x03, 0x0A, 0x00,
0x00, 0x02, 0x04, 0x00, 0x04, 0x00, 0x00, 0x1C,
0x89, 0x4D, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13
};
unsigned int crc_table[] =
{
0x4DBDF21C, 0x500AE278, 0x76D3D2D4, 0x6B64C2B0,
0x3B61B38C, 0x26D6A3E8, 0x000F9344, 0x1DB88320,
0xA005713C, 0xBDB26158, 0x9B6B51F4, 0x86DC4190,
0xD6D930AC, 0xCB6E20C8, 0xEDB71064, 0xF0000000
};
unsigned int n, crc=0;
for (n=0; n<sizeof(data); n++)
{
crc = (crc >> 4) ^ crc_table[(crc ^ (data[n] >> 0)) & 0x0F]; /* lower nibble */
crc = (crc >> 4) ^ crc_table[(crc ^ (data[n] >> 4)) & 0x0F]; /* upper nibble */
}
for (n=0; n<4; n++) /* display the CRC, lower byte first */
{
printf("%02X ", crc & 0xFF);
crc >>= 8;
}
printf("\n");
return 0;
}
我能够使用此 CRC32 代码获得正确的以太网 FCS,但无法获得 GFP pFCS。 eHEC 也是正确的值。我是不是计算错了 pFCS,还是需要使用不同的 CRC32 计算方法?
最佳答案
在使用 CRC calculator code 之后,我终于能够为 GFP 帧获得正确的 CRC32 值。并将 #define REVERSED_DATA
从 TRUE
更改为 FALSE
。
我想我以前无法获得正确的值,因为发送位的顺序。 GFP 以与以太网相反的方向发送比特,如本 post 中所述.
关于计算 GFP 载荷 FCS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24582254/
我正在尝试计算 GFP(通用成帧过程)帧的有效负载 FCS (pFCS),但无法获得正确的值。 我所做的是对有效载荷进行解扰,并对从有效载荷报头(4 字节 PTI、PFI、EXI、UPI、eHEC)开
我正在研究流式细胞术。我想使用 python 解析 .fcs 文件。我在互联网上研究过有一个模块 fcm 但它适用于 linux 操作系统,而我在 Windows 上工作。 我想知道如何使用pytho
我下载的最后一个Java 7被命名为 jdk-7-ea-bin-b145-windows-i586-07_jun_2011 现在它被命名为 jre-7-fcs-bin-b146-windows-i58
我不确定这是否可行,因为这可能在硬件中处理,但我需要发送一些带有错误的以太网帧。我希望能够创建短帧、jabber、错位和错误的 FCS 错误。我在 Python 工作。 最佳答案 它可以在硬件中处理,
最后一次更新(我保证) 问题的核心是遍历数据,正如 Jonathan Leffler 所暗示的那样。二进制数据“排列”在矩阵中。例如,如果我有 3 个事件和 4 个位宽为 8 的参数,则二进制数据 0
我想通过发送带有错误 FCS/CRC 的第 2 层包来进行一些测试。我搜索了 scapy/mz/nemesis,但似乎没有人可以玩它。是否可以在普通的 linux NIC 上执行此操作?或者,如果 F
因此,当您发送一个帧时,在标记端应用了一个 fcs(32 位 crc),但是如果该 fcs 返回为损坏或无效,该设备会请求重新传输还是会简单地丢弃该帧? 最佳答案 以太网层没有自动重传;但是,更高级别
我在两台运行 Linux 的 PC 之间生成流量(通过发送以太网帧),目的是捕获一些错误帧。问题是当 Phy 层检测到帧错误(如果 CRC 或 FCS 无效)时,帧被丢弃,我无法在我的程序中接收它。
这来自 IEEE Std 802.11-2012 Clause 8.2.4.8 FCS 字段: 我无法理解最后两段: “除法的初始余数预设为全部”是什么意思?为什么我们需要这样做? “...计算字段和
在 Linux 下使用 Wireshark 抓包时,有什么方法可以从以太网帧中获取帧校验序列 (FCS)? 最佳答案 FCS 由发送方的以太网设备生成,并由接收方的以太网设备解码。如果 FCS 正确,
我正在构建以太网 II 帧、IPv4 数据包,最后是带有有效负载的 TCP 部分。从头开始,创建原始数据包。 我的问题是......在 Windows 上使用 C# 和原始套接字时,我需要在数据包末尾
我正在使用 Spartan 3E Starter Kit我正在尝试通过 100MBit 链接在其上接收以太网帧。 对于那些不知道的人,板子有一个PHY芯片,暴露了25MHz的接收时钟。我已经(几乎)通
我有一个在 Windows Vista 和更高版本系统上运行的 NDIS 6 过滤器驱动程序。 我已将它绑定(bind)在 NativeWiFi 过滤器 下方,因此我可以看到 802.11 数据包 而
我们正在将生产应用程序复制到灾难恢复机器。我们的应用程序是一个使用 Hibernate Spring 和 Struts2 框架的 Web 应用程序,在 Sun Java System Applicat
我是一名优秀的程序员,十分优秀!