Сетевые протоколы передачи данных — что это такое и какие бывают

Виртуальная машина
бесплатно навсегда

Забрать

Статья

Время чтения

17 минут

Итак, вы нашли полезную статью на Хабре и решили переслать ее коллеге. Перешли в мессенджер, прикрепили ссылку в чат и нажали «Отправить». Вуаля! Порция знаний уже ждет своего адресата. Все просто. Или не совсем? 


Давайте разберемся, по каким законам работает интернет: что позволяет нам отправлять данные по сети и не сомневаться, что та самая статья окажется у правильного получателя в оптимальные сроки.

Что такое сетевой протокол

Людям для общения нужен язык. Он может быть вербальным, то есть использующим речь, или невербальным — построенным на взаимодействии без использования слов. Но даже если не принимать язык тела во внимание, согласно данным наиболее известного справочника по языкам Ethnologue, в мире насчитывается 7 151 язык.

Похожая история с общением сетевых устройств с разными характеристиками, особенностями и предназначением. Наладить простую и единообразную коммуникацию между ноутбуками и телефонами, модемами и роутерами, компонентами умного дома и камерами видеонаблюдения не всегда легко. Тут в дело и вступают сетевые протоколы. Сегодня существуют сотни их разновидностей, предназначенных для решения самых разных задач.


Сетевой протокол — комплекс стандартов для управления взаимодействием между разными сетевыми устройствами. Принятие этих стандартов и следование им помогает нашим компьютерам, смартфонам и прочей умной технике обмениваться данными корректно и без потерь.


Впервые принципы обмена информацией между открытыми системами были описаны в абстрактной модели OSI. Она продемонстрировала весь процесс обмена данными — от их передачи по кабелям и проводам как физических объектов до представления пользователю в виде веб-страниц браузера.

Модель OSI — эталон взаимодействия устройств в сети

У истоков цифровой эры лежит иерархическая модель OSI. Ее разработка стартовала больше полувека назад — в 1977 году, когда возникла потребность в удобном инструменте для управления общением между открытыми устройствами от различных производителей и по разным сетям.


Open Systems Interconnection model — концепция, поэтапно описывающая то, как устройства в локальных и глобальных сетях обмениваются данными.


Полностью модель OSI была доработана только в 1984 году. Авторы модели — группа инженеров из Международной организации по стандартизации (ISO) — опубликовали ее как стандарт ISO 7498. Они положили в его основу принцип разделения процесса коммуникации в сети на семь ключевых подпроцессов.

Семь слоев «пирога» OSI

Семь слоев «пирога» OSI

Каждый из слоев в модели выполняет конкретную задачу: 

  1. Первый слой посвящен работе с физическими объектами — током, светом, радиоволнами. На нем происходит их кодирование и декодирование в носителях — проводах и кабелях.

  2. Контроль цельности данных и исправление ошибок ведется на втором канальном слое. Здесь информация форматируется в кадры, проверяется на полноту и корректность и адресуется. 

  3. На третьем слое идет маршрутизация данных и их отправка в пакетном виде по IP-адресам

  4. На четвертом слое происходит передача данных

  5. За установку и поддержание сессии (сеанса) связи отвечают правила сеансового пятого слоя. На нем проверяется, всего ли хватает для соединения.

  6. Представление переданных данных происходит на шестом презентационном слое.

  7. На прикладном слое к делу подключается перечень графических интерфейсов, благодаря которым пользователь получает сообщение в удобном и понятном виде. 

В 2024 семиуровневый образец считается устаревшим. Однако он стал смысловым фундаментом стека TCP/IP, на котором сегодня основана работа большинства устройств в интернете.

Модель TCP/IP — основа работы интернета

Группа протоколов TCP/IP отправляет данные по сети, формируя их в пакеты и контролируя доставку. 


Transmission Control Protocol/Internet Protocol — комплексная модель передачи цифровых данных по сети. 



TCP/IP объединяет слои 5-7 OSI в один прикладной уровень, а слои 1-2 OSI в уровень сетевого интерфейса

TCP/IP объединяет слои 5-7 OSI в один прикладной уровень, а слои 1-2 OSI в уровень сетевого интерфейса

