有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java动态修改TCP数据包

我目前正在编写一个Java应用程序,其中运行一个主服务器和一个备份服务器(使用虚拟机)。为了让备份服务器作为主服务器接管(如果主服务器崩溃),同时对客户端完全透明,我需要在主服务器和备份服务器上运行相同的应用程序,并且两者必须具有相同的状态

要做到这一点,我必须将备份与主服务器同步,以便它从客户端接收相同序列的数据包,并发送相同的(被抑制的)回复。为此,我需要获取备份的初始TCP序列号,以便与主备份的初始序列号匹配

为了实现这一点,我想到了拦截往返于备份服务器的数据包,并修改它们的TCP报头中的序列号,使其与主服务器的序列号匹配。因此,我需要一个应用程序:

  • 让我在飞行中拦截TCP数据包
  • 允许我修改它们,然后将它们转发到原始目的地
  • 确保原始未修改的数据包被丢弃
  • 可以嵌入Java应用程序的东西是一个巨大的优势,但这不是一个主要要求

有没有办法做到这一点


共 (1) 个答案

  1. # 1 楼答案

    对于任何面临同样问题的人,我最终设法使用ettercap-http://ettercap.github.io/ettercap/

    更具体地说,我使用ARP中毒模式来拦截往返于服务器的数据包,并使用定制的ettercap插件对其进行适当修改