如何用Lua编写Wireshark插件解析KCP UDP包及视频RTP包的详细结构?

2026-04-01 19:381阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计278个文字,预计阅读时间需要2分钟。

如何用Lua编写Wireshark插件解析KCP UDP包及视频RTP包的详细结构?

前期时间开发了一个PC端局域网音视频通讯程序,采用开源KCP实现可靠的UDP传输。研究发现,KCP在封装数据包时,会在数据包前面加上它自己的头部。如果数据包较小,KCP可能会将多个数据包合并。

前段时间写了一个PC上局域网音视频通话的程序,使用开源KCP来实现可靠UDP传输。

通过研究发现KCP在发包时,会在数据包前面加上它自己的头。如果数据包较小,KCP可能会把多个数据包合成一个包发送,提高效率。

如下图所示。

kcp udp 包结构
28 bytes 4 bytes 4 bytes len1 28 bytes 4 bytes 4 bytes len2
├────────────┼────────┬────────┼────────┼────────────┼────────┬────────┼────────┤ │kcp header │ size1 │msg type│msg data│kcp header │ size2 │msg type│msg data│ ... └────────────┴────────┴────────┴────────┴────────────┴────────┴────────┴────────┘

size1 = 8 + len1
size2 = 8 + len2

kcp头后面是程序里自定义的数据包结构,由有8字节数据包头和实际发送的数据包组成,8字节数据包头里前4字节是头和数据包的总长度,后4字节是消息类型。

查看kcp代码,由下面两个函数确定kcp头的结构

发送视频包时,直接以rtp视频包作为数据,程序里视频包的msg type值为4738。

下面以视频包为例写一个Wireshark kcp 解析器插件,最终效果图如下:

抓包文件和代码 微云 网盘地址:share.weiyun.com/5umD1au

如何用Lua编写Wireshark插件解析KCP UDP包及视频RTP包的详细结构?

未完待续...

本文共计278个文字,预计阅读时间需要2分钟。

如何用Lua编写Wireshark插件解析KCP UDP包及视频RTP包的详细结构?

前期时间开发了一个PC端局域网音视频通讯程序,采用开源KCP实现可靠的UDP传输。研究发现,KCP在封装数据包时,会在数据包前面加上它自己的头部。如果数据包较小,KCP可能会将多个数据包合并。

前段时间写了一个PC上局域网音视频通话的程序,使用开源KCP来实现可靠UDP传输。

通过研究发现KCP在发包时,会在数据包前面加上它自己的头。如果数据包较小,KCP可能会把多个数据包合成一个包发送,提高效率。

如下图所示。

kcp udp 包结构
28 bytes 4 bytes 4 bytes len1 28 bytes 4 bytes 4 bytes len2
├────────────┼────────┬────────┼────────┼────────────┼────────┬────────┼────────┤ │kcp header │ size1 │msg type│msg data│kcp header │ size2 │msg type│msg data│ ... └────────────┴────────┴────────┴────────┴────────────┴────────┴────────┴────────┘

size1 = 8 + len1
size2 = 8 + len2

kcp头后面是程序里自定义的数据包结构,由有8字节数据包头和实际发送的数据包组成,8字节数据包头里前4字节是头和数据包的总长度,后4字节是消息类型。

查看kcp代码,由下面两个函数确定kcp头的结构

发送视频包时,直接以rtp视频包作为数据,程序里视频包的msg type值为4738。

下面以视频包为例写一个Wireshark kcp 解析器插件,最终效果图如下:

抓包文件和代码 微云 网盘地址:share.weiyun.com/5umD1au

如何用Lua编写Wireshark插件解析KCP UDP包及视频RTP包的详细结构?

未完待续...