Я ищу объяснение, где я могу найти разницу между telnet
и netcat
. В каких случаях следует использовать telnet
и netcat
? Что telnet
может делать то, что netcat
не может делать и наоборот?
Я пытался получить ответ из Интернета, но это не помогло мне понять. Все, что я смог найти, это разные cmd. Я ищу примеры использования с различиями.
Может ли кто-нибудь объяснить разницу?
решение1
Примечание: существует несколько различных программ Telnet, а также несколько различных вариантов Netcat. Они могут иметь несколько отличающиеся функции.
В общем, telnet
конкретно говорит о протоколе RFC 854 «Telnet» — он распознает определенные байты как команды согласования параметров Telnet, поступающие с сервера, будет реагировать на них соответствующим образом и будет отправлять свои собственные в начале каждого соединения. (Например, он сообщает серверу значение $TERM и размер окна в строках×столбцах.) Он также будет переводить переносы строк Unix LF в версию NVT CR+LF и будет распознавать Ctrl+] как клавишу «escape».
Это делает его telnet
непригодным для сырых 8-битных TCP-соединений, поскольку это исказит передаваемые данные, и это не очень хорошо работает для пакетного использования в целом. Однако его все еще можно использовать для интерактивного взаимодействия с протоколами на основе ASCII, такими как FTP или SMTP – это работает, потому что многие клиенты Telnet не инициируют согласование при подключении к нестандартному порту (но они все равно ответят на него).
Netcat nc
ничего подобного не делает – этов первую очередь8-битный чистый TCP-клиент. Он может использоваться с протоколами ASCII, как и telnet, но также может и часто используется как «труба» в TCP для пакетной передачи данных, поскольку он не изменяет ни одного байта, отправленного через него.
Netcat часто также предлагает транспорты, не использующие TCP (UDP, иногда SCTP, локальные сокеты Unix), тогда как клиенты Telnet поддерживают только TCP.
С другой стороны, netcat не понимает никаких протоколов — если вы попытаетесь подключиться к настоящему серверу Telnet с помощью nc
, это не сработает вообще: сервер не будет знать, какой тип терминала вы используете, размер окна нельзя будет изменить и т. д.
- Если вы подключаетесь к серверу Telnet через порт 23, используйте
telnet
. - Если вам нужно что-то подобное,
cat
но для TCP, используйтеnc
или дажеsocat
. - Если вам необходимо отправить/получить нетекстовые данные, используйте
nc
/socat
— избегайтеtelnet
. - Если вы хотите вручную вводить команды SMTP, IRC, IMAP или HTTP, оба инструмента будут работать нормально. (На самом деле, они
telnet
могут работать немного лучше, так как преобразуют окончания строк в CR+LF, что также требуется некоторым таким серверам.)