Нуль-модем — это метод связи для прямого соединения двух DTE ( компьютер , терминал , принтер и т. д.) с помощью последовательного кабеля RS-232 . Название происходит от исторического использования кабелей RS-232 для соединения двух телетайпов или двух модемов для связи друг с другом; нуль-модемная связь относится к использованию перекрестного кабеля RS-232 для прямого соединения телетайпов друг с другом без модемов. Он также используется для последовательного соединения компьютера с принтером, поскольку оба являются DTE , и известен как кабель принтера .
Стандарт RS-232 асимметричен в отношении определений двух концов линии связи, предполагая, что один конец — это DTE , а другой — DCE , например, модем . При нуль-модемном соединении линии передачи и приема перекрестно связаны. В зависимости от цели иногда также перекрестно связаны одна или несколько линий квитирования . Используются несколько схем разводки, поскольку нуль-модемное соединение не покрывается стандартом RS-232.
Первоначально стандарт RS-232 был разработан и использовался для телетайпов , которые могли общаться друг с другом по телефонным линиям. Каждый телетайп был физически подключен к своему модему через соединение RS-232, и модемы могли звонить друг другу, чтобы установить удаленное соединение между телетайпами. Если пользователь хотел соединить два телетайпа напрямую без модемов (нуль-модем), то он мог связать соединения. Термин нуль-модем может также относиться к самому кабелю или адаптеру, а также к методу подключения. [1] Нуль-модемные кабели были популярным методом передачи данных между ранними персональными компьютерами с 1980-х до начала 1990-х годов.
Нуль-модемный кабель — это последовательный кабель RS-232, в котором линии передачи и приема соединены перекрестно. В некоторых кабелях также соединены перекрестно линии квитирования. Во многих ситуациях используется прямой последовательный кабель вместе с нуль-модемным адаптером . Адаптер содержит необходимые перекрестные связи между сигналами. [2] [3]
Ниже приведена очень распространенная схема подключения нуль-модемного кабеля для соединения двух DTE (например, двух ПК), обеспечивающая полное подтверждение связи, которое работает с программным обеспечением, полагаясь на правильное подтверждение сигнала обнаружения несущей данных (DCD): [2]
Первоначальное применение нуль-модема заключалось в прямом соединении двух терминалов телетайпа без использования модемов. Поскольку стандарт RS-232 был принят другими типами оборудования, разработчикам нужно было решить, будут ли их устройства иметь интерфейсы типа DTE или DCE. Когда приложение требовало, чтобы два DTE (или два DCE) взаимодействовали друг с другом, то был необходим нуль-модем. [4]
Нуль-модемы обычно использовались для передачи файлов между компьютерами или удаленной работы. В операционной системе Microsoft Windows прямое кабельное соединение может использоваться через нуль-модемное соединение. Более поздние версии MS-DOS поставлялись с программой InterLnk . Обе части программного обеспечения позволяют отображать жесткий диск на одном компьютере как сетевой диск на другом компьютере. Для этого не требуется никакого оборудования Ethernet (такого как сетевая карта или модем). [5] На компьютере Amiga нуль-модемное соединение было обычным способом игры в многопользовательские игры между двумя машинами.
Популярность и доступность более быстрых систем обмена информацией, таких как Ethernet, сделали использование нуль-модемных кабелей менее распространенным. В современных системах такой кабель все еще может быть полезен для разработки режима ядра , поскольку он позволяет пользователю удаленно отлаживать ядро с минимальным количеством драйверов устройств и кода (последовательный драйвер в основном состоит из двух буферов FIFO и процедуры обслуживания прерываний ). KGDB для Linux , ddb для BSD и WinDbg или KD для Windows могут использоваться для удаленной отладки систем, например. Это также может предоставить последовательную консоль, через которую отладчик ядра может быть сброшен в случае паники ядра, в этом случае локальный монитор и клавиатура могут быть больше не доступны ( графический интерфейс резервирует эти ресурсы, и сброс к отладчику в случае паники не освободит их).
Другой контекст, в котором эти кабели могут быть полезны, — это администрирование «безголовых» устройств, предоставляющих последовательную консоль администрирования (т. е. управляемые коммутаторы, стоечные серверные блоки и различные встроенные системы). Примером встроенных систем, которые широко используют нуль-модемы для удаленного мониторинга, являются RTU , контроллеры устройств и интеллектуальные сенсорные устройства. Эти устройства, как правило, находятся в непосредственной близости и подходят для краткосрочной последовательной связи через такие протоколы, как DNP3 , Modbus и другие варианты IEC. Электро-, нефтегазовые и водные коммунальные службы медленно реагируют на новые сетевые технологии, что может быть связано с большими инвестициями в капитальное оборудование, срок службы которого измеряется десятилетиями. Последовательные порты и нуль-модемные кабели по-прежнему широко используются в этих отраслях, а Ethernet медленно становится широкодоступной опцией.
Для соединения двух устройств DTE вместе требуется нуль-модем, который действует как DCE между устройствами, меняя местами соответствующие сигналы (TD-RD, DTR-DSR и RTS-CTS). Это можно сделать с помощью отдельного устройства и двух кабелей или с помощью кабеля, подключенного для этого. Если устройствам требуется обнаружение несущей, его можно смоделировать, подключив DSR и DCD внутри разъема, таким образом получая CD из удаленного сигнала DTR. Одной из особенностей стандарта Yost является то, что нуль-модемный кабель является « перевернутым кабелем », который просто меняет местами контакты с 1 по 8 на одном конце на контакты с 8 по 1 на другом конце. [1]
Самый простой тип последовательного кабеля не имеет аппаратного квитирования. Этот кабель имеет только подключенные провода данных и сигнального заземления. Все остальные контакты не имеют соединения. При использовании этого типа кабеля управление потоком должно быть реализовано в программном обеспечении. Использование этого кабеля ограничено трафиком данных только на его перекрестно соединенных линиях Rx и Tx. Этот кабель также может использоваться в устройствах, которым не нужны или которые не используют сигналы управления модемом. [1]
Из-за проблем совместимости и потенциальных проблем с простым нуль-модемным кабелем было разработано решение, позволяющее обмануть программное обеспечение, заставив его думать, что доступно квитирование. Однако вывод кабеля просто зацикливается и физически не поддерживает аппаратное управление потоком. [1]
Этот кабель можно было использовать с большим количеством программного обеспечения, но у него не было фактических улучшений по сравнению с его предшественником. Программное обеспечение работало, думая, что у него есть аппаратное управление потоком, но могло внезапно остановиться при достижении более высоких скоростей и без какой-либо идентифицируемой причины.
В этом кабеле линии управления потоком по-прежнему закольцованы обратно к устройству. Однако они сделаны таким образом, что по-прежнему разрешают управление потоком Request To Send (RTS) и Clear To Send (CTS), но не имеют фактической функциональности. Единственный способ, которым сигнал управления потоком достигнет другого устройства, — это если противоположное устройство проверит сигнал Carrier Detect (CD) (на контакте 1 кабеля DE-9 и контакте 8 кабеля DB-25). В результате только специально разработанное программное обеспечение может использовать это частичное квитирование. Программное управление потоком по-прежнему работает с этим кабелем. [1]
Этот кабель несовместим с аппаратным управлением потоком предыдущих типов кабелей из-за перекрещивания его контактов RTS/CTS. С подходящим программным обеспечением кабель способен развивать гораздо более высокие скорости, чем его предшественники. Он также поддерживает программное управление потоком. [1]
Виртуальный нуль-модем — это метод связи для прямого соединения двух компьютерных приложений с помощью виртуального последовательного порта . В отличие от нуль-модемного кабеля, виртуальный нуль-модем — это программное решение, которое эмулирует аппаратный нуль-модем в компьютере. [6] [7] Все функции аппаратного нуль-модема доступны и в виртуальном нуль-модеме. В этом есть некоторые преимущества:
Например, DOSBox позволял старым играм DOS использовать виртуальные нуль-модемы.
Другой распространенный пример — псевдотерминалы Unix (pty), которые представляют стандартный интерфейс tty для пользовательских приложений, включая виртуальные последовательные элементы управления. Два таких pty могут быть легко связаны вместе приложением для формирования виртуального нуль-модемного пути связи.