НАЗВА

nc - перочиний ніж TCP/IP

ЗВЕДЕННЯ

nc [-опції] машина порт[и] [порти] ...
nc -l -p порт [-опції] [машина] [порт]

ОПИС

netcat - це просте знаряддя Юніксу, що читає та відписує дані через мережні сполучення, з використанням протоколу TCP або UDP. Воно розроблено, щоб бути надійним вихідним інструментом для безпосереднього використання або для виклику з інших програм і сценаріїв. З іншого боку, це багатофункціональне знаряддя для відлагодження та дослідження мережі. Воно здатне створити майже будь-яке потрібне вам сполучення і має декілька цікавих вбудованих властивостей. Netcat або "nc", як називається сама програма, давно мала би стати одним з тих зашифрованих але стандартних знаряддь Юнікса.

У випадку найпростішого використання, "nc машина порт" утворює сполучення TCP зі вказаною машиною на вказаному порті. Після цього, ваш стандартний ввід пересилатиметься до цієї машини, а будь-яка відповідь віддаленої машини з'являтиметься на стандартному пристрої виводу. Це продовжуватиметься, доки мережне сполучення не перерветься. Зауважте, що таке поводження відрізняється від більшості додатків, які розривають сполучення та припиняють роботу після отримання знака кінця файла EOF на стандартному вводі.

Netcat також може діяти як сервер, слухаючи щодо вхідних сполучень на довільних портах, а потім здійснюючи такі самі операції читання та запису. З несуттєвими винятками, netcat насправді не цікавить, чи він працює як "клієнт" чи як "сервер" - він так само передає дані вперед-назад доти, доки їх вже не залишиться. В обох випадках, припинення роботи можна налагодити через ліміт часу мережної неактивності.

Те саме можна робити і через UDP, тож netcat стане вашим "телнетоподібним UDP" додатком, про який ви завжди мріяли для тестування свої серверів у режимі UDP. UDP, як вказує літера "U" (unreliable), означає менш надійну передачу даних ніж TCP, і деякі системи можуть не впоратись із пересилкою великої кількості даних цим способом, але всерівно це корисна властивість, яку варто мати.

Можливо ви питаєте "чому тоді не використати telnet для сполучення з довільними портами?" Це чинне запитання, і на нього є відповідь. Telnet має "проблему кінця файла EOF стандартного вводу", тож вам доведеться додати розраховані затримки до ваших сценаріїв, щоб дати можливість завершення мережного виводу. Це головна причина, чому netcat продовжує працювати аж доки мережа не розірве сполучення. Telnet також не спроможний передавати довільні бінарні дані, оскільки деякі символи вважаються опціями телнета, і їх буде видалено з потоку. Telnet ще й виводить деякі свої діагностичні повідомлення на стандартний вивід, там де netcat зберігає такі речі строго відокремленими від свого виводу, і ніколи не змінить справжніх переданих/отриманих даних, хіба ви справді цього хочете. І, нарешті, telnet нездатний чекати вхідних сполучень або використовувати UDP. Netcat не зв'язаний цими обмеженнями, набагато менший і швидший за telnet, і має багато інших переваг.

КЛЮЧІ

-g шлюз : пункти маршрутизації (source-routing hop point[s], up to 8)

-G номер : покажчик маршрутизації (source-routing pointer: 4, 8, 12, ...)

-h : виводить поміч

-i секунд : інтервал затримки надісланих рядків, сканованих портів

-n : числові IP-адреси, без DNS

-o файл : шістнадцятковий вивід трафіку

-p порт : локальний номер порту (номер порту може бути індивідуальним чи інтервалом: найменший-найбільший, включно)

-q секунд : після виявлення EOF (кінця файла), почекати вказану кількість секунд, після чого припинити роботу

-b : дозволити UDP-трансляцію

-r : випадковий порядок локальних і віддалених портів

-s адреса : локальна вихідна адреса

-t : увімкнути telnet-взаємодію

-e програма : яку програму виконати після сполучення (будьте обережні)

-u : режим UDP

-v : багатослівний режим (вкажіть двічі для ще докладнішого виводу)

-w секунд : ліміт часу для сполучень і читання з мережі

-z : нульовий режим вводу/виводу (для сканування)

АВТОРСЬКІ ПРАВА

Netcat - цілком і повністю моє власне створіння, хоча для прикладів використано багато іншого коду. Її віддано у вільне користування інтернет-спільноті, з надією, що програма виявиться корисною, без жодних обмежень, за винятком визнання авторства там де належить. Жодних ліцензій GPL, Berkeley чи подібної нісенітниці. Автор не бере на себе ЖОДНОЇ відповідальності за те як хтось використовує цю програму. Якщо ви якимось чином збагатилися завдяки netcat, і почуваєтесь щедрим - відправте мені чек. Якщо ви хоч якось пов'язані з Мережею Майкрософт - змініть роботу. Завжди слідкуйте за лижнею. Коментарі, питання та латки - на hobbit@avian.org.

ВАДИ

Було докладено зусиль, щоб netcat робив саме те, що належить у різних режимах. Якщо ви переконані, що програма за якихось обставин поводиться якось не так, тоді будь ласка повідомте мене, і вкажіть, як на вашу думку вона має себе вести. Якщо netcat неспроможна здійснити якісь бажані вами завдання, тоді незначні поправки коду, напевне, виправлять це. Вона забезпечує базовим, легким для змін шаблоном для написання інших мережних додатків, і, звичайно, заохочую всіх охочих до створення власних модифікацій і надсилання мені будь-яких покращень програми. Обернений зв'язок з інтернет-спільнотою завжди вітається.

Деякі назви портів у /etc/services містять дефіси - netcat не може їх правильно обробити, тож вказуйте діапазони за допомогою чисел, якщо можете.

ДИВІТЬСЯ ТАКОЖ

/usr/share/doc/netcat/README.gz

АВТОР

Ця сторінка посібника написана Joey Hess joeyh@debian.org та Robert Woodcock rcw@debian.org зі значними запозиченнями з файла README Netcat.

Netcat було написано хлопцем, якого ми знаємо як Hobbit hobbit@avian.org.