Сравнение мультиплексирования и трансляции
Мультиплексирование состоит в установке нескольких дополнительных стеков протоколов на одной из конечных машин, участвующих во взаимодействии. Компьютер с несколькими стеками протоколов использует для взаимодействия с другим компьютером тот стек или тот протокол, который понимает этот компьютер, то есть выбирает язык, понятный его собеседнику. При мультиплексировании протоколов реализуется отношение "один-ко-многим", то есть один клиент с дополнительным стеком может обращаться ко всем серверам, поддерживающим этот стек, или один сервер с дополнительным стеком может предоставлять услуги многим клиентам.
Стеки могут мультиплексироваться как целиком, так и по частям, протоколами отдельных уровней. Хотя в стандартной модели взаимодействия открытых систем OSI определено семь уровней, коммуникационные средства реальных систем обычно подразделяются на три уровня. Нижний уровень составляют драйверы сетевых адаптеров, реализующие функции канального уровня модели OSI, на среднем уровне работают так называемые транспортные средства, выполняющие функции сетевого и транспортного уровней. Верхний уровень образуют серверы и редиректоры, выполняющие функции сеансового, представительного и прикладного уровней модели OSI.
Если в системе предусматривается мультиплексирование средств каждого из трех уровней, то диалог между компьютерами может поддерживаться, например, протоколом SMB на верхнем уровне, протоколами TCP и IP на транспортном уровне и протоколом Ethernet на нижнем уровне. Для организации связей между различными протоколами на каждом уровне вводится дополнительная компонента, называемая мультиплексором или менеджером протоколов. Мультиплексор осуществляет соединение между парами протоколов двух соседних уровней в зависимости от потребностей приложений (заметим, что на верхнем уровне мультиплексор соединяет приложение с различными редиректорами).
Для того, чтобы та или иная компонента могла быть использована в режиме мультиплексирования, она должна быть написана в соответствии с определенными соглашениями, то есть поддерживать требуемый интерфейс с мультиплексором. Сам мультиплексор должен поддерживать два, в общем случае разных, интерфейса - с нижележащими и вышележащими компонентами.
Другой способ организации совместной работы двух разных сетей состоит в выделении специального элемента сети - шлюза, в котором установлены оба согласуемых стека протоколов. Шлюз транслирует один стек протоколов в другой для всех нуждающихся в этом приложений, то есть выступает переводчиком для компьютеров, использующих разные языки общения. Как и обычный перевод, трансляция протоколов - это сложная эвристическая процедура, так как не всегда имеется явное соответствие между типами сообщений разных протоколов. Ключевым моментом трансляции является согласование разных систем адресации ресурсов, принятых в различных сетях. Шлюз обычно решает эту проблему за счет привлечения символьных имен ресурсов, используемых протоколом прикладного уровня при установлении соединения клиента с сервером.
Шлюз реализует взаимодействие "многие-ко-многим", то есть все клиенты сервера, на котором установлен шлюз, могут обращаться с запросами ко всем серверам в другой сети.
Каждый из названных подходов имеет свои достоинства и недостатки.
К достоинствам шлюзов относится то, что при их использовании в сеть вносятся минимальные изменения - дополнительное программное обеспечение устанавливается только на одном из серверов, а клиентские станции остаются без каких-либо изменений. Полностью сохраняется привычная пользовательская среда.
При мультиплексировании протоколов дополнительное программное обеспечение - соответствующие стеки протоколов - должно быть установлено либо на каждую клиентскую машину, которой может потребоваться доступ к серверам другой сети, либо на каждый сервер, к который предполагается использовать для обслуживания клиентов из другой сети. В Windows NT имеются средства борьбы с избыточностью, свойственной этому подходу - операционная система может быть сконфигурирована для работы с несколькими стеками протоколов, но динамически можно загрузить только те, которые сейчас нужны.
В принципе, при работе с несколькими стеками протоколов у пользователя может возникнуть проблема работы в незнакомой среде, с незнакомыми командами, правилами и методами адресации. В Windows NT сделана попытка в какой-то степени облегчить жизнь пользователю в этой ситуации. Независимо от используемого протокола прикладного уровня (например, Microsoft SMB или Novell NCP) ему предоставляется один и тот же интуитивный графический интерфейс, с помощью которого он просматривает и выбирает нужные удаленные ресурсы. Однако, некоторые сервисы пока еще не охвачены этим универсальным средством: большинство сервисов стека TCP/IP - ftp, tftp, r*, ping и другие - используют режим командной строки. Пользователь должен выучить названия команд, их синтаксис и значения многочисленных ключей. Telnet - еще один сервис стека TCP/IP - использует для диалога собственный графический интерфейс, поскольку по своей природе эмуляция терминала значительно отличается от файлового сервиса.
Как и всякий централизованный ресурс, шлюз снижает надежность сети. С другой стороны, централизация облегчает контроль доступа пользователей к "чужой" сети, диагностику и обработку ошибочных ситуаций.
Шлюз является более медленным средством по сравнению с переключаемыми стеками протоколов. Во-первых, из-за относительно больших затрат времени на собственно процедуру трансляции, а, во-вторых, из-за задержек запросов в очереди к разделяемому всеми клиентами шлюзу. Это делает шлюз плохо масштабируемым решением. Трансляция протоколов в шлюзе замедляет доступ к серверу NetWare по сравнению с доступом через редиректор клиента. При тестировании замедление в малозагруженном шлюзе составило от 10% до 15%.