Отличие поведения netcat от telnet при подключении к общедоступному серверу маршрутизации

Я наблюдал различное поведение между netcat и telnet при подключении к общедоступному серверу маршрутизации bgp-view.tvnetwork.hu и вводе команды show ip bgp.

При использовании Telnet вывод (который обычно состоит из нескольких десятков тысяч строк) усекается, и для того, чтобы просмотреть все это, вам нужно нажать пробел или ввести, чтобы продолжить (как страницы руководства). Когда я подключаюсь к netcat, он просто начинает сбрасывать весь вывод и после первых нескольких сотен строк зависает. Даже если я прямо заявлю, что хочу сделать паузу после первых 100 строк с помощью команды terminal length 100 netcat, это не изменит поведения.

У вас есть идеи, почему это происходит и как это можно решить? Моя ОС — Ubuntu 10.4, а на сервере маршрутов работает Quagga (версия 0.99.5). С другими типами маршрутизаторов (cisco или juniper) такой проблемы не возникает.

Спасибо.

пс. Я хотел пометить вопрос как сервер маршрутов, но не могу создавать новые теги :(

ИЗМЕНИТЬ:

Проблема в том, что netcat не согласовывает размер окна (см. мой ответ ниже). Параметр Netcat -t используется для согласования параметров telnet, но он отвечает отрицанием (НЕ или НЕ БУДЕТ), поэтому вопрос заключается в том, как заставить netcat согласовывать параметры telnet. Возможно, я опубликую новый вопрос по этому вопросу.


person Vasilis    schedule 16.08.2010    source источник


Ответы (2)


Я обнаружил подобное несоответствие с SSH 1.5 на маршрутизаторах Juniper. Когда я реализовывал инструмент для топологии сети, мне приходилось использовать две разные библиотеки SSH на Java, чтобы все заработало. Я никогда полностью не диагностировал проблему, но похоже, что проблема заключалась в том, как одна из моих библиотек устанавливала связь, а не в том, как ssh-сервер на маршрутизаторе ожидал, что что-то будет сделано. В этом случае мои соединения просто сбрасывались. Мне пришлось использовать четыре библиотеки для поддержки трех протоколов: telnet, ssh 1.5 и ssh 2.0.

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

Спасибо,

-Брайан-

person Brian Stinar    schedule 16.08.2010
comment
Спасибо за ваш ответ. Похоже, что это действительно проблема конкретного маршрутизатора, потому что другой общедоступный сервер маршрутов quagga (route-server.tenet.ac.za) также демонстрирует такое же поведение. Я установлю wireshark для просмотра пакетов, надеюсь, это даст некоторое представление. - person Vasilis; 16.08.2010

Хорошо, тайна раскрыта с помощью wireshark.

Проблема заключалась в согласовании параметров telnet. Сервер запрашивает у клиента telnet "Провести согласование размера окна", но клиент не согласовывал, и даже с параметром -t netcat отвечает "Не будет согласовать размер окна"< /эм>.

Я создал клиент telnet java с библиотекой apache commons для согласования размера окна с помощью конструктора WindowSizeOptionHandler(), и он отлично работает. Теперь мне просто нужно найти, как это сделать с помощью netcat.

person Vasilis    schedule 21.08.2010