Интернет – невероятно сложная система, в рамках которой объединено множество устройств, обменивающихся информацией. Эффективная, скоростная, стабильная передача данных между сетевыми компонентами, использующими различные операционные системы, возможна исключительно при соблюдении определенных правил, алгоритмов, называемых протоколами. Какими версиями они представлены? В чем их основные особенности и отличия?
Зачем нужны протоколы?
Главная функция протоколов – обеспечение стабильного обмена информацией между устройствами под управлением различных УС, утилит и программ. Без них, например, было бы невозможно установить надежную связь между смартфоном на iOS и ноутбуком на Windows.
Для большего удобства информационного обмена, процессы отправки и получения четко разделены по принципу “сервер-клиент”. Задача сервера в данной структуре сводится к приему клиентских запросов и отправке соответствующих ответов.
Какие бывают протоколы?
Протоколов множество, в каждом из них действуют особые правила и алгоритмы отправки, приема информации. Впрочем, разбор абсолютно всех версий не имеет особого смысла, слишком много среди них специализированных решений, встреча с которыми крайне маловероятно. Рациональнее углубиться в изучение только наиболее распространенных протоколов.
HTTP
К категории наиболее распространенных сетевых протоколов однозначно нужно отнести HTTP. Функционирует он по рассмотренному ранее принципу “клиент-сервер”. В каждом запросе содержатся определенные сведения, к примеру:
- Версия HTTP;
- Адрес URL;
- Заголовок.
После того, как на сервер поступает клиентский запрос, он обязан ответить на него. HTTP относится к категории наиболее ранних протоколов, созданных во времена, когда страницы были достаточно “легкими”, не содержали больших объемов информации. Сейчас он используется нечасто, причина тому – постоянно усложняющаяся архитектура страниц, из-за чего для их успешной загрузки приходится посылать огромные количества запросов и ответов, что усложняет процесс, увеличивает время ожидания.
В стандартном формате протокол HTTP передает информацию в незащищенном виде, из-за чего возникает серьезный риск ее перехвата третьими лицами, что недопустимо, если речь идет о личных данных, номерах банковских карт, паролях, кодах. Чтобы нивелировать эту уязвимость, была разработана версия HTTPS, поддерживающая алгоритмы шифрования.
HTTP/2
Протокол является усовершенствованной версией предыдущего. Основная особенность – общее соединение для обработки целого комплекса запросов. Такой алгоритм получил название “мультиплексирования”.
В HTTP/2 предусмотрена поддержка push-сервера, благодаря которому стала возможной отправка большего количества ответов на запрос клиента. Подобная технология исключает необходимость запрашивать каждый файл в отдельности. Поддержка HTTP/2 предусмотрена на большинстве браузеров, его превосходство над предыдущей версией выглядит очевидным, стабильность и скорость соединения, открытия сайтов достигается даже без сложных доработок, вроде разделения информации по доменам или задействования спрайтов.
HTTP/3
Основой для третьей генерации HTTP стал протокол QUIC, позволяющий быстро подключиться к сети посредством UDP. Эта особенность обеспечивает значимое преимущество – почти полное отсутствие задержек при установке коммутации. Для начала сеанса хватает единственного запроса, передача информации занимает минимум времени, легко открываются даже тяжелые страницы со множеством анимированных и статичных изображений, рекламных вставок.
Указанный протокол передачи пока не получил широкого распространения, однако, его сильные стороны выглядят вполне очевидными, так что разработчики браузеров активно трудятся в этом направлении.
QUIC
Выше был упомянут протокол QUIC, так что для более полного понимания работы HTTP/3 стоит рассмотреть его подробнее. Он относится к транспортной категории, создан специально для достижения соединения с минимальными задержками. Разработчиком стала компания Google, специалисты которой понимали необходимость устранения основных недостатков популярного TCP, задержек, снижающих общую производительность. Презентация состоялась в 2013 году, однако, сейчас протокол все активнее используется в разработке нового программного обеспечения не только Google, но и другими гигантами IT-индустрии, Mozilla, IETF.
Разработчикам QUIC удалось решить массу минусов, характерных для TCP:
- Автоматическое переключение соединения. Для идентификации используется персональный 64-битный шифр, сохраняющий актуальность даже в том случае, если IP-адрес пользователя меняется. Это исключает кратковременные потери связи, характерные для TCP, в особенности, если пользователь подключается к сети со смартфона.
- Оптимизация ACK. Схема нового протокола предполагает, что каждому пакету информации присваивается определенный номер, что исключает путаницу.
- Одновременная поддержка нескольких потоков. В рамках единственного соединения возможна передача целого комплекса информационных потоков, исключена потребность в создании отдельных коммутаций, что экономит ресурсы.
- Расстановка приоритетов. Протокол QUIC расставляет приоритеты потоков, ориентируясь на значимость передаваемой информации, что увеличивает скорость.
- Улучшенные алгоритмы шифрования. Для шифрования используется протокол TLS 1.3, более быстрый и стабильный, в сравнении с классической версией.
WebSockets
Особенность этого протокола – максимально быстрая установка соединения. При первом контакте подается запрос, в котором присутствуют все сведения, необходимые для дальнейшего информационного обмена. Канал связи не закрывается до тех пор, пока одна из сторон не подаст соответствующей команды, что повышает скорость.
Протокол актуален в ситуациях, когда информация должна доставляться без задержек, например, в чатах, программах обмена сообщениями, онлайн-играх.
Internet Protocol – IP
Протокол ищет устройства в сети, ориентируясь на IP-адреса, помогает сформировать маршрут, благодаря которому обмен информацией займет минимум времени.
Алгоритм предполагает отправку информации в формате IP-пакетов, у каждого из которых имеется собственный заголовок и содержимое. В качестве первого необходимо понимать IP-адреса отправителя и адресата, второго – некий набор сведений.
Принцип функционирования этого протокола сравним, к примеру, с отделением почтовой связи, принцип очень похож, только ориентирами являются не улицы, дома и квартиры, обозначенные на конвертах, а IP-адреса. Путь сообщения при этом всегда оптимизируется, зависит от состояния отдельных сетевых модулей, благодаря чему снижается вероятность потери, повреждения информационных пакетов и задержки доставки.
SMTP
Главная функция этого протокола – обмен электронной почтой. Несмотря на “почтенный” возраст, разработка датирована еще 1982 годом, он до сих пор сохраняет актуальность и остается востребованным.
Его главные функции – проверка корректности системных настроек, выдача разрешения на отправку письма, отправка и уведомление об успешной доставке либо ошибке. При передаче данных актуален следующий алгоритм:
- Указание адреса. Система проверяет, кому он принадлежит и устанавливает соединение с необходимыми службами, будь то Mail, Yandex или Google.
- Получение информации бэкендом, тему письма, его содержания, адресов получателя и отправителя.
- Поиск SMTP-серверов адресата.
Дальнейший алгоритм зависит от того, какие результаты были достигнуты при поиске. Если обнаружить сервер не удалось, либо он не отреагировал, отправляются повторные запросы. При повторных неудачах система уведомляет о сбое, отправитель получает сообщение, где раскрыт характер проблемы и ее вероятные причины.
При успешном поиске проводится дополнительная проверка подлинности отправки данных, отправляется уведомление об успешной доставке. Главное достоинство протокола SMTP – простота, однако, имеются определенные вопросы к безопасности. Чтобы исключить кражу личной информации, массовые рассылки спама, почтовые сервисы внедряют собственные защитные алгоритмы и системы.
P2P
P2P – необычный протокол, при котором происходит прямое взаимодействие ПК, подключенных к сети, без дополнительных обращений к серверам. Он часто используется для обмена файлами без посредников и точек контроля. Именно такой принцип актуален, например, для файлообменных сетей как небольшого, так и крупного масштаба, торрент-клиентов.
P2P дает возможность пользователям сохранять анонимность, данные отправляются и принимаются на хорошей скорости, однако, следует соблюдать некоторую осторожность. Отсутствие сервера – это одновременно и плюс, и минус, контроля передаваемых файлов, по сути, нет, так что есть серьезная опасность столкнуться с вредоносным, вирусным приложением, умело замаскированным хакером под безобидную программу.
DNS
Взаимодействие браузеров ведется посредством IP-адресов. При необходимости зайти на определенный сайт пользователь указывает в строке его доменное имя, например, “google.com”. DNS, то есть “domain name system”, система доменных имен, выполняет преобразование этого названия в определенный IP-адрес, в браузере открывается искомая страничка.
Похожий принцип используется, например, в приложении с контактами в смартфоне. Вряд ли кому-то удается запомнить телефонные номера всех абонентов, но такая необходимость и не предполагается. Достаточно отыскать нужное имя, нажать на клавишу вызова, система сама преобразует его в конкретный телефонный номер.
SSL/TLS
В протоколах SSL и TLS используются особые алгоритмы шифрования данных, обеспечивающие защиту информации при ее отправке и приеме. Разработка SSL датирована началом 90-х годов, TLS – 1999, так что он считается более современным и надежным.
Базовыми компонентами обоих протоколов являются:
- Шифрование. Поддерживаются симметричные и асимметричные алгоритмы, благодаря которым информация не может оказаться в распоряжении третьих лиц. Конкретная защитная технология подбирается в соответствии со скоростью передачи, особенностями соединения.
- Аутентификация. Задача протоколов – идентифицировать не только сервер, но и клиента, обращающегося к нему. Это исключает риск постороннего вмешательства, помогает системе убедиться в доверенностях сторон.
- Цифровые сертификаты. Они необходимы для успешного прохождения сервером аутентификации, за выдачу отвечает специальный сертификационный центр. В сертификате находится информация о его собственнике, а также особый ключ, позволяющий безошибочно установить подлинность.
- Протоколы, определяющие алгоритмы обмена ключами, гарантирующие безопасность процесса и исключающие риск постороннего вмешательства.
При передаче данных посредством SSL и TLS используется следующий алгоритм:
- Отправка клиентского запроса на защищенное соединение с сервером.
- Положительный ответ со стороны сервера и отправка сертификата, внутри которого находится необходимый ключ.
- Клиентская проверка сертификата, установка его подлинности.
- Генерация клиентом особого секретного ключа, который станет основой для шифровки передаваемой информации, отправка его серверу.
- Расшифровка сервером ключа и успешное его применение.
Применение протоколов SSL и TLS максимально актуально при передаче информации, попадание которой к третьим лицам чревато неприятными последствиями. Это могут быть персональные данные, сведения о банковских картах, PIN-кодах, паролях.
TCP
Протокол разработан для того, чтобы оборудование, работающее в пределах одной сети, могло максимально эффективно и быстро обмениваться сообщениями. Обмен информацией предполагает, что исходный файл дробится, передается несколькими частями и успешно собирается назад.
В качестве примера можно рассмотреть наиболее распространенную ситуацию, когда пользователь хочет перейти на определенную страницу сайта, отправляет соответствующий запрос. Ответом сервера является отправка страницы посредством протокола HTTP. Он подает запрос уровня TCP, устанавливает соединение и проводит конвертацию информации в несколько сегментов, отправляет их.
Основные особенности TCP можно представить следующим списком:
- Нумерация сегментов. TCP следит входящими и исходящими сегментами, у каждого из которых имеется индивидуальный номер, что необходимо для большей точности процесса.
- Контроль потока. Смысл этой функции – ограничение скорости отправки информации, благодаря чему повышается надежность их доставки.
- Проверка ошибок. Вся информация проверяется на целостность, что снижает вероятность сбоя вплоть до нуля.
UDP
Этот протокол можно назвать аналогом предыдущего, однако, отправка информации не предполагает пользовательское подтверждение. Это способствует увеличению скорости, однако, негативно сказывается на безопасности и стабильности.
UDP оптимально подходит для программного обеспечения, работающего в режиме реального времени, где даже небольшая задержка должна быть исключена. Характерный пример – приложения для видеосвязи, проведения конференций в online-формате, Skype или Zoom, а также многочисленные онлайн-игры.
В основу UDP заложен принцип сбора информации, объединения ее в пакеты, каждому из которых присваивается определенный заголовок, в котором фиксируются номера портов отправителя и получателя, длина и контрольная сумма.
Многим пользователям и тем более сетевым администраторам не раз доводилось слышать о термине DDOS-атака. Злоумышленники строят их именно на UDP, используя его главную особенность – отсутствие необходимости в подтверждении со стороны сервера. Это позволяет отправлять запросы сотнями и тысячами, сервер вынужден обрабатывать каждый из них, вычислительных мощностей не хватает, происходит “обрушение”.
FTP
Передача данных ведется по схеме “клиент-сервер” через два канала, командный, контролирующий процесс, и транспортный, по которому отправляется и принимается информация. В рамках FTP пользовательское устройство получает статус “локального хоста”, второе, выполняющее серверные функции – “удаленного хоста”.
В начале сеанса пользователю необходимо войти на специальный FTP-сервер, который может быть как защищенным, предполагающим авторизацию, так и анонимным, где вход в учетную запись не требуется.
После входа начинается диалог, клиент отправляет запросы на изменение файлов, хранящихся на сервере. При помощи специального клиента можно загружать файлы на сервер, скачивать их на свой ПК или ноутбук. Несмотря на то, что протокол разработан еще в 1971 году, он до сих пор остается достаточно востребованным и распространенным за счет простоты и надежности.
SSH
Аббревиатура SSH расшифровывается как “Secure Shell”, что достаточно точно характеризует протокол. Его главная функция – обеспечение стабильной связи с серверами. Он помогает пользователю сразу оказаться в учетной записи, адаптированной к выполнению определенных команд.
SSH предполагает использование специального программного обеспечения, однако, эта небольшая сложность вполне компенсируется надежностью. Если к безопасности предъявляются особо жесткие требования, то пользователь может сам создать дополнительные ключи.
Подведение итогов
Итак, для передачи данных используется огромное количество алгоритмов и технологий. Ориентироваться в них стоит не только специалистам IT-области, разработчикам, программистам, но и простым пользователям. Например, такие знания помогут понять, что не стоит вводить номер банковской карты на сайте, где для обмена информацией используется обычный HTTP, а не защищенный HTTPS. Последствия такой ошибки могут быть очень серьезными, выражаться в потере значительных денежных сумм.
Специалистам уверенная ориентация в протоколах, понимание особенностей и принципов их функционирования поможет найти оптимальное решение для конкретной задачи, например, разработки мессенджера, игры. Готовый продукт, при должном подходе к выбору, окажется максимально надежным, стабильным, востребованным у пользователей даже без дополнительных настроек и доработок.