Сетевые протоколы: базовые понятия и описание самых востребованных правил
Рассказываем о самых часто используемых правилах взаимодействия устройств в сети.
Эта инструкция — часть курса «Как работают сетевые протоколы».
Смотреть весь курс

В мире существует более 7 000 протоколов, и их число продолжает расти. Рассказываем о самых часто используемых правилах взаимодействия устройств в сети.
Понятие протокола сети
Сетевой протокол — это набор правил, определяющий принципы взаимодействия устройств в сети. Чтобы отправка и получение информации прошли успешно, все устройства-участники процесса должны принимать условия протокола и следовать им. В сети их поддержка встраивается или в аппаратную часть (в «железо»), или в программную часть (в код системы), или и туда, и туда.
Для взаимодействия протоколов между собой существует модель OSI, или Open Systems Interconnection. Дословно название переводится как «взаимодействие открытых систем».
OSI — эталонная модель взаимодействия устройств в сети
Модель OSI — это модель, позволяющая разным системам связи коммуницировать между собой по общепринятым стандартам. Ее можно сравнить с английским, то есть глобальным, универсальным языком в мире сетей.
Модель основана на принципе разделения коммуникационной системы на семь отдельных уровней. Подробнее о ней вы можете прочитать здесь.

Если в передачи информации случаются сбои, модель помогает быстрее и легче локализовать проблему на конкретном уровне и значительно ускорить процесс восстановления работоспособности системы.
Модель OSI является эталонным стандартом, но на данный момент она устарела, поскольку современные протоколы работают сразу на нескольких уровнях модели OSI. На смену модели OSI пришла модель TCP/IP, на основе которой работает большая часть устройств в современном мире.
TCP/IP — модель, на которой работает сеть Интернет
Модель TCP/IP помогает понять принцип работы и взаимодействия узлов в сети Интернет. Ее название включает в себя два основных протокола, на которых построен интернет. TCP/IP расшифровывается как Transmission Control Protocol/Internet Protocol, или протокол управления передачей (данных)/интернет-протокол.
Модель используется во всем современном интернете, новые сетевые протоколы разрабатываются с опорой на модель TCP/IP. Например, подключаясь к сайту Selectel, вы используете протоколы IP, TCP и HTTPS, которые работают в рамках упомянутой модели.

Подробнее о модели TCP/IP можно прочитать в блоге.
Далее мы рассмотрим основные протоколы межсетевого, транспортного уровней, а также уровня приложений. Именно с ними мы сталкиваемся чаще всего, анализируя какие-либо проблемы в сети или на сервере.
Протоколы транспортного уровня: краткое описание
Интернет-протокол и IP-адреса
Internet Protocol (IP) — это наиболее простой протокол, объединивший отдельные компьютеры в глобальную сеть. Главной его задачей является маршрутизация дейтаграмм — определение маршрута следования пакетов по узлам сети. Каждое устройство — ваш ПК, принтер и т.д. — имеет IP-адрес, чтобы данные попадали к нужному адресату. Так, например, отправленный на печать файл не окажется вместо принтера в личном ПК вашего коллеги.
В качестве минусов протокола можно отметить низкую надежность. Он не определяет факт передачи пакета и не контролирует целостность данных. IP просто осуществляет пересылку.
Для пересылки пакетов необходимо определить, на какой порт отправить пакет. Для этого протокол имеет свою систему адресации. В качестве адресов выступает 32-битные (IPv4) или 128-битные (IPv6) адреса. Перед отправкой пакета в него добавляются header (заголовок) и payload (данные для доставки).
IPv4 является 32-разрядной системой, состоящей из четырех разделов (123.123.123.123). Он поддерживает до 4 294 967 296 адресов и является протоколом по умолчанию. Основным его преимуществом является простота. В недостатках — ограниченное адресное пространство, также называемое «исчерпанием адресов».
IPv6, напротив, — 128-битное адресное пространство, которое обеспечивает приблизительно 2^128 степени адресов. Формат записи состоит из восьми разделов, в каждый из которых записывается четыре 16-ричных цифры. Недостаток протокола — в сложности сетевого администрирования. При аренде сервера или виртуальной машины в Selectel выдается IPv4, однако можно запросить и IPv6-адреса, в облаке на базе VMware выдаются только IPv4-адреса.
Один из основных протоколов, который работает поверх IP, — это протокол TCP, из-за чего его часто обозначают как TCP/IP. Но это не единственный протокол, который является частью интернет-протокола.
TCP — протокол обмена сообщениями в сети Интернет
TCP помогает устройствам в сети обмениваться сообщениями. Он работает на четвертом, транспортном, уровне модели OSI.
Для передачи информации происходит дробление исходного файла на части, которые передаются получателю, а далее собираются обратно. Например, человек запрашивает веб-страницу, далее сервер обрабатывает запрос и высылает в ответ HTML-страницу при помощи протокола HTTP. Он, в свою очередь, запрашивает уровень TCP для установки требуемого соединения и отправки HTML-файла. TCP конвертирует данные в блоки, передавая их на уровень TCP пользователя, где происходит подтверждение передачи.
Свойства протокола TCP:

- Система нумерации сегментов (Segment Numbering System). TCP отслеживает передаваемые или принимаемые сегменты, присваивая номера каждому из них. Байтам данных, которые должны быть переданы, присваивается определенный номер байта, в то время как сегментам присваиваются порядковые номера.
- Управление потоком. Эта функция ограничивает скорость, с которой отправитель передает данные. Это делается для обеспечения надежности доставки. Получатель постоянно сообщает отправителю о том, какой объем данных может быть получен.
- Контроль ошибок. Данная функция реализуется для повышения надежности путем проверки байтов на целостность.
- Порт источника и порт назначения. Протокол TCP использует специальные порты для связи различных протоколов. Например протокол SSH использует 22й порт, HTTP — 80, HTTPS — 443, Gopher — 70. Все порты делятся на три диапазона — общеизвестные (0—1023), зарегистрированные (1024—49151) и динамические (49152—65535).
UDP — аналог TCP: описание отличий в поведении протокола в сети
В отличие от протокола ТСР User Datagram Protocol обеспечивает передачу данных без получения подтверждения от пользователя о результате действия. Благодаря этому достигается большая скорость работы и передачи данных в ущерб надежности и безопасности.
Особенности протокола диктуют специфику его применения. Так, он подходит для приложений, например, Skype, Discord и другие, которые работают в реальном времени и где задержка передачи данных может быть проблемой. Также его предпочтительно использовать в приложениях с большим количеством подключенных клиентов — например, в играх, голосовых или видеоконференциях, а также при потоковой передаче мультимедиа.
UDP работает путем сбора данных в UDP-пакете и добавления в пакет собственной информации заголовка. Заголовок UDP включает четыре поля, объем которых составляет 2 байта каждый: номер порта источника, номер порта назначения, длина заголовка и контрольная сумма блока.

Протокол UDP любят злоумышленники при организации DDOS — или DOS-атак. Из-за того, что данный протокол не требует подтверждения от сервера, открывается возможность просто «залить» сервер запросами. Стандартная атака подразумевает отправку большого количества дейтаграмм. Это заставляет сервер отвечать на каждый из них, расходуя вычислительные мощности.
SCTP — протокол передачи управления потоком
Еще один протокол, который относится к транспортному уровню. SCTP обеспечивает надежную последовательную передачу данных. Поддерживает многоадресное соединение, когда один или оба конечных узла могут состоять из более чем одного IP-адреса. Это обеспечивает прозрачное переключение между резервными сетевыми путями.
SCTP аналогичен протоколам UDP и TCP, которые обеспечивают функции транспортного уровня для некоторых интернет-приложений. Так как преимущество протокола SCTP — в быстром переключении между интерфейсами, на него переходят только компании, для которых критична недоступность приложений. SCTP работает поверх бесконтактной пакетной сети, такой как IP, и поддерживает передачу данных в случаях с одним или несколькими IP.
RTP — транспортный протокол реального времени
Real-time Transfer Protocol — это протокол, который используется при передаче потокового аудио и видео и применяется при передаче голоса преимущественно в IP-телефонии. RTP применяется в совокупности с протоколом управления RTCP. Когда RTP транслирует медиа, RTCP применяется при анализе статистик QoS (Quality of Service) и обеспечивает синхронизацию разных потоков. RTP отправляется и принимается с помощью четных номеров портов, а RTCP использует нечетные номера.
Также протокол считают главным стандартом, применяемым при передаче аудио и видео по IP-сети. Поскольку RTP может осуществлять ее нескольким конечным адресатам одновременно при помощи многоадресной IP-рассылки.
Протоколы межсетевого уровня: краткое описание
ICMP — протокол управляющих сообщений в сети
Задача протокола — диагностика проблем при взаимодействии устройств. Он определяет, достигли ли данные места назначения или нет.
Основная цель ICMP — сообщать об ошибках. Если какие-либо данные не попали по назначению, ICMP генерирует ошибки для обмена с отправляющим устройством. Например, если объем передаваемых данных слишком велик для маршрутизатора, маршрутизатор отбросит пакет и отправит ICMP-сообщение исходному источнику данных.
Как и в случае UDP, протокол ICMP можно использовать для сетевых атак, таких как ICMP flood и ping of death, где главный прием — генерация большого количества ICMP-сообщений.
OSPF — протокол маршрутизации состояния канала сети
Open Shortest Path First используется для поиска наилучшего пути между исходным и конечным маршрутизатором. Работает на межсетевом уровне модели OSI.
После настройки OSPF будет анализировать соседние маршрутизаторы и собирать все доступные данные о состоянии канала для построения топологической карты всех доступных путей в своей сети. Затем он сохранит информацию в своей базе данных топологии, также известной как База данных состояния канала (LSDB).
На основе собранной информации он вычислит наилучший кратчайший путь к каждой доступной подсети/сети, используя алгоритм под названием Shortest Path First (SFP).
Протоколы прикладного уровня: краткое описание
FTP — протокол передачи данных в сети
FTP — это клиент-серверный протокол, который использует два канала для передачи данных: командный, управляющий процессом передачи, и транспортный, непосредственно передающий информацию. Для FTP-протокола устройство конечного пользователя называется локальным хостом, а второй компьютер — удаленным хостом, играющим роль сервера. Для работы протокола требуется его правильная настройка со стороны хоста и специальный клиент на локальном хосте.
Описание работы протокола в сети Интернет
Пользователю нужно войти на FTP-сервер. Здесь нужно учитывать, что некоторые серверы разрешают доступ к части или всем своим данным без авторизации. Это называется «анонимным FTP». При этом файлы с сервера можно будет только передавать на компьютер клиента.
Далее клиент начинает диалог с сервером — запрашивает разрешение на изменение файлов на сервере. Использую авторизованный FTP-клиент, можно скачивать файлы с сервера, отгружать их на него и выполнять другие манипуляции.
FTP-сессии работают в двух режимах — активном и пассивном:
- При активном режиме сервер после инициализации, путем вызова командного канала, открывает транспортный канал и начинает передачу данных.
- При пассивном режиме сервер при помощи командного канала отправляет клиенту данные, требующиеся для открытия канала передачи данных.
Из-за того, что клиент создает все подключения в пассивном режиме, этот протокол хорошо подходит для работы с брандмауэрами.
DNS — справочник сети Интернет
Браузеры взаимодействуют между собой через IP-адреса. Люди, пытаясь подключиться к сайту, используют его доменное имя — например, https://selectel.ru/. Domain Name System преобразует домены в IP-адреса, чтобы сделать возможной загрузку интернет-ресурса через браузер. Каждому устройству в сети назначается свой IP-адрес, который используется другими устройствами для подключения к нему, а DNS-сервер позволяет людям не запоминать их.
На данный момент существуют четыре основных DNS-сервера, которые участвуют в загрузке веб-страниц:
- DNS recursor — своеобразный справочник, отвечающий за прием запросов от компьютеров пользователей, например, приложений браузеров;
- Root nameserver, или корневой сервер, является первым в процессе конвертации имени хоста в IP-адрес и позволяет получить список DNS-серверов.
- TLD nameserver — следующий шаг при поиске IP; хранит информацию про все доменные имена с общим расширением (.ru, .com и т.д.);
- Authoritative nameserver дает окончательные ответы на запросы о DNS.
Бесплатный DNS-хостинг от Selectel
Размещайте домены и записи на наших DNS-серверах. Запуск за несколько минут.
HTTP(S) — протокол передачи гипертекста
HTTP является основой интернета и используется для загрузки веб-страниц с использованием гипертекстовых ссылок. Относится к прикладным протоколам и работает поверх других уровней стека сетевых протоколов.
Обычно принцип передачи данных по протоколу HTTP включает в себя компьютер клиента (например, ваш ПК), отправляющий запрос на сервер, который затем возвращает ответ. Каждый HTTP-запрос включает в себя ряд закодированных данных, содержащих различную информацию, в том числе:
- версию HTTP,
- URL-адрес,
- метод HTTP-запроса — указание на ожидание запроса от сервера (например, PUT- и GET-запросы),
- заголовок — он передает основную информацию о запросе и содержит пары ключ-значение,
- тело запроса (опционально, это любая отправляющаяся информация).
После получения запроса сервер должен дать ответ. В его стандартную структуру входят: код состояния, заголовок и тело ответа.
Код состояния HTTP-запроса — это трехзначные коды, которые, как правило, указывают на успешность его выполнения. Они разбиваются на пять основных блоков:
- 1xx* Информация (Informational),
- 2хх Успешность выполнения (Success),
- 3хх Перенаправление (Redirection),
- 4xx Ошибка клиента (Client Error),
- 5xx Ошибка сервера (Server Error),
*ХХ обозначают цифры от 00 до 99.
Аналогично запросу, ответ имеет заголовок, который содержит различную информацию — например, язык отправляемых данных. В большинстве случаев там содержатся HTML-данные, которые веб-браузер клиента преобразует в страницу.
При разговоре про HTTP нельзя не упомянуть важный аспект — незащищенность протокола. При передаче данных все происходит открыто, в результате чего злоумышленник может перехватить данные. Для исключения этой проблемы был разработан протокол HTTPS. Подробное сравнение этих протоколов есть в нашем блоге.
SSH — основное средство подключения к серверам
SSH, или Secure Shell, — это защищенный протокол, который используется как основное средство подключения к серверам. С помощью него при подключении к серверу пользователь входит в уже существующую учетную запись, где выполняются все отправленные команды.
Данное соединение реализовано по схеме «клиент-сервер». Для его создания на удаленном устройстве должна быть запущена программа, называемая демоном. Демон выполняет подключение к определенному сетевому порту, проверяет подлинность запросов на подключение и создает соответствующую среду, если пользователь вводит правильные учетные данные. Также со стороны клиента должно быть установлено соответствующее ПО.
В панели управления Selectel пользователь может загрузить собственный SSH-ключ для повышения надежности и безопасности подключения или сгенерировать его на месте. Подробнее — в нашей базе знаний.
Устаревшие протоколы: Telnet, Gopher, FTP
На сегодняшний день существует более 7 000 тысяч различных протоколов. Сеть постоянно развивается, поэтому некоторые протоколы устаревают — например, Gopher, FTP, Telnet. Последний рассмотрим подробнее.
Telnet — это старый, но очень надежный протокол связи. Первоначально он был разработан как символьно-ориентированный протокол эмуляции терминала, используемый в среде UNIX. Сегодня Telnet широко используется для системного администрирования маршрутизаторов, коммутаторов и удаленных серверов, а также для базовой текстовой связи, в которой графика не требуется.
Заключение
В данной статье мы рассмотрели популярные протоколы взаимодействия устройств и программ в сети. В реальной жизни на одном только вашем ПК используются сотни протоколов, поскольку каждый выполняет определенные задачи. Узнать о задачах и принципах работы протокола можно в специальном документе, который называется RFC-стандартом.
Протокол FTP
Протокол FTP (File Transfer Protocol — Протокол передачи файлов) специально разработан для передачи файлов по Интернету. Первая реализация протокола (1971 г.) предусматривала обмен между клиентом и сервером сообщениями, состоящими из заголовка (72 бит) и данных переменной длины.В 1972 г. протокол был полностью изменён, и принял вид, близкий к современному. Подключение к FTP-серверу обычно осуществляется с помощью FTP-клиента. Простейший FTP-клиент входит в состав любой операционной системы.
Протокол TCP/IP
В 1972 году группа разработчиков под руководством Винтона Серфа разработала протокол TCP/IP(Протокол управления передачей/Протокол Интернета). Он состоит из двух уровней. Протокол верхнего уровня, TCP, отвечает за правильность преобразования сообщений в пакеты информации, из которых на приемной стороне собирается исходное послание. Протокол нижнего уровня, IP, отвечает за правильность доставки сообщений по указанному адресу. Иногда пакеты одного сообщения могут доставляться разными путями.
Протокол SLIP
Протокол передачи данных SLIP (Serial Line Internet Protocol) создан специально для организации постоянного подключения к Интернету с использованием имеющейся телефонной линии и обычного модема. Как правило, такое подключение создается в организациях, имеющих сервер, на котором находится веб-страница организации и другие ресурсы (база данных, файлы). Данный протокол работает вместе с протоколом TCP/IP и находится на более низком уровне.
Протокол SMTP
SMTP (англ. Simple Mail Transfer Protocol — простой протокол передачи почты) — это широко используемый сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP. SMTP впервые был описан в RFC 821 (1982 год); последнее обновление в RFC 5321 (2008) включает масштабируемое расширение — ESMTP. В настоящее время под «протоколом SMTP» как правило подразумевают и его расширения. Протокол SMTP предназначен для передачи исходящей почты с использованием порта TCP 25.
Протоколы POP
Post Office Protocol -протокол почтового отделения -стандартный интернет-протокол прикладного уровня, используемый клиентами электронной почты для получения почты с удалённого сервера по TCP-соединению.Электронная почта гораздо эффективнее и быстрее. Ее использование стало возможным благодаря протоколам POP. При этом он использует один из портов и транспортный протокол TCP. Протокол POP позволяет только получать электронные сообщения
Протокол NetBEUI
Достаточно популярный стек протоколов, разработкой которого занимались компании IBM и Microsoft, соответственно,ориентированный на использование в продуктах этих компаний. Протокол был разработан в середине 80-х годов прошлого века, но вскоре был заменен на более функциональный протокол NetBEUI. Главные плюсы протокола NetBEUI — скорость работы и очень малые требования к ресурсам. NetBEUI обладает недостатком: он лишен понятия о маршрутизации пакетов, его использование в сложных составных сетях.
Протокол IMAP
IMAP (Interactive Mail Access Protocol) – еще один почтовый протокол, созданный на основе протокола POP3. В результате в нем были учтены все недостатки и добавлено большое количество новых востребованных функций.
Наиболее полезными среди них является возможность частичного скачивания сообщений, анализируя содержимое которых можно эффективно настраивать фильтры, сортирующие письма или отсеивающие спам.
Протокол IRC
IRC (англ. Internet Relay Chat) — протокол прикладного уровня для обмена сообщениями в режиме реального времени.
Разработан в основном для группового общения (чаты), также позволяет общаться через личные сообщения и обмениваться данными, в том числе файлами. IRC использует транспортный протокол TCP и криптографический TLS (опционально).
Протокол HTTP
HTTP был предложен Тимом Бернерсом-Ли, работавшим тогда в CERN. Протокол HTTP (Hypertext Transfer Protocol — Протокол передачи гипертекста) является протоколом более высокого уровня по отношению к протоколу TCP/IP — протоколом уровня приложения. HTTP был разработан для эффективной передачи по Интернету Web-страниц. Является основой системы World Wide Web. Соответственно, браузеры, используемые для блуждания по Интернету, являются HTTP-клиентами.
Протокол WAP
Wireless Application Protocol( протокол беспроводной передачи данных). Протокол создан специально для сетей GSM, где нужно устанавливать связь портативных устройств (мобильный телефон, КПК, пейджеры, устройства двусторонней радиосвязи, смартфоны, и другие терминалы) с сетью Интернет. WAP возник в результате слияния двух сетевых технологий: беспроводной цифровой передачи данных и сети Интернет. С помощью WAP пользователь мобильного устройства может загружать из сети Интернет любые цифровые данные
Протокол LMP
LMP (англ. Link Manager Protocol) — протокол управления соединениями, отвечающий за установление подключений между устройствами Bluetooth. Сюда же относятся вопросы безопасности, такие как аутентификация и шифрования, связанные генерированием ключей шифрования и подключения, а также с обменом ключами и их проверкой. LMP имеет более высокий приоритет чем остальные протоколы, поэтому если канал занят чем-либо другим, то при необходимости передать LMP сообщение он немедленно освобождается.
Протокол DTN
Delay-tolerant networking (DTN — сеть устойчивая к разрывам) — это новый подход к сетевой архитектуре компьютера, который направлен на решение технических вопросов в гетерогенных сетях, которые не имеют постоянного подключения к сети. Примерами таких сетей являются те, которые работают в мобильных или экстремальных земных условиях или планируемых сетей в космическом пространстве.
Jan 8, 2007
Протокол WPS
Wi-Fi Protected Setup (защищённая установка), WPS — стандарт (и одноимённый протокол) полуавтоматического создания беспроводной сети Wi-Fi, созданный Wi-Fi Alliance. Целью протокола WPS является упрощение процесса настройки беспроводной сети, поэтому изначально он назывался Wi-Fi Simple Config. Протокол призван оказать помощь пользователям, которые не обладают широкими знаниями о безопасности в беспроводных сетях
TCP IP — уровни, стек протоколов модели и краткая история
TCP IP – сетевая модель, в основе которой лежит стек протоколов, описывающих порядок передачи цифровых данных между устройствами в сети Интернет. Протоколы были разработаны еще в 70-х годах прошлого века для обеспечения обмена информацией между разными сетями. Сетевая модель TCP IP представляет собой набор правил, регламентирующих порядок передачи данных между устройствами: электронная почта, мультимедийные файлы, удаленный доступ к рабочей станции.
Сетевая модель TCP IP содержит стандартизированные соглашения о маршрутизации и взаимодействии по сети, которые позволяют обеспечить бесперебойное общение между хостами. Главным преимуществом сетевой модели считается кроссплатформенность и аппаратная независимость: стек протоколов может использоваться на компьютерах любой конфигурации и на разных операционных системах.
Сетевая модель была разработана группой специалистов под руководством Винтона Серфа и Боба Кана в 1972 году. Предпосылками для создания модели были требования Министерства обороны, чтобы сеть продолжала работать при любых условиях, независимо от внешних факторов. Первая демонстрация работы включала предоставление пакета данных через три различных сети общей, проделав путь длиной более чем 150 000 км без потери данных. Сетевая модель TCP IP имеет некую схожесть с моделью OSI, но прикладной уровень объединяет в себе три уровня.
TCP IP – уровни сетевой модели

Протоколы TCP (Transmission Control Protocol) и lP ( Internet Protocol) были разработаны Министерством обороны США, в стек входят несколько протоколов, используемых для определенных задач, например, отправка электронной почты через SMTP. TCP IP является официальным стандартом для глобальной сети Интернет, он основан на сетевой модели OSI и имеет четыре уровня, каждый из которых выполняет собственные функции.
Уровневая архитектура TCP IP описана в документе RFC 1122, но в некоторых других источниках присутствует пять уровней, так как физический выделен отдельно.
Канальный уровень сетевой модели TPC IP
На аппаратном уровне (Link Layer) определены правила взаимодействия сетевого оборудования между собой. Для передачи той или иной информации между хостами она должна быть поделена на пакеты и передана по нужному каналу связи.
На канальном уровне сетевой модели TCP IP определены физические свойства среды обмена информацией:
- максимальное расстояние, на которое передаются пакеты;
- частота сигнала;
- время задержки ответа.
Наиболее часто на канальном уровне используется протокол Ethernet.
Межсетевой уровень
Мировая паутина состоит из множества локальных подсетей, которые объединяются между собой посредством протокола TCP IP. Для организации взаимодействия между ними и корректного предоставления информации необходимо обеспечить возможность соединяться с другими локальными сетями. В основе такой маршрутизации лежит обращение к IP с использованием маски подсети. Если передать данные нужно в пределах одной локальной сети, пакеты отправляются напрямую по IP, в этом случае использование маски не требуется.
Назначение маски подсети – помочь маршрутизатору определить, какому хосту и как передавать данные. Пакет данных может путешествовать через несколько маршрутизаторов, пока не достигнет получателя. IP может быть представлен в двух форматах: v4 и v6, которые не совместимы между собой.
v4 имеет формат из четырех блоков чисел от 0 до 255, которые разделяются точками. До 1998 года использовался только этот формат, но с ростом количества устройств в Интернете возникла необходимость большего количества уникальных адресов. v6 использует 128-битные адреса, состоящие из восьми блоков, разделяемых двоеточием, при записи адреса допускаются сокращения по определенным правилам.
Протокол lP предназначен для идентификации адресата, но он не гарантирует целостность данных. lP инкапсулирует в себе другие протоколы такие как ICMP (межсетевой протокол управляющих сообщений) и IGMP (межсетевой протокол группового управления). Первый служит для передачи сообщений об ошибках при попытке связи между разными хостами. Второй объединяет сетевые устройства в группы для передачи информации только тем компьютерам, которые ее запросили, например, в онлайн-играх или воспроизведении потокового видео.
Транспортный уровень
Transport Layer берет на себя функцию контроля доставки пакетов. На этом уровне работают протоколы TCP и UDP. Первый устанавливает соединение между двумя хостами и гарантирует предоставление информации в полном объеме. Если во время передачи часть информации была утеряна, протокол запрашивает ее повторно, таким образом у адресата есть полный пакет данных, собранный в нужном порядке.
Протокол UDP не устанавливает соединение между хостами, а передает автономные датаграммы. В процессе передачи часть из них может быть утеряна, проверка целостности информации не производится. UDP используется в случаях, когда требуется снизить нагрузку на сеть, а потеря какой-то доли информации не является критичной для адресата, например, при воспроизведении потокового видео.
Прикладной уровень
Applicatopn Layer объединяет три уровня сетевой модели OSI: сеансовый, уровень представления и прикладной. На прикладном уровне происходит поддержание сеанса связи между хостами, преобразование передаваемых данных, работа с конечным пользователем и сетью. Здесь же используются стандарты API интерфейса, которые передают команды для выполнения определенных задач.
На прикладном уровне используются производные протоколы, предназначенные для выполнения тех или иных действий. HTTPS открывает сайты в Интернете, электронная почта отправляется с использованием протокола SMTP, для динамического назначения адресов в сети применяется набор правил, определенных протоколом DHCP.
Понятия порта и сокета, их назначение и сфера применения
На прикладном уровне приложения общаются между собой также при помощи транспортного уровня, поэтому для идентификации, какому адресату необходимо отправить данные, требуется точно указать не только адрес хоста, но и к какому приложению обратиться.
Совокупность ip и порта называют сокетом. Первый критерий уникален для каждой рабочей станции, а второй является фиксированным для каждого запущенного приложения. При обращении к определенному веб-ресурсу происходит обращение к DNS-серверу, который слушает 53 порт на рабочей станции и преобразует буквенное значение, введенное в строку поиска, в обычный IP.
P.S. В статье про OSI мы писали о ее противостоянии с TCP lP
Ниже представлено несколько ключевых цитат
Хотя правительства по всему миру рекомендовали соблюдать стандарты OSI, на практике телекомы предпочитали быстро соединять разнородные гетерогенные системы по протоколам TCP/IP, не соблюдая порядок и иерархию OSI.
Инженеры признавали, что у OSI архитектурно более проработанная модель, она гораздо более полная, более тщательная. Но на практике проще взять простой в реализации TCP/IP. Впрочем, OSI никто не отменял, и в неё вполне вписывается даже стек TCP/IP.
Обзор сетевых протоколов и протоколов обмена сообщениями для IoT

Интернет вещей (IoT, Internet of Things) будет построен на базе существующей сетевой инфраструктуры, технологий и протоколов, используемых в настоящее время в домах/офисах и в Интернете, и предложит много другого.
Цель данного руководства — дать краткий обзор сетевых и прикладных протоколов для IoT.
Примечание. У вас должны быть знания основ сетевых технологий.
IoT-сети
IoT будет работать в существующих TCP/IP-сетях.
TCP/IP использует четырехуровневую модель с определенными протоколами на каждом уровне. См. understanding the TCP/IP 4 layer model (разбираемся с четырехуровневой моделью TCP/IP).
На диаграмме ниже показано сравнение протоколов, используемых в настоящее время, и тех что, скорее всего, будут использоваться для IoT.
Примечания к диаграмме:
- Размер шрифта отображает степень популярности протокола. Например, слева IPv4 больше, так как он гораздо популярнее в современном Интернете. Однако справа он меньше, поскольку ожидается, что IPv6 будет более популярным в IoT.
- Показаны не все протоколы.
- Больше всего изменений на канальном (уровни 1 и 2) и прикладном уровнях (уровень 4).
- Сетевой и транспортный уровни, скорее всего, останутся неизменными.
Протоколы канального уровня
На канальном уровне (Data Link) вам нужно соединить устройства между собой. Они могут находиться как недалеко, например, в локальных сетях (local networks) так и на большом расстоянии друг от друга: в городских (metropolitan area networks) и глобальных сетях (wide area networks).
В настоящее время на этом уровне в домашних и офисных сетях (LAN) используются Ethernet и Wi-Fi, а в мобильных (WAN) — 3G / 4G. Однако многие IoT-устройства маломощные, например, датчики, и питаются только от батарей. В этих случаях Ethernet не подходит, но можно использовать low powered Wi-Fi и low powered Bluetooth.
Хотя для подключения этих устройств по-прежнему будут использоваться существующие беспроводные технологии (Wi-Fi, Bluetooth, 3G / 4G), стоит также обратить внимание на новые технологии, специально разработанные для IoT-приложений, популярность которых, по всей вероятности, будет расти.
- BLE – Bluetooth Low Energy
- LoRaWAN – Long Range WAN
- SigFox
- LTE-M
Более подробно они описаны в статье An overview of IOT wireless technologies (обзор беспроводных технологий IoT).
Сетевой уровень
На сетевом уровне (Networking) в долгосрочной перспективе будет доминировать протокол IPv6. Маловероятно, что будет использоваться IPv4, но он может играть определенную роль на начальных этапах. Большинство IoT-устройств для дома, например, умные лампочки, в настоящее время используют IPv4.
Транспортный уровень
На транспортном уровне (Transport) в Интернете и вебе доминирует TCP. Он используется как в HTTP, так и во многих других популярных протоколах Интернета (SMTP, POP3, IMAP4 и т. д.).
MQTT, который, как я ожидаю, станет одним из основных протоколов прикладного уровня для обмена сообщениями, в настоящее время использует TCP.
Однако в будущем из-за более низких накладных расходов, я ожидаю, что UDP будет более популярен для IoT. Вероятно, более широкое распространение получит MQTT-SN, работающий поверх UDP. См. статью о сравнении TCP vs UDP .
Прикладной уровень и протоколы обмена сообщениями
Важные характеристики для протоколов IoT:
- Скорость — количество передаваемых данных в секунду.
- Задержка — время, необходимое для передачи сообщения.
- Потребляемая мощность.
- Безопасность.
- Наличие программных средств.
В настоящее время на этом уровне активно используются два основных протокола: HTTP и MQTT.
HTTP, вероятно, самый известный протокол этого уровня, лежащий в основе веба (WWW). Он по прежнему будет иметь важное значение для IoT, поскольку используется для REST API — основного механизма взаимодействия веб-приложений и сервисов. Однако, из-за высоких накладных расходов, HTTP вряд ли станет основным протоколом IoT, хотя все равно будет широко использоваться в Интернете.
MQTT (Message Queuing Telemetry Transport) стал основным протоколом обмена сообщениями в IoT, благодаря своей легкости и простоте в использовании. См. статью Introduction to MQTT for beginners (Введение в MQTT для начинающих).
Сравнение HTTP и MQTT для IoT
MQTT быстро становится стандартом де-факто для IoT-приложений. Это происходит из-за его легкости и скорости по сравнению с HTTP и того, что он является протоколом «один ко многим», а не «один к одному» (HTTP).
Многие современные веб-приложения, с радостью использовали бы MQTT вместо HTTP, если бы он был доступен на момент их разработки.
Хороший пример — отправка информации множеству клиентов, например, о прибытии и отправлении поездов / автобусов / самолетов. В этом сценарии протокол «один-к-одному», такой как HTTP, имеет большие накладные расходы и создает большую нагрузку на веб-серверы. Масштабирование этих веб-серверов может быть затруднено. С MQTT клиенты подключаются к брокеру, которые легко можно добавлять для балансировки нагрузки. Смотрите об этом туториал с видео Republish HTML Data Over MQTT (Flight Arrivals Example) и статью MQTT vs HTTP for IOT.
Другие протоколы обмена сообщениями
HTTP не был разработан для IoT-приложений, но, как уже упоминалось, он будет широко использоваться в течение какого-то времени благодаря его широкому использованию в API.
Почти все платформы IoT поддерживают как HTTP, так и MQTT.
Однако есть и другие протоколы, которые стоит рассмотреть.
- MQTT — (Message Queuing Telemetry Transport). Использует TCP/IP. Для модели «издатель-подписчик» требуется брокер сообщений.
- AMQP — (Advanced Message Queuing Protocol). Использует TCP/IP. Модели «издатель-подписчик» и «точка-точка».
- COAP — (Constrained Application Protocol). Использует UDP. Разработан специально для IoT, использует модель запроса-ответа как в HTTP. RFC 7252.
- DDS — (Data Distribution Service)
В этой статье рассматриваются основные протоколы и их применения. Вывод этой статьи заключается в том, что IoT будет использовать набор протоколов, в зависимости от их предполагаемого применения.
Однако, если оглянуться назад, в первые годы существования Интернета протокол HTTP, впоследствии ставший доминирующим, был всего лишь одним из множества протоколов.
Несмотря на то что HTTP не был изначально задуман для передачи файлов и электронной почты, сегодня он используется и для того и для другого.
Я ожидаю, что в IoT с протоколами обмена сообщениями произойдет то же самое: большинство сервисов будут использовать один преобладающий протокол.
Ниже приведены графики Google Trends, показывающие, как изменялась популярность MQTT, COAP и AMQP за последние несколько лет.
Обзор Google Trends
Поддержка протоколов по платформам
- Microsoft Azure — MQTT, AMQP, HTTP и HTTPS
- AWS — MQTT, HTTPS, MQTT over websockets
- IBM Bluemix – MQTT,HTTPS,MQTT
- Thingworx — MQTT,HTTPS,MQTT,AMQP
Резюме
Больше всего изменений на канальном (уровни 1 и 2) и прикладном уровнях (уровень 4).
Сетевой и транспортный уровни, скорее всего, останутся неизменными.
На прикладном уровне компоненты IoT будут использовать протоколы обмена сообщениями. Хотя мы все еще находимся на раннем этапе развития IoT, вполне вероятно, что выделится один или, возможно, два протокола обмена сообщениями.
За последние несколько лет MQTT стал самым популярным, и именно на нем я сейчас фокусируюсь на этом сайте.
HTTP также по-прежнему будет использоваться, так как он уже хорошо встроен в существующие IoT-платформы.
На этом все. Приглашаем вас записаться на бесплатный демо урок по теме «Чат-бот для быстрых команд устройству».