Моделирование трафика TCP клиента с использованием Ncat - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь создать простой сценарий, который будет имитировать TCP-клиента, который периодически инициирует соединение с эхо-сервером и генерирует случайную строку для отправки на сервер, которую он затем должен отправить обратно клиенту.Ниже приведен простой скрипт bash, который я настроил:

while :
do
        var="$(shuf -i 9-19 -n 1)" # generate a random number between 9-19
        rand="$(pwgen "$var" 1)" # generate a random string of size var
        echo "$rand" | nc localhost 1234 
        sleep 5
done

Сам сервер - это просто простая команда, запущенная в терминале:

ncat -l 1234 -k --exec "/bin/cat"

I 'Я заметил в Wireshark для сценария 1, что рукопожатие по протоколу TCP 3 завершается нормально, клиент отправляет данные, казалось бы, нормально, но тогда я никогда не вижу ответа или эха с сервера.Кажется, что сервер все еще может ответить клиенту, закрывающему соединение.Захват для первого сценария здесь .

Это противоречит сценарию два, если я только что запустил nc localhost 1234 в терминале и начал набирать текст.В этом сценарии я вижу в Wireshark, что сервер отвечает, как и ожидалось, с ответом, встречающимся в строке здесь 6.

Почему я не могу видеть ответ в случае 1 какЯ делаю в случае 2?Как мне нужно изменить свой сценарий, чтобы отразить это предполагаемое поведение (если это возможно)?Наконец, в сценарии 2, почему сервер отвечает клиенту дважды, сначала с помощью [ACK] без данных, а затем с другим [PSH, ACK] сразу после размещения данных «эхо» (как видно в строках 5 и 6).второго захвата)?

РЕДАКТИРОВАТЬ: После просмотра еще, я думаю, я нашел решение этой проблемы.Это происходит из-за того, что netcat завершает работу до получения ответа, как указано в https://unix.stackexchange.com/questions/289364/netcat-doesnt-print-response.. Таким образом, простым исправлением будет изменение сценария так, чтобы он использовал опцию задержки -q.

 while :
    do
            var="$(shuf -i 9-19 -n 1)" 
            rand="$(pwgen "$var" 1)" 
            echo "$rand" | nc -q 1 localhost 1234 #change here
            sleep 5
    done

Я все еще не уверен в третьем вопросе, который у меня был, но есть подозрения, что это может быть синхронизация нового размера окна соединения?Еще раз спасибо за любые идеи.

...