Сеть — инструмент взаимодействия компьютерных платформ в широком смысле этого слова. Коммуникации начинаются на уровне интерфейсов (network interface controller, NIC), продолжаются в среде передачи данных с помощью сетевого оборудования, формирующего ту или иную топологию. Сказанное только приближает нас к пониманию сетевой модели OSI и хорошо отображает проблематику построения коммуникационных систем и аппаратного взаимодействия внутри них. Рассмотрим ряд примеров, иллюстрирующих прикладное интернет-взаимодействие.
Управление удаленными платформами
Доступ к операционным системам, выполняемым на удаленных платформах, является одной из самых востребованных функций. Хрестоматийный пример — управление разнородными средами через защищенное соединение SSH (Secure Shell).
Означенная аббревиатура — просто сетевой протокол прикладного (L7, наивысшего в модели OSI) уровня. Его глобальная задача — обеспечить туннель для TCP-соединения, по которому формируется управление удаленной платформой и доступ к ее ресурсам. Это возможно только в том случае, когда удаленный сервер принимает SSH-подключения, т.е. мониторит состояние своего сетевого порта («слушает порт»). Для данного типа соединений — это порт 22, номер которого зарегистрирован организацией IANA (Internet Assigned Numbers Authority) в качестве системного.
Порт для импортно-экспортных операций
Если бы в компьютерных сетях не было концепции сетевых портов, ее стоило бы изобрести. Ведь в развитии коммуникаций неизбежно наступает момент, когда два хоста начинают обмен данными между собой, и для этого им требуется программные объекты, способные идентифицировать метод отправки и получения данных.
В процессе создания интернет такими объектами оказались порты, задействованные в недействительном ныне протоколе NCP. Передача с их использованием велась в полудуплексном режиме, чего на первых портах казалось вполне достаточно. Основоположники «всемирной паутины» Роберт Кан и Винтон Серф, опираясь на NCP, разработали TCP/IP — сетевую модель, востребованную по сей день.
Кстати, в рамках протоколов TCP и UDP для установки соединения нужен только один порт, что сделало чётные номера на некоторое время атавизмом — даже сегодня некоторых из них нет в диапазоне общеизвестных. Общее же количество сетевых портов связано с ограничением 16-битной адресации. Все порты разделены на три непересекающихся диапазона:
- Системные (0—1023)
- Пользовательские (1024—49151)
- Динамические или частные (49152—65535)
Итак, что такое коммуникационный порт — сущность, возникающая на четвертом (транспортном) уровне сетевой модели OSI? Хотя это не что иное, как, по сути, еще один сетевой адрес, наилучшим определением будет ему следующее: «сетевой порт — это идентификатор процесса, выполняемого приложением в рамках операционной системы отдельно взятой платформы».
Всемирная паутина
Одной из самых востребованных сетевых реализаций является гипертекстовое представление в интернет. Доступ к нему в окне броузера становится возможным, благодаря работе веб-сервера как приложения операционной системы. Это может быть IIS от Microsoft или Apache-сервер в Unix-среде.
Узел пользователя получает доступ к веб-ресурсам с помощью протокола передачи гипертекста (HTTP) либо его защищенной версии — HTTPS. Гипертекстовый протокол представляет собой набор правил для обмена текстом, графическими изображениями, звуком и видео по интернету. HTTPS обеспечивает поддержку шифрования и служб аутентификации с использованием протокола уровня защищенных сокетов (SSL) или более нового протокола защиты транспортного уровня (TLS). HTTP обращается к веб-серверу через порт 80, а HTTPS работает через порт 443.
Путь к веб-серверу строится с помощью сервера доменных имен (DNS), который преобразует URL-имя интернет-ресурса, известного пользователю, в числовой IP-адрес. Взаимно однозначное соответствие этих адресов обеспечивается сервисом доменных имен — DNS. Забота о поддержке доменных имен лежит на регистраторах, в обязанности которых входит обслуживание, как минимум двух DNS-серверов, работающих на разных узлах всемирной паутины.
Забота о контенте веб-сервера лежит на веб-мастерах. Кроме систем управления (CMS), они используют средства удаленного доступа к веб-ресурсам. Еще недавно повсеместно таковым было применение FTP (File Transfer Protocol) — стандартного протокола, обеспечивающего передачу файлов по TCP-сетям с подключением по 21-й порту. FTP-загрузка позволяет наполнять каталоги веб-сервера изображениями, сетевыми страницами, документами в PDF-формате. Для этого на локальным компьютере веб-мастера должен быть проинсталлирован и настроен FTP-клиент.
Коммуникации по протоколу FTP между клиентом и хостинговой платформой предполагают установку двух коннектов: управляющего соединений для обмена сообщениями и соединение для передачи данных (файлов). Первое из них инициирует TCP-соединение с динамического порта локального компьютера к 21-му порту на удаленном сервере для аутентификации с помощью логина и пароля. Дальнейший сценарий зависит от выбора режима передачи файлов. Возможны два варианта взаимодействия: активный и пассивный (Passive Release).
- В активном режиме клиент сообщает серверу номер своего порта (из динамического диапазона 1024-65535), чтобы сервер мог установить соединения для передачи данных. FTP-сервер подключается к заданному номеру порта клиента, используя 20-й порт TCP для передачи данных.
- В пассивном режиме сервер сообщает номер TCP-порта (из динамического диапазона 1024-65535), к которому следует подключиться клиенту для установки соединения и последующей передачи данных.
Главное отличие наиболее востребованного режима Passive Release от его активного варианта — распределение ролей, инициирующих соединение для передачи данных. В активном режиме обязанности открыть соединение лежат на FTP-сервере. В пассивном режиме забота клиента состоит в том, чтобы распознать номер динамического порта веб-сервера, полученный в 21-м порту, через который будет осуществляться обмен данными.
На сегодня использование FTP-протокола в открытых сетях считается небезопасным, поэтому вместо него рекомендуется устанавливать защищенные соединения следующими средствами:
- Защищенный протокол передачи файлов (FTPS) — клиент FTP может запросить сеанс передачи файлов с шифрованием с помощью TLS, файловый сервер может принять или отклонить запрос.
- Протокол передачи файлов поверх SSH (SFTP) — SFTP является расширением протокола Secure Shell (SSH) и может использоваться для создания защищенного сеанса передачи файлов.
- Протокол защищенного копирования (SCP) — SCP также использует SSH для защищенной передачи файлов.