В настоящее время я пишу приложение Java, в котором я запускаю основной раздел вместе с резервным (с использованием виртуальных машин). Чтобы заставить сервер резервного копирования взять на себя первичный (если первичные аварии), будучи полностью прозрачным для клиента, мне нужно получить одно и то же приложение, работающее как на первичной, так и на резервной, и оба должны иметь одно и то же состояние.Изменение TCP-пакетов «на лету»
Для этого мне нужно синхронизировать резервное копирование с основным, чтобы он получал одну и ту же последовательность пакетов от клиента и отправлял те же (подавленные) ответы. Для этого мне нужно, чтобы начальный порядковый номер TCP резервной копии совпал с начальным порядковым номером первичного.
Чтобы достичь этого, я подумал о перехвате пакетов на резервный сервер и обратно, а также изменении номера последовательности в их заголовке TCP, чтобы он соответствовал параметрам первичного. Таким образом, мне нужно приложение, -
- позволяет мне перехват TCP-пакеты на лету
- позволяет мне изменить их, а затем направить их в первоначальное место назначения
- Обеспечивает оригинальный неизмененный пакет отбрасывается
- Что-то, что может быть встроено в приложения Java, является огромным плюсом, но это не является основным требованием.
Есть ли способ достичь этого?
Вы не можете сделать это на Java с любым известным мне пакетом. Каждый будет предлагать JPcap, но это только позволяет захватывать пакеты, а не изменять их. – EJP
@ EJP А это, к сожалению, есть пакет для другого языка, о котором вы знаете, что будет делать эту работу? Я могу использовать что-то другое, кроме Java, если это необходимо. –
Есть библиотека C, чье имя я забываю, кто это делает. Порты доступны для большинства основных операционных систем. Я думаю, что это может быть проект «LibNet», упомянутый здесь (http://www.tcpdump.org/related.html). Несколько лет назад я немного поработал над JPcap, и я думаю, что именно там я это заметил. – EJP