TCP/IP проще OSI, она содержит всего четыре слоя:

  • на канальном слое данные бьются на части (фреймы) и передаются между устройствами с помощью MAC-адресов;

  • на межсетевом слое идет маршрутизация данных — они делятся на пакеты и направляются по маршрутизаторам и коммутаторам на IP-адреса устройств-получателей;

  • далее происходит передача данных — либо медленнее, но гарантированно в целости по протоколу TCP, либо быстрее, но с возможными упущениями по UPD;

  • на самом верхнем слое налаживается связь между приложениями, помогая пользователям посылать электронные письма, пользоваться браузерами или отправлять друг другу те самые статьи с Хабра.

Помимо TCP и IP в модели задействованы и другие популярные протоколы. Все они участвуют в процессе на разных слоях и нацелены на решение разных задач. 

Важно отметить, что для всех протоколов приняты специальные серии документов — Request for Comments (RFC). Они включают в себя официальные спецификации этих протоколов, а также рекомендации, методологии и различные технические руководства. Каждая из таких серий имеет уникальный номер, под которым цитируется и к которому можно обратиться.

Протоколы сетевого уровня

Сетевые протоколы — это набор правил и стандартов, которые определяют, как данные форматируются, передаются, обрабатываются и принимаются между различными устройствами по сети. 


С помощью сетевых протоколов устройства с различными архитектурами и операционными системами взаимодействуют друг с другом. Они могут работать как на одном слое OSI, так и на нескольких одновременно, но так или иначе отвечают за корректный ход маршрутизации данных. 


Маршрутизация — это процесс определения пути в сети, по которому будут передаваться данные от отправителя к получателю. Он включает в себя выбор оптимального из всех возможных маршрута, доступного для достижения конечного узла.



Примерно так выглядит процесс маршрутизации данных по сети

Примерно так выглядит процесс маршрутизации данных по сети

За анализ заголовков пакетов данных и принятие решений о направлении их передачи отвечают маршрутизаторы (Routers). Для хранения информации о доступных путях и правилах доставки пакетов к определенным сетевым адресам они используют таблицы маршрутизации, которые могут быть либо сконфигурированы вручную, либо сформированы автоматически с помощью протоколов динамической маршрутизации.

Динамические протоколы маршрутизации нужны, чтобы упростить управление большим количеством устройств, гарантировать отказоустойчивость сети за счет возможности автоматического переключения между несколькими сетевыми каналами.

Динамическая маршрутизация может быть настроена с использованием различных сетевых протоколов, каждый из которых имеет свои особенности и применяется в зависимости от требований к сети — RIP, OSPF, BGP, EIGRP и другие. 

Давайте рассмотрим наиболее популярные протоколы сетевого, транспортного и прикладного уровней.

Internet Protocol (IP) и IP-адреса

Internet Protocol — протокол, который гарантирует, что нужные данные доберутся до нужного устройства. Для этого он связывает устройства в сети и нарезает данные для пакетной отправки по IP-адресам. 


Есть два вида действующих версий протокола IP– IPv4 (IP version 4) и IPv6 (IP version 6). 

  • Протокол IPv4 назначает 32-битные адреса, которые состоят из четырех блоков (октета) чисел от 0 до 255 и хороши своей простотой. 

  • В IPv6 для создания адресной маршрутизации используются 128-битные адреса, состоящие из восьми блоков, в каждый из которых записывается четыре 16-ричных цифры. Этот протокол имеет уйму преимуществ и один ключевой недостаток — сложность сетевого администрирования. 

В Cloud.ru доступны оба вида IP-адресов, но IPv4 используется чаще благодаря своей простоте. 

img
В версии IPv4 используются 32-разрядные адреса, а в IPv6 – 128-разрядные

ICMP — протокол управляющих сообщений

Протокол ICMP базируется на протоколе IP и отвечает за передачу данных с помощью служебных сообщений между узлами сети.


Internet Control Message Protocol — протокол сетевого уровня, который нужен для уведомления об ошибках или при возникновении непредвиденных ситуаций при передаче данных. 


Проще говоря, главное, для чего нужен ICMP — способность быстро сообщить о проблеме. Например, если IP-пакет был поврежден или не достиг точки назначения, то с помощью этого протокола система об этом узнает.



OSPF — протокол маршрутизации состояния канала

Open Shortest Path First, или протокол кратчайшего пути, отвечает за внутреннюю динамическую маршрутизацию. Он следит за состоянием канала и с помощью алгоритма Дейкстры находит оптимальный путь передачи данных. 


