当前位置 : 主页 > 网络编程 > lua >

使用Lua编写Wireshark插件解析KCP UDP包,解析视频RTP包

来源:互联网 收集:自由互联 发布时间:2021-06-23
前段时间写了一个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 解析器插件,最终效果图如下:

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

 

未完待续...

网友评论