20-04-2023
Нуль-модемное соединение — соединение двух компьютерных устройств по протоколу RS-232 без модема.
Изначально стандарт RS-232 предназначался для соединения телетайпа с телефонным модемом — и уже опосредованно, через модемы, телетайпы общались друг с другом. Поэтому соединение по RS-232 асимметрично: предполагается, что с одной стороны модем, а с другой — источник/потребитель данных. В нуль-модемном соединении линии передачи и приёма соединены крест-накрест. Нуль-модемное соединение не стандартизовано, поэтому существуют несколько разводок.
Содержание |
В простейшем нуль-модемном кабеле линии передачи и приёма соединены крест-накрест. Во многих кабелях крест-накрест соединяются и другие линии, например, сигналы готовности. Иногда используют обычный «прямой» кабель, поставляющийся, например, с модемом, через закрещивающий переходник.
Наиболее сложная из разводок[1][2], с которой будет работать даже ПО, которое проверяет сигнал carrier detect (наличие-потеря несущей).
Назначение гнезда | Гнездо DB-25 |
Гнездо DE-9 |
Направ- ление |
Гнездо DE-9 |
Гнездо DB-25 |
Назначение | |
---|---|---|---|---|---|---|---|
Корпус | FG | 1 | - | - | 1 | FG | |
Передача | TxD | 2 | 3 | → | 2 | 3 | RxD |
Приём | RxD | 3 | 2 | ← | 3 | 2 | TxD |
Запрос передачи | RTS | 4 | 7 | → | 8 | 5 | CTS |
Готов к приёму | CTS | 5 | 8 | ← | 7 | 4 | RTS |
Сигнальная земля | SG | 7 | 5 | 5 | 7 | SG | |
Готовность модема | DSR | 6 | 6 | ← | 4 | 20 | DTR |
Наличие несущего сигнала | DCD | 8 | 1 | ||||
Готовность терминала | DTR | 20 | 4 | → | 1 | 8 | DCD |
6 | 6 | DSR |
Простейшая разновидность последовательного кабеля — полное отсутствие контроля соединения. TxD на одном конце соединяется с RxD на другом, «земля» с «землёй» — итого три провода. Работает с ПО, которое не проверяет работу модема (например, с большинством игр) и с устройствами, которым не нужны линии управления модемом.
Если ПО нужен именно модем и оно проверяет, есть ли связь, можно его обмануть, замкнув управляющие линии на своём же порту (RTS+CTS; DTR+DCR+DCD). Программа будет «думать», что соединение и аппаратное управление потоком данных есть.
Этот кабель только решает проблемы совместимости, по качеству связи он ничем не лучше предыдущего: при любой ошибке соединения связь разорвётся без видимой причины.
В этом кабеле линии RTS замкнут на свой же CTS и соединён с чужим DCD, а DTR — с чужим DSR. С соответствующим ПО такой кабель позволяет связь на высоких частотах — до 115 килобод. Но из-за нестандартной разводки требуется особое ПО.
Этот кабель также позволяет высокие скорости; именно эта разводка указана в таблице и на рисунке.
Для управления устройствами Cisco существовала разводка Yost, с COM-порта на 8P8C.[3] Она интересна тем, что в нуль-модемном кабеле (с 8P8C на 8P8C) контакты обжимаются в обратном порядке: 1…8 на одном конце с 8…1 на другом.[4] Кабели заводского производства часто делаются не из витой пары, а из плоского шлейфа и этим отличаются от сетевых патч-кордов.
Изначальное применение нуль-модемного кабеля — соединение двух терминалов (телетайпов) напрямую без модема. Если устройствам для соединения нужен модем, а в действительности они стоят рядом, применялся нуль-модемный кабель.
В 1980-е и 1990-е годы нуль-модемный кабель широко использовался как дешёвая альтернатива локальной сети: сетевые адаптеры были недёшевы, COM-порты были у любого компьютера, а покупка или изготовление нуль-модемного кабеля обходились недорого. В последние версии MS-DOS входила программа INTERLNK
; Norton Commander мог не только передавать файлы, но и «склонировать» себя на другой компьютер по нуль-модему. Многие из DOS-игр того времени (Grand Prix 2, Doom, WarCraft II, Duke Nukem 3D…) поддерживали связь и через COM-порты. «Контроллер удалённого доступа» Windows позволял соединение через нуль-модем по любому из доступных сетевых протоколов, поэтому Windows-играм достаточно было поддерживать IPX или TCP/IP. С удешевлением Ethernet отпала необходимость в применении нуль-модемной связи для организации локальных сетей.
Сейчас нуль-модемная связь применяется для отладки ядер ОС — из-за простоты драйвера. Это могут делать, например, KGDB для Linux, ddb для BSD и WinDbg для Windows. К тому же современные ОС устроены так, что графическая оболочка монопольно захватывает экран и клавиатуру — поэтому, если ОС «вылетит» с аварийным экраном, отладчик не сможет их затребовать, но останется возможность передать аварийную информацию через кабель.
Безмониторные устройства (коммутаторы, маршрутизаторы, стоечные серверы, разного рода встраиваемые контроллеры) могут администрироваться, в том числе, и по RS-232. В некоторых устройствах для соединения с компьютерным COM-портом требуется преобразователь напряжений — выдаются обычные для электроники ТТЛ-уровни.
В Unix есть виртуальные нуль-модемные соединения (псевдотерминал, pty), позволяющие соединять консоли на разных компьютерах через любой доступный канал связи. В DOSBox также есть эмуляция нуль-модемного соединения — для «последовательной» игры через сеть. Стоит заметить, что игра через интернет не всегда возможна — часто сетевые подсистемы старых игр рассчитывали на низкий пинг.
Нуль-модемный кабель.