Установление TCP-соединений с помощью hping3
Когда клиент отправляет 10 пакетов TCP SYN с помощью hping3(без подмены), сервер отвечает и отправляет 10 пакетов TCP SYN+ACK. Теперь клиент должен ответить на сервер и установить соединение, отправив 10 пакетов ACK, но клиент отправляет 10 RST и завершает полуоткрытые соединения (я думаю, это потому, что ядро Linux отвечает).
Как я могу отправить 10 пакетов SYN в секунду (одному и тому же пункту назначения с разными портами источника) и в ответ на SYN + ACK отправить ACK и установить соединения? Спасибо большое
1 ответ
hping3 отправляет необработанные пакеты, не открывая сокет, ориентированный на соединение с ядром - таким образом, RST. Чтобы ядро установило соединение, вы должны держать сокет открытым на стороне вашего приложения. Это означает, что приложение должно продолжать работать, если оно выключится, ядро сбросит все открытые сокеты.
Ваши параметры ограничены, вы можете попробовать 'nc' (netcat) и запустить новый процесс для каждого соединения, которое вы хотите открыть. Или иначе напишите программу, которая открывает несколько соединений, каждое из которых использует свой сокет, чтобы гарантировать, что порт источника различен для каждого соединения. Имейте в виду, что существует ограничение на количество сокетов, которые вы можете открыть в одной программе и в системе в целом.
Возможно, вам потребуется использовать другой инструмент, например tcpgoon, который завершает рукопожатие за вас, сохраняя открытые соединения во время выполнения теста.