使用TCPREPLAY添加时间戳到数据包有效负载
问题描述:
我有一个pcap文件来重放。我想重写数据包有效载荷以包含时间戳。我如何用tcpreplay或tcprewrite来做到这一点?有没有默认选项,或者我应该自己实现它(修改tprep)?我一直在阅读这些网页一段时间,谷歌也没有帮助我。在此先感谢使用TCPREPLAY添加时间戳到数据包有效负载
PS:我不想修改数据包的原始大小,因为数据不重要覆盖是好的。如果只有选项是修改数据包大小,那我也没问题。
答
tcpreplay/tcprewrite不支持这种编辑方式,所以您必须亲自编写代码。如果你不介意破坏你的数据包数据(这听起来像你可以肯定),那么编辑tcpedit.c应该很容易。
答
如果您未绑定到命令行工具,请检出netdude。它是GTK应用程序,只需点击几下鼠标即可编辑数据包跟踪。
这是一个屏幕截图,显示编辑TCP头字段的对话框。
TCP header editing http://netdude.sourceforge.net/screenshots/0.4/shot-1.gif
所附库libnetdude是netdude的核心。如果netdude提供的GUI不能满足您的需求,请使用它编写您自己的工具。
感谢您的回复。由于频繁的系统调用,它会大大伤害转发性能吗? – tartar 2012-03-29 04:13:32
那么取决于... gettimeofday()在大多数系统上过去非常昂贵,但在过去的几年里情况有了很大的改进。例如,Linux已经从BIOS调用切换到HPET,速度更快。假设你只是通过memcpy()在数据包中放入一个4字节的UNIX纪元时间戳,这将会非常快速和低开销。如果你想要更高的准确性,这是更多的字节和潜在的更多的工作/开销,但它取决于你的实现。长话短说,在大多数情况下,你不应该注意到真正的表现。 – 2012-03-31 01:13:09