2012-03-24 42 views
0

是否有一种简单的方法在Java中执行TCP数据包的1:1副本并将其发回,以强制客户端的TCP实现自动丢弃它?还是我以错误的方式接近这个?这似乎是一件简单的事情,但让我难住。在Java中重复数据包?

编辑原始套接字库在这里有什么相关性,还是不是严格要求?

回答

1

是的,你可以复制并重新发送你想要的所有有效载荷数据。

不,没有办法直接使用Java套接字重新创建TCP/IP标头(和/或以太网帧标头)。

你可能想看看的libpcap:

http://www.tcpdump.org/pcap.html

+0

嗨,感谢您的回复......所以需要一个原始套接字库来执行这种事情?我听说过RockSaw,从来没有使用它,但显然它允许你做任何你喜欢的事情...... – xingyu 2012-03-24 01:31:25

1

TCP包复制,应在内核级别上进行,因为TCP/IP报头填入内核级。

也许您需要重新编译linux内核,并修改TCP/IP堆栈实现,以模拟丢包和重复数据包。