OSPF часто используется в сложных сетях, состоящих из нескольких подсетей. Он помогает упростить их администрирование и оптимизировать трафик.

Протоколы транспортного уровня

Если на межсетевом уровне для данных прокладывается маршрут, то сама их передача идет уже на транспортном уровне. И здесь в дело вступают протоколы TCP, UDP, SCTP и RTP. 

TCP — протокол обмена сообщениями в интернете

Протокол TCP отвечает за то, чтобы данные дошли от отправителя до получателя в целости и сохранности. 


Transmission Control Protocol — протокол управления передачей. Он следит, чтобы данные гарантированно дошли до получателя в целости. 


Работает он так: когда сервер отправляет пакет данных, TCP делает запрос на устройство-получатель, проверяя, как прошла доставка: 

  • если доставка пакета данных была успешной, TCP отправляет следующую порцию;

  • если нет, то повторяет отправку. 

TCP предпочтителен в тех случаях, когда надежность соединения важнее скорости передачи данных.


UDP — аналог TCP с отличиями в поведении

Если же вам нужно гарантировать быструю передачу данных и при этом потеря их части не кажется такой уж большой бедой, стоит использовать протокол UDP.


User Datagram Protocol — протокол передачи пользовательских датаграмм, который не гарантирует доставку всех пакетов данных получателю, но обеспечивает высокую скорость их передачи.


Работает UDP, собирая данные в пакеты и выдавая этим пакетам собственную информацию в заголовки. Эти заголовки состоят всего из четырех полей: номера порта источника и порта назначения, а также длины сообщения и контрольной суммы.


img
Структура заголовка в протоколе UDP

UDP используется в приложениях, которые работают в реальном времени, потому что для них задержка данных может стать проблемой. Также UDP нужен для связи без установки соединения: например, в онлайн-играх, голосовых и видеоконференциях. То есть в тех случаях, когда устройству нужно поспевать за эфиром, но не критично потерять отдельные пакеты данных.

Еще UDP часто используется при организации DOS и DDoS-атак, потому что не требует от сервера подтверждения для доставки на него запросов. Стандартная атака в таком случае выглядит как отправка множества датаграмм, которые серверу приходится обрабатывать, затрачивая свои вычислительные мощности. А чтобы защититься от них, на помощь приходит уже другой протокол — SCTP.

SCTP — протокол управления потоком

Для надежной передачи данных, обеспечения многопоточности и защиты от DDoS-атак был разработан протокол SCTP. Он взял лучшее от TCP и UDP, одновременно позволяя устанавливать соединение с сервером и передавать данные сообщениями.


Stream Control Transmission Protocol — протокол транспортного уровня, работающий по аналогии с TCP и UDP, но обеспечивающий при этом многопоточность, защиту от DDoS-атак и синхронное соединение между двумя хостами по двум и более независимым физическим каналам.


SCTP все еще используется реже, чем TCP. Но у него есть ряд достоинств: 

  • Многопоточность. С помощью SCTP можно обеспечить параллельную обработку информации, одновременно передавая данные разным группам людей; 

  • Multi-homing. Еще с SCTP не нужно волноваться о том, что связь оборвется, ведь при использовании этого протокола система автоматически переключится на другой канал, если основной вдруг перестанет работать.

  • Защита от DDoS. SCTP защищен от подобных атак с помощью механизма четырехэтапного рукопожатия (four-way handshake) и вводом маркера (cookie), что надежно защищает от атак типа SYN-flood.

Протоколы прикладного уровня

Взаимодействие между человеком и сетью обеспечивается с помощью сетевых протоколов прикладного уровня. Их очень много, и все они выполняют разные задачи. Работа с ними входит в специализацию разработчиков и практически не затрагивает сетевых инженеров, которым, впрочем, тоже важно понимать, как формируются данные и инкапсулируются в нижние уровни. 

Практически во всех приложениях, так или иначе, задействуются протоколы прикладного уровня для предоставления услуг пользователю или для обмена данными с устройствами с нижестоящих уровней по уже существующим соединениям.

BGP — основной протокол динамической маршрутизации

BGP относится к протоколам прикладного уровня и работает поверх протокола транспортного уровня TCP (порт 179). 


Border Gateway Protocol — протокол пограничного шлюза, который предоставляет динамическую маршрутизацию. Он нужен для обмена данными внутри автономных систем.



img
BGP обеспечивает передачу маршрутов между автономными системами

Проще говоря, BGP связывает в интернете автономные системы, состоящие из IP-сетей и маршрутизаторов, которыми управляет один или несколько операторов с единой политикой маршрутизации.

HTTP и HTTPS — протоколы передачи гипертекста

Всё в интернете начинается с них — HTTP и HTTPS. В каждой ссылке всемирной паутины вы обязательно их увидите: либо «http://», либо «https://». Зачем они нужны и какая между ними разница? 


Hyper Text Transfer Protocol — протокол передачи данных по схеме «запрос-ответ». Сам он состоит исключительно из текста, но способен передавать разные форматы файлов. Например, аудио, видео или текст.  


Работу этого протокола в общем виде можно представить так:

  • вы вбиваете запрос в строку поиска браузера;

  • браузер распознает его и отправляет на сервер, где лежит то, что вы ищете; 

  • с помощью специальной программы сервер «понимает» запрос, создает ответ в виде HTML с данными страницы и возвращает ответ браузеру;

  • браузер демонстрирует полученную информацию в виде страницы на экране устройства. 

Таким образом, весь процесс отправки и получения данных строится на обмене  HTTP-сообщениями: либо запросов (HTTP Requests), либо ответов (HTTP Responses). Выглядят они, как несколько строчек текста, которые содержат:  

  • начальную строку с указанием типа запроса; 

  • заголовок с уточнениями;

  • пустую строку, нужную для подтверждения отправки данных; 

  • тело HTTP-сообщения, которое может содержать связанные с запросом данные или нужный документ.

В ходе движения по сети HTTP-запрос может находиться в разных состояниях, каждому из которых соответствуют специальные трехзначные коды. Их можно разбить на смысловые группы: 


1** – Информация (Informational)

2** – Успешность выполнения (Success)

3** – Перенаправление (Redirection)

4** –  Ошибка клиента (Client Error)

5** – Ошибка сервера (Server Error)


Важно отметить, что HTTP — это незащищенный протокол. При его использовании данные передаются открыто, их легко можно перехватить. Чтобы исключить такую возможность, нужно использовать протокол HTTPS, который предоставляет защищенное соединение за счет криптографических протоколов SSL (Secure Sockets Layer) и TLS (Transport Layer Security).


HyperText Transfer Protocol Secure — гарантирующее безопасность расширение протокола HTTP, объединяющее в себе два протокола: либо HTTP и SSL, либо HTTP и TLS.



img
По данным центра сертификации Let’s Encrypt более 80% страниц в мире загружаются по HTTPS

При посещении сайтов, особенно тех, которые запрашивают чувствительную к потере информацию — например, логины, пароли, данные платежных карт — настоятельно рекомендуем использовать только HTTPS. И всегда обращать внимание на адресную строку браузера, чтобы понять, является ли защищенным ваше соединение.

img
Cloud.ru использует HTTPS – безопасный протокол передачи данных

FTP — протокол передачи данных

С серфингом в интернете разобрались. А что, если вам нужно добавить на сайт файл? Здесь на помощь приходит протокол передачи файлов FTP. 


File Transfer Protocol — протокол для передачи файлов по TCP/IP между клиентом и сервером.


Сегодня протокол FTP используется реже, потому что не способен обеспечить защищенное соединение. Вместо него все чаще применяют SFTP — протокол, работающий поверх безопасного канала и использующий SSH в качестве основы.


DNS — справочник интернета

Представляете себе старинную телефонную книгу? Такую, в которой по имени человека можно было отыскать его номер телефона. Или, наоборот, по номеру определить его владельца. Похожим образом устроен и DNS. 


Domain Name System — протокол передачи данных по сети, работающий при поддержке сети серверов. 


Как работает DNS? При входе на сайт вы вводите в браузере его имя. Например, https://cloud.ru/. А DNS уже соединяет вас с нужным ресурсом. То есть превращает 185.71.64.201 в cloud.ru. Для этого он использует свою внутреннюю «телефонную книгу» с IP-адресами сайтов, каждый из которых связан с доменным именем.

img
Принцип работы DNS

Для доступа к облачным ресурсам тоже может использоваться протокол DNS. Особенно это актуально, когда количество ресурсов постоянно растет. В этом случае с его помощью доменное имя связывается с IP-адресом виртуальной машины, объектного хранилища или базы данных. 

При работе с облачными ресурсами DNS может давать множество приятных преимуществ. Например, система доменных имен Cloud.ru позволяет пользователям гибко настраивать доменные имена в виртуальных дата-центрах сервера, быстро и безопасно получать доступ к нужным ресурсам и обрабатывать миллионы запросов одновременно. 


SSH — средство подключения к серверам

SSH — протокол, который лежит в основе сетевого администрирования и нужен для управления удаленными операционными устройствами. 


Secure Shell — сетевой протокол для удаленного управления операционной системой и туннелирования TCP-соединений. Шифрует весь трафик, включая передаваемые пароли.


Соединение по протоколу SSH проходит поэтапно:

  • сперва осуществляется открытие транспортного канала

  • затем аутентификация;

  • и уже после – подключение

Реализуется SSH соединение по схеме «клиент-сервер». Делается это с помощью демона — специальной программы, запущенной на удаленном устройстве. Демон подключается к нужному сетевому порту, проверяет запросы на подлинность и создает соответствующую среду при вводе верных учетных данных.

Устаревшие протоколы: Telnet, Gopher

Уже несколько десятилетий интернет развивается бурно и часто стихийно. Параллельно его развитию некоторые сетевые протоколы, которые еще вчера были частью обихода сетевых инженеров и разработчиков, устаревают и выходят из постоянного пользования. В их числе: 

  • Telnet — стандартный, но надежный протокол связи на базе TCP. Он позволяет передавать простые текстовые команды и таким образом управлять устройствами и их взаимодействием. Несмотря на то, что сейчас все чаще используется защищенный протокол SSH, Telnet все еще в ходу. Например, его продолжают применять при администрировании маршрутизаторов, коммутаторов и удаленных серверов. 

  • Gopher — протокол распределенного поиска и передачи документов, который стал пережитком прошлого еще в далеком 1993 году, когда ему на смену пришел HTTP. 

Кстати, в переводе с английского gopher — это суслик. А еще «курьер, мальчик на побегушках, который выполняет мелкие поручения по указанию начальства». То есть в его названии разработчики хотели передать скорость, с какой он способен передавать информацию. 

В общем виде описать Gopher можно, как FTP с текстовой оболочкой. Он позволяет размещать текстовые документы и добавлять в них ссылки на сопутствующие файлы. 

Зачем разбираться в сетевых протоколах

Протоколы пронизывают нашу реальность. Они лежат в основе работы всего интернета. Взяв на заметку принципы их работы, вы гораздо лучше поймете, как взаимосвязаны фронтенд и бэкенд, что нужно для действительно эффективной оптимизации приложений и с помощью чего можно надежно защитить данные от взлома. 

Защита данных

Знать «узкие места» на пути следования информации от отправителя к получателю важно, чтобы обеспечить защиту информации от киберугроз разных типов. С их помощью можно поддерживать комплексную безопасность всего процесса обмена данными на физическом, сетевом, инфраструктурном и организационном уровне.

Оптимизация приложения под протоколы

Комплексный анализ сетевых протоколов позволяет оптимизировать работу приложений в интернете. Так можно ускорить работу ПО и нарастить эффективность использования пропускной способности сети, устранить недостатки в алгоритме блокирования общих данных при построении приложений и снизить число неоправданных сетевых операций, комплексно доработать строение сети и многое другое. 

Прохождение собеседований

Еще знание сетевых протоколов пригодится при прохождении собеседований. Блеснув пониманием процесса сетевого взаимодействия на всех уровнях, в глазах команды нанимателя вы предстанете вдумчивым специалистом, претендующим на серьезное будущее в компании. Поэтому перед собеседованием советуем освежить в голове информацию о протоколах сетевого и транспортного уровня, а также о тех протоколах, которые задействованы на процессах защиты от кибератак.

Заключение

Знание сетевых протоколов упрощает и повышает эффективность любых действий в сети. А понимание принципов их работы позволяет управлять всем процессом разработки приложений и сервисов и их предоставления.

Содержание

  • Что такое сетевой протокол
  • Модель OSI — эталон взаимодействия устройств в сети
  • Модель TCP/IP — основа работы интернета
  • Протоколы сетевого уровня
  • Протоколы транспортного уровня
  • Протоколы прикладного уровня
  • Зачем разбираться в сетевых протоколах
  • Заключение

Вам может понравиться