繁体   English   中英

如何计算udp数据包大小libpcap

[英]how to calculate udp packet size libpcap

从Linux操作系统,我试图用C或python编写自己的数据使用情况监视器。 我已经搜索和研究了几天。 目前,我正在尝试使sniffex.c适应我的需求。 我已经成功验证了几个ftp会话期间发送和接收的总字节数。

在sniffex.c中,将计算tcp数据包的大小。 我的问题是如何计算UDP数据包大小? 我已经搜索了该主题,但没有发现任何东西。 这个问题有意义吗?

更新:

计算数据包大小的函数如下所示:

got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
...
int size_payload;
...
case IPPROTO_UDP:
    printf("   Protocol: UDP\n");
    size_payload = header->len;
...
}

我还需要在size_payload上加4吗?

该函数的回调如下所示:

/* now we can set our callback function */
pcap_loop(handle, num_packets, got_packet, NULL);

如果您有UDP数据报,则可以从其报头中获取其大小。

例如,如果您有一个指向UDP数据报头的char * hdr指针,则可以通过这样的构造来获取其长度

int length = *(int *)(hdr + 4);

有关UDP的更多信息http://en.wikipedia.org/wiki/User_Datagram_Protocol

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM