Как на практике работает сетевая модель OSI
В начале статьи мы задались вопросом: а как передаются сообщения в Telegram? Настало время на него ответить — и показать весь процесс передачи данных по модели OSI.
Мы хотим отправить сообщение нашему другу. Печатаем текст и нажимает кнопку «Отправить», а дальше перемещаемся внутрь компьютера.
Прикладной уровень. Приложение Telegram работает на прикладном уровне модели OSI. Когда мы печатаем текст сообщения и нажимаем кнопку «Отправить», эти данные передаются на сервер мессенджера, а оттуда — нашему другу.
Весь процесс проходит через API разных библиотек — например, для HTTP-запросов. Интерфейсы позволяют без лишних проблем обмениваться данными и не погружаться в то, как они представлены на низком уровне. Всё, что нужно знать, — это какую функцию вызвать и какие переменные туда передать.
Уровень представления. Здесь данные должны преобразоваться в унифицированный формат, чтобы их можно было передавать на разные устройства и операционные системы. Например, если мы отправляем сообщение c Windows на macOS, данные должны быть в читаемом для компьютеров Apple виде. Такая же ситуация и с другими устройствами.
Раз мы собираемся передать данные на другой компьютер, их нужно перевести в бинарный формат. После этого начнётся сам процесс передачи по сети.
Сеансовый уровень. Чтобы данные успешно передались сначала на сервер Telegram, а затем к нашему другу, приложению нужно установить соединение, или сеанс. Он обеспечивает синхронизацию между устройствами и восстанавливает связь, если она прервалась.
Благодаря сеансам вы можете видеть, что собеседник что-то печатает или отправляет вам картинки или видео. Но главная задача этого соединения — обеспечить стабильное соединение для передачи данных.
Транспортный уровень. Когда соединение установлено и данные унифицированы, пора передавать их. Этим занимается транспортный уровень.
Здесь данные разбиваются на сегменты и к ним добавляется дополнительная информация — например, номер порта и контрольные суммы. Всё это нужно, чтобы данные дошли до пользователя в целостности.
Сетевой уровень. Теперь данным нужно найти маршрут к устройству нашего друга, а затем отправить их по нему. Поэтому данные упаковываются в пакеты и к ним добавляются IP-адреса.
Чтобы получить IP-адрес устройств, которым нужно отправить пакеты, маршрутизаторы (устройства сетевого уровня) обращаются к ARP. Этот протокол быстро найдёт адрес получателя и отдаст его нам.
Канальный уровень. Здесь данные передаются от одного MAC-адреса к другому. Изначальный текст делится на фреймы — с заголовками и контрольными суммами для проверки целостности данных.
Физический уровень. И на самом нижнем уровне данные в виде электрических сигналов передаются по проводам, кабелям или по радиоволнам. Тут только одна задача — как можно быстрее откликаться на сигналы свыше.
Как устроен интернет с аппаратной точки зрения
Интернет состоит из трех физических компонентов: кабелей, маршрутизаторов и сетей. Технические специалисты определяют интернет-инфраструктуру как сочетание интернет-оборудования и программного обеспечения, которое на нем работает.
Кабели
Интернет образуется из множества оптоволоконных кабелей, которые соединяют вместе несколько небольших сетей. Эти кабели передают информацию из одной сети в другую в виде оптических сигналов. Вся наша планета покрыта интернет-кабелями, кроме Антарктиды. При этом многие расположены под водой, чтобы покрывать огромные расстояния. Например, длина кабеля Atlantic Crossing 1 (AC-1), который связывает США с Европой, составляет 14 000 км.
Карта всех интернет-кабелей
(Фото: Международный союз электросвязи)
Маршрутизаторы
Еще одним важным элементом интернета являются маршрутизаторы, которые пересылают данные между точками доступа. Таким образом, маршрутизаторы отвечают за то, чтобы сообщение, отправленное с компьютера А, дошло до компьютера Б как можно быстрее и без сбоев.
Информация может передаваться по нескольким маршрутам, а функция маршрутизаторов состоит в том, чтобы выбрать лучший
Это особенно важно, когда сеть перегружена — в случае, если многие другие компьютеры одновременно пытаются обмениваться данными — или если кратчайший путь заблокирован из-за неисправности сети
Маршрутизация трафика
(Фото: Khan Academy)
Сети
Все устройства подключаются к сетям, чтобы получить доступ в интернет. Например, домашний ноутбук или планшет подключаются к локальной сети внутри дома (LAN). Эти устройства могут обмениваться данными без каких-либо проблем, так как являются частью одной сети. Однако для обмена данными за пределами этих сетей требуется поддержка интернет-провайдера (ISP). Интернет-провайдер предоставляет такой доступ в интернет и иную поддержку, связанную с работой в интернете.
Обратный вызов проверки подлинности HTTP
Как уже упоминалось, проверка подлинности HTTP является необязательной, то есть используется не при любой передаче данных через Интернет. Кроме того, проверка подлинности обычно зависит от конкретного ресурса. Один и тот же сервер может требовать проверку подлинности для доступа к некоторым ресурсам и не требовать для доступа к другим. Пакет netX Web HTTP Server позволяет приложению указать (через вызов nx_web_http_server_create ) подпрограмму обратного вызова проверки подлинности, которая вызывается в начале обработки каждого запроса HTTP-клиента.
Эта подпрограмма обратного вызова предоставляет серверу NetX Web HTTP строковые значения имени пользователя, пароля и области, которые связаны с конкретным ресурсом, и возвращает необходимый тип проверки подлинности. Если для ресурса не требуется проверка подлинности, обратный вызов проверки подлинности должен возвращать значение NX_WEB_HTTP_DONT_AUTHENTICATE. Если для указанного ресурса требуется обычная проверка подлинности, эта подпрограмма должна возвращать NX_WEB_HTTP_BASIC_AUTHENTICATE. Наконец, если требуется дайджест-проверка подлинности MD5, подпрограмма обратного вызова должна возвращать NX_WEB_HTTP_DIGEST_AUTHENTICATE. Если ни для одного из ресурсов, предоставляемого HTTP-сервером, не требуется проверка подлинности, обратный вызов можно не указывать, передав в вызов для создания HTTP-сервера пустой указатель.
Формат подпрограммы обратного вызова проверки подлинности для приложения достаточно прост и определен ниже.
Входные параметры определяются следующим образом.
-
request_type: указывает запрос HTTP-клиента, который может иметь одно из следующих значений:
- NX_WEB_HTTP_SERVER_GET_REQUEST
- NX_WEB_HTTP_SERVER_POST_REQUEST
- NX_WEB_HTTP_SERVER_HEAD_REQUEST
- NX_WEB_HTTP_SERVER_PUT_REQUEST
- NX_WEB_HTTP_SERVER_DELETE_REQUEST
- resource: запрашиваемый ресурс.
- name: указатель на требуемое имя пользователя.
- password: указатель на требуемый пароль.
- realm: указатель на область определения приложений для данной проверки подлинности.
Возвращаемое значение подпрограммы проверки подлинности указывает, требуется ли проверка подлинности. Указатели на имя, пароль и область определения приложения не используются, если подпрограмма обратного вызова проверки подлинности возвращает значение NX_WEB_HTTP_DONT_AUTHENTICATE. В противном случае разработчик HTTP-сервера должен убедиться, что значения NX_WEB_HTTP_MAX_USERNAME и NX_WEB_HTTP_MAX_PASSWORD, определенные в файле nx_web_http_server.h, достаточно велики для размещения имени пользователя и пароля, указанных в обратном вызове проверки подлинности. По умолчанию оба значения равны 20 символам.
Как работает TCP/IP
Настало время посмотреть, как модель TCP/IP работает в жизни. Допустим, вы заходите в интернет, чтобы почитать статью о том, как нейросети рисуют котиков. Запускаете браузер, открываете сайт Skillbox Media, нажимаете на заголовок статьи. А дальше начинается магия.
Как только вы кликнули на ссылку, браузер отправляет запрос на сервер, где лежит страница. Для этого он создаёт HTTP-запрос, в котором описывает всё, что сервер должен ему передать: «Я слышал, у тебя есть статья про генеративные нейронки. Дай, пожалуйста». Сервер отвечает: «Нет проблем» — и отправляет браузеру HTTP-ответ с нужными данными. И так они будут общаться до тех пор, пока вы не закроете сайт.
Браузер отправляет запрос, сервер возвращает ответИллюстрация: Оля Ежак для Skillbox Media
Но сами по себе HTTP-запросы — это просто текстовые сообщения: они не знают, как найти сервер с нужной информацией, а тем более — как её оттуда достать. Для этих задач нам как раз и понадобятся протоколы TCP и IP.
Сначала IP определяет расположение сервера — или, точнее сказать, его IP-адрес. Чтобы найти нужный «айпишник», протокол использует систему DNS. Это такая глобальная база данных, где доменные имена сайтов лежат напротив их IP-адресов — например, сайту skillbox.ru соответствует IP-адрес 178.248.237.96.
Когда IP найдёт сервер и получит от него нужную страницу, он начнёт разбивать её на пакеты. Каждый пакет — это часть файла размером от 1 до 64 КБ. Внутри находятся сами данные и служебная информация: номер пакета, адреса отправителя и получателя и другое.
Зачем нужны пакеты. Представьте, что вам нужно перенести сразу много блюд из кухни в гостиную. Конечно, можно загрузить тарелки в обе руки, а часть поставить на голову, как делают женщины кенийского племени Луо, но, если вдруг в коридоре на вас нападёт кошка или младший брат с игрушечным пистолетом, есть риск всё выронить и испортить ужин. Гораздо безопаснее переносить блюда по одному, а ещё лучше — раздать по тарелке каждому члену семьи.
С данными точно так же: лучше передавать их маленькими порциями, так как никогда не знаешь, где по пути случится проблема. Если что-то пойдёт не так, вы потеряете всего один пакет, а не весь файл целиком.
Протокол IP ищет нужный путь, советуясь с системой DNSИллюстрация: Оля Ежак для Skillbox Media
Чтобы пакеты без потерь долетали от сервера к пользователю, подключается протокол TCP. Для этого в него зашили механизм подтверждения: когда сервер отправляет пакет, TCP спрашивает у устройства пользователя, нормально ли он добрался. Если ответ «да», протокол отправляет следующую порцию, если «нет» — пробует ещё раз.
После того как все пакеты получены, браузер собирает из них цельную страницу и выводит на экран.
Повторим ещё раз весь процесс:
- Вы нажимаете на ссылку или вводите адрес сайта в строке браузера.
- Браузер создаёт HTTP-запрос к серверу, чтобы тот отправил вам нужную страницу.
- Протокол IP с помощью системы DNS находит сервер, где лежит страница, и разбивает её на пакеты.
- Далее в игру вступает TCP — он устанавливает надёжное соединение между компьютером и сервером и следит, чтобы пакеты не потерялись по дороге.
- Браузер склеивает пакеты воедино и рендерит страницу.
Что это такое
Протоколы данного типа позволяют реализовать модель соединения пакетов. По сути, они являются основой работы всего Интернета. И чаще всего при использовании термина TCP/IP подразумевают всю сеть, которая работает на основе 2 отдельных протоколов – TCP и IP.
Набор протоколов включает в себя ряд соглашений о межсетевом взаимодействии и маршрутизации. С помощью такого инструмента удается наладить связь между пользователями из университетов, исследовательских центров, промышленных предприятий и госучреждений.
TCP – аббревиатура, которая расшифровывается как Transfer Control Protocol. То есть по сути это специальный протокол, который управляет передачей. Он создан для установки и поддержания надежного соединения между устройствами. Именно он отвечает за передачу данных, контролирует объем передаваемых файлов и выполняет новую отправку при возникновении сбоев.
Характеристики протокола TCP заключаются в следующем:
- Реализация взаимодействия на уровне логического соединения.
- Организация потоковой отсылки данных.
- Двунаправленная взаимосвязь.
- Функция отправки отдельных пакетов данных.
- Использование принципа «скользящего окна» для увеличения скорости передачи.
Другой протокол – IP – расшифровывается как «Интернет протокол». Он является базовым для архитектуры передачи файлов и необходим для отправки сетевого пакета по необходимому адресу. Все данные предварительно делятся на несколько пакетов, которые отправляются независимо друг от друга до конечного адресата.
Основными характеристиками протокола IP является следующее:
- Реализация обмена данных при помощи сегментов.
- Взаимодействие устройств без использования логического соединения.
- Фрагментация IP-сегментов в случае необходимости.
- Отсутствие средств для управления скоростью передачи сегментов.
Стек сетевых протоколов требуется для поддержания связи компьютеров (хостов), которые подключены к сети. Главная особенность такого набора – аппаратная независимость, которую невозможно получить при использовании других сетевых технологий. То есть TCP/IP не зависит от характеристик аппаратного обеспечения, что позволяет организовать обмен данными между сетями с разными технологиями передачи. За счет использования IP-адресов поддерживается соединение между двумя любыми устройствами.
В протоколах предусмотрено выполнение ряда команд. Например:
- Передача файлов в другую систему.
- Выполнение команд в удаленном режиме.
- Отправка сообщений удаленным пользователям.
- Печать файлов в удаленном режиме.
- Вход в удаленную систему.
- Управление системой и др.
По сути стек протоколов TCP/IP является сетевой моделью, в которой описывается весь процесс передачи цифровых данных. До появления этого набора (в 70-е годы прошлого века) передача информации из одной сети в другую была невозможна. Разработка стека помогла решить эту проблему.
Разрабатывалось семейство протоколов под руководством Министерства обороны США, поэтому иногда его называют DoD-системой. Многие специалисты отмечают сходство системы с протоколами OSI, так как обе они строятся по принципу деления на уровни и выполнение отдельных функций на каждом из них.
Удаленный офис
и онлайн-продажи
За 1 день.
С бесплатным тестовым периодом.
Конфигуратор удаленных рабочих мест
Рабочие места для команды за 1 день
Запросить КП
IP, ICMP, TCP и UDP
IP (Internet Protocol – интернет протокол) и TCP (Transmission Control Protocol – протокол управления передачей) — это два совершенно различных протокола, которые обычно связывают друг с другом. Часто употребляются комбинации сразу нескольких протоколов, так как функции различных протоколов могут быть совмещены таким образом, чтобы получить решение поставленной задачи. В комбинации каждый протокол выполняет операции на своем уровне.
При передачи информации по интернету, её разбивают на мелкие части – интернет пакеты, которые передаются независимо друг от друга. Это существенно ускоряет передачу информации за счет того, что различные части могут передаваться по разным маршрутам, после чего вновь собираются на месте получения в единое целое. Это также мера предотвращения потери информации в процессе передачи. Протокол TCP отвечает за создание интернет пакетов и из обратную сборку в нужном порядке в месте получения, а также проверяет целостность информации. Если часть пакетов утеряна в процессе передачи, они передаются повторно.
Интернет протокол (IP) используется для доставки информации по нужному адресу. Каждый компьютер, который имеет подключение к интернету имеет свой уникальный адрес – IP-адрес. Каждый отправленный пакет содержит адрес доставки. Интернет пакет может пройти через много маршрутизаторов прежде, чем достигнет своего места назначения. Интернет протокол отвечает за маршрутизацию пакета к указанному компьютеру. IP не создает физических подключений между компьютерами. Он может быть использован совместно с другими протоколами, которые создают подключения.
Для передачи малых кусков информации можно использовать протокол UDP (User Datagram Protocol – протокол пользовательских дейтаграмм). Он также используется совместно с интернет протоколом, но намного проще чем TCP. В отличии от TCP, UDP не гарантирует доставку пакетов в нужной последовательности и не дублирует передачу утерянных пакетов, соответственно он потребляет меньше системных ресурсов, а скорость передачи существенно выше. Он применяется в приложениях которым, требуется большая пропускная способность линий связи, либо малое время доставки данных, например для аудио или видео связи.
Существует и совершенно иной протокол низкого уровня – ICMP (Internet Control Message Protocol – протокол межсетевых управляющих сообщений). В основном он используется в диагностических или сервисных целях, таких как передача сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных, например, запрашиваемая услуга недоступна, или хост, или маршрутизатор не отвечают.
Развитие стека TCP/IP: протокол IPv.6
Технология
стека TCP/IP сложилась в основном в конце 1970-х
годов и с тех пор основные принципы работы
базовых протоколов, таких как IP, TCP, UDP и ICMP,
практически не изменились. Однако, сам
компьютерный мир за эти годы значительно
изменился, поэтому долго назревавшие
усовершенствования в технологии стека TCP/IP
сейчас стали необходимостью.
Основными
обстоятельствами, из-за которых требуется
модификация базовых протоколов стека TCP/IP,
являются следующие.
Повышение производительности компьютеров и коммуникационного оборудования. За время существования стека производительность компьютеров возросла на два порядка, объемы оперативной памяти выросли более чем в 30 раз, пропускная способность магистрали Internet в Соединенных Штатах выросла в 800 раз. |
|
Появление новых приложений. Коммерческий бум вокруг Internet и использование ее технологий при создании intranet привели к появлению в сетях TCP/IP, ранее использовавшихся в основном в научных целях, большого количества приложений нового типа, работающих с мультимедийной информацией. Эти приложения чувствительны к задержкам передачи пакетов, так как такие задержки приводят к искажению передаваемых в реальном времени речевых сообщений и видеоизображений. Особенностью мультимедийных приложений является также передача очень больших объемов информации. Некоторые технологии вычислительных сетей, например, frame relay и ATM, уже имеют в своем арсенале механизмы для резервирования полосы пропускания для определенных приложений. Однако эти технологии еще не скоро вытеснят традиционные технологии локальных сетей, не поддерживающие мультимедийные приложения (например, Ethernet). Следовательно, необходимо компенсировать такой недостаток средствами сетевого уровня, то есть средствами протокола IP. |
|
Бурное расширение сети Internet. В начале 90-х годов сеть Internet расширялась очень быстро, новый узел появлялся в ней каждые 30 секунд, но 95-й год стал переломным — перспективы коммерческого использования Internet стали отчетливыми и сделали ее развитие просто бурным. Первым следствием такого развития стало почти полное истощение адресного пространства Internet, определяемого полем адреса IP в четыре байта. |
|
Новые стратегии администрирования. Расширение Internet связано с его проникновением в новые страны и новые отрасли промышленности. При этом в сети появляются новые органы администрирования, которые начинают использовать новые методы администрирования. Эти методы требуют появления новых средств в базовых протоколах стека TCP/IP. |
Основным
предложением по модернизации протокола IP
является предложение, разработанное
группой IETF. Сейчас принято называть ее
предложение версией 6 — IPv6, а все
остальные предложения группируются под
названием IP Next Generation, IPng.
Отличия IPv6
коротко можно описать следующим образом.
Использование более длинных адресов. Новый размер адреса — наиболее заметное отличие IPv6 от IPv4. Версия 6 использует 128-битные адреса. |
|
Гибкий формат заголовка. Вместо заголовка с фиксированными полями фиксированного размера (за исключением поля Резерв), IPv6 использует базовый заголовок фиксированного формата плюс набор необязательных заголовков различного формата. |
|
Поддержка резервирования пропускной способности. В IPv6 механизм резервирования пропускной способности заменяет механизм классов сервиса версии IPv4. |
|
Поддержка расширяемости протокола. Это одно из наиболее значительных изменений в подходе к построению протокола — от полностью детализированного описания протокола к протоколу, который разрешает поддержку дополнительных функций. |
Протоколы транспортного уровня
Протоколами транспортного уровня в четырехуровневом стеке протоколов являются протоколы TCP и UDP.
Давайте рассмотрим, каким образом функционирует протокол TCP. Дело в том, что поскольку TCP-пакеты, иначе называемые сегментами, посылаются при помощи протокола IP, у TCP нет никакой информации о состоянии этих пакетов. Поэтому для того, чтобы хранить информацию о состоянии, TCP к базовому протоколу IP добавляет три параметра.
Во-первых, добавляется сегмент контрольной суммы содержащихся в пакете данных, что позволяет убедиться в том, что в принципе все данные дошли до получателя и не повредились во время транспортировки.
Во-вторых, к каждому передаваемому байту приписывается порядковый номер, что необходимо для определения того, совпадает ли порядок прибытия данных с порядком их отправки. И даже в том случае, если данные пришли не в том порядке, в котором были отправлены, наличие порядковых номеров позволит получателю правильно составить из этих данных исходное сообщение.
В-третьих, базовый протокол IP дополняется также механизмами подтверждения получения данных и повторной отправки, на тот случай, если данные не были доставлены.
Если с первыми двумя параметрами все более-менее понятно, то механизм подтверждения/повторной отправки достаточно сложен и его мы рассмотрим подробнее в следующей статье.
Из каких уровней состоит TCP/IP
Пора окунуться в детали и узнать, как модель TCP/IP устроена изнутри. Глобально она делится на четыре уровня:
- канальный уровень — отвечает за взаимодействие по сетевому оборудованию, например по Ethernet-кабелю или Wi-Fi;
- межсетевой уровень — помогает отдельным сетям общаться друг с другом;
- транспортный уровень — отвечает за передачу данных между устройствами, например, по протоколам TCP и UDP;
- прикладной уровень — помогает приложениям общаться друг с другом с помощью интерфейсов или API.
Структура модели TCP/IPИллюстрация: Оля Ежак для Skillbox Media
На каждом уровне есть свои протоколы, которые обеспечивают надёжность передачи данных между компьютерами в Сети. Всего модель TCP/IP поддерживает сотни разных протоколов.
Канальный уровень
Для чего нужен: устанавливать физическое соединение между устройствами в локальной сети с помощью радиоволн и проводов.
Примеры протоколов: Ethernet, Wi-Fi, Bluetooth.
Как работает: данные делятся на небольшие кусочки (фреймы) и передаются между устройствами. Каждый фрейм содержит часть передаваемой информации и служебные данные.
Чтобы понять, куда отправлять фреймы, используют адресацию канального уровня — MAC-адреса. Это уникальные физические адреса устройств — по ним протоколы канального уровня определяют отправителей и получателей.
Из чего состоит фреймИзображение: Skillbox Media
Ещё одна важная задача канального уровня — проверять, что данные передаются безошибочно. Для этого протоколы используют свои средства проверки:
- Если возникла ошибка, устройство отправляет фрейм обратно, а второе устройство передаёт его ещё раз.
- Если всё прошло удачно, то фрейм передаётся на следующий уровень для обработки.
Межсетевой уровень
Для чего нужен: строить маршруты между устройствами по всему интернету — этот процесс называется маршрутизацией.
Примеры протоколов: IP, ICMP, ARP.
Как работает: IP-протокол вычисляет местонахождение устройств по их IP-адресам, а также строит до них кратчайшие пути и делит данные на пакеты (или, как говорят на юге России, — кульки :)).
Чтобы определить, где находится получатель и как построить путь к нему, IP обращается к системе DNS — она знает IP-адреса всех устройств в интернете.
Когда адрес получен, передаваемый файл разбивается на небольшие части — пакеты. Они содержат фрагменты данных и служебную информацию, например IP-адреса отправителя и получателя.
Из чего состоит пакетИзображение: Skillbox Media
После этого начинается передача пакетов по маршрутизаторам и коммутаторам. Но процессом отправки занимается уже следующий уровень — транспортный.
Транспортный уровень
Для чего нужен: передавать данные по маршруту, построенному на предыдущем уровне.
Примеры протоколов: TCP, UDP.
Как работает: устанавливает надёжное соединение между устройствами, а затем следит за передачей данных по нему и исправляет ошибки.
Главных протокола здесь два:
- TCP (Transmission Control Protocol) — гарантирует передачу всех данных без потерь. Полезен при отправке текстовых файлов.
- UDP (User Datagram Protocol) — не гарантирует передачу данных без потерь, но обеспечивает хорошую скорость. Полезен при просмотре видео или прослушивании музыки в интернете.
TCP решает всё медленно, но надёжно. UDP — быстро, но не факт, что качественноИллюстрация: Оля Ежак для Skillbox Media
И у нас остаётся последний уровень — прикладной.
Прикладной уровень
Для чего нужен: настраивать связи между приложениями — например, между браузером и серверным софтом.
Примеры протоколов: HTTP, FTP, SMTP.
Как работает: использует различные протоколы и сервисы, которые помогают приложениям обмениваться данными по интернету.
На прикладном уровне хранятся протоколы для всего, что нужно человеку: отправки имейлов, веб-браузинга, передачи файлов и удалённого доступа. Вот некоторые из них:
- HTTP (Hypertext Transfer Protocol) — самый популярный протокол для передачи данных по интернету.
- FTP (File Transfer Protocol) — ещё один известный протокол, заточенный под передачу файлов.
- SMTP (Simple Mail Transfer Protocol) — протокол для отправки электронных писем.
Технологии и альянсы
ONVIF
Из-за сложности структуры, переплетения стека технологий некоторые вещи мы называем протоколами, хотя она таковыми не являются. ONVIF – эту аббревиатуру часто можно встретить в видеорегистраторах и камерах видеонаблюдения, на самом деле не протокол. Open Network Video Interface Forum – это организация, которая занимается разработкой стандартов и протоколов для систем безопасности. Их спецификации построены на веб-сервисах, описываемых языком WSDL, протоколах RTP/RTSP, SOAP (XML), стандартах видеосжатия H.264, MPEG-4, MJPEG. Прелесть ONVIF заключается в совместимости оборудования поддерживающего этот стандарт.
ZigBee
Покупая умный дом можете встретить протокол ZigBee который описывает спецификации сетевых протоколов верхнего уровня. Эта технология отличается поддержкой высокого уровня безопасности передачи данных в сочетании с невысокими скоростями и возможностью длительной автономной работы устройств. В ZigBee реализована поддержка ячеистой (mesh) топологии, кроме стандартных: «точка-точка», «дерево» и «звезда». Протоколы разработаны на алгоритмах AODV и NeuRFon. ZigBee – это целый альянс, который сотрудничает с рядом разработчиков и приводит работу оборудования к единому стандарту.
PPPoE
Говоря о видеонаблюдении, да и не только, нужно упомянуть PPP (Point-to-Point Protocol), который объединяет целый ряд протоколов, в том числе PPPoE – где последние буквы — over Ethernet, он служит для передачи данных внутри сети от одно части к другой, может настраивать или инкапсулировать другие протоколы.
Да, все немного запутанно, мы окунулись в объемную тему, которая описывает работу всех устройств, передающих данные, свои протоколы есть для мобильных сетей, для IP телефонии, это большая тема, неразрывно связанная, с современными технологиями и их развитием.
Выделяемые уровни
На рисунке представлена модель TCP/IP в сравнении с моделью OSI.
модель TCP/IP в сравнении с моделью OSI.
Уровень доступа к сети (или Канальный уровень)
Канальный уровень описывает способ кодирования данных для передачи пакета данных на физическом уровне (то есть специальные последовательности бит, определяющих начало и конец пакета данных, а также обеспечивающие помехоустойчивость). Ethernet, например, в полях заголовка пакета содержит указание того, какой машине или машинам в сети предназначен этот пакет (MAC-адрес).
Канальный уровень иногда разделяют на 2 подуровня — LLC и MAC.
- Logical Link Control (верхний) — подуровень управления логической связью. В его задачи входит управление передачей данных и обеспечение проверки и правильности передачи информации.
- Media Access Control (нижний) — подуровень управления доступом к физической среде. Обеспечивает адресацию и механизмы управления доступом к каналам.
Кроме того, канальный уровень описывает среду передачи данных.
Уровень сети Интернет (или Межсетевой уровень)
Межсетевой уровень предназначен для передачи пакета из одной сети в другую.
На этом уровне работают маршрутизаторы, которые перенаправляют пакеты в нужную сеть путём расчёта адреса сети по маске сети.
Межсетевое взаимодействие — это основной принцип построения интернета. Локальные сети по всему миру объединены в глобальную, а передачу данных между этими сетями осуществляют магистральные и пограничные маршрутизаторы.
Транспортный уровень
Протоколы транспортного уровня могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных. В стеке TCP/IP транспортные протоколы определяют, для какого именно приложения предназначены эти данные. Два главных транспортных протокола — TCP и UDP.
- TCP — «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от UDP.
- UDP — протокол передачи датаграмм без установления соединения. Также его называют протоколом «ненадёжной» передачи, в смысле невозможности удостовериться в доставке сообщения адресату, а также возможного перемешивания пакетов. В приложениях, требующих гарантированной передачи данных, используется протокол TCP.
На транспортном уровне появляется понятие «порт». Для передачи данных между процессами устройства (например, передача сообщения из одного приложения «вконтакте» другому приложению «вконтакте») недостаточно знать только IP-адрес и его маску. Ещё необходимо знать, какому процессу адресован пакет данных.
Для передачи пакетов между процессами было принято выделить на каждом хосте виртуальные порты, которые могут прослушиваться процессами.
Порт — это число от 0 до 65535, которое присваивается процессу на время. Порт чем-то похож на кабинку, которую можно занять определённой программе (ну а совокупность портов можно представить как гостиницу).
Порт порт так же может определять, какой протокол используется на прикладном уровне.
Порты выделяются как для TCP, так и для UDP (т.е. порты для одного протокола не пересекаются с портами другого).
Прикладной уровень предназначен для работы сетевых приложений. Для обмена информацией они используют свои протоколы, например: протокол HTTP для обмена гипертекстовой разметкой, протокол FTP (передача файлов), SMTP (электронная почта), SSH (безопасное соединение с удалённой машиной), DNS (преобразование символьных имён в IP-адреса) и многие другие.
В массе своей эти протоколы работают поверх TCP или UDP и привязаны к определённому порту, например:
- HTTP на TCP-порт 80 или 8080;
- FTP на TCP-порт 20 (для передачи данных) и 21 (для управляющих команд);
- SSH на TCP-порт 22;
- запросы DNS на порт UDP (реже TCP) 53.
С этим уровнем взаимодействует пользователь. Поэтому протоколы на этом уровне могут разрабатывать и прикладные программисты.
На каком уровне модели OSI работают различные интернет-протоколы?
Интернет-протоколы по-прежнему ориентированы на работу в структурированной среде с моделью ISO OSI. Эта модель состоит из 7 уровней различных уровней, в которых выполняется основное действие для завершения связи всей сети.
В этом смысле семейство протоколов TCP / IP работает на промежуточных уровнях, таких как:
- Слой 2 : Уровень второго уровня, известный как уровень канала передачи данных, является одним из наиболее важных, поскольку именно здесь информация проверяется, а затем передается на транспортный уровень. На этом уровне более 100 протоколов работают вместе и являются частью семейства TCP / IP.
- Слой 3: На сетевом уровне расположены домены IP-протокола, поскольку именно здесь данные поступают в сеть, а затем принимаются на транспортном уровне для отправки по назначению. На нем работают сотни других интернет-протоколов, но, без сомнения, самым важным является IP.
- Слой 4: На транспортном уровне находятся такие протоколы, как TCP или передача данных. Именно сюда прибывают пакеты данных из сети с указанием места назначения, а также здесь они начинают свой путь к концу шаблона седьмого уровня.
- Слой 5 : мы закрываемся на уровне сеанса, который отвечает за сохранение сеансов открытыми во время доставки информации. На нем работают сотни других протоколов семейства TCP / IP, и все они очень важны.
Некоторые протоколы семейства TCP / IP также работают на уровне представления 6, но они обычно присутствуют менее прямым образом, чем предыдущие 4 , где действительно происходит все волшебство.
Взаимодействие по протоколу HTTP
Как упоминалось ранее, HTTP-сервер принимает запросы от клиентов через известный TCP-порт 80 (или порт 443 для HTTPS) . HTTP-клиенты могут использовать любой доступный TCP-порт для исходящих подключений. Общая последовательность событий HTTP выглядит следующим образом.
HTTP-запрос GET
- Клиент отправляет запрос на TCP-подключение к порту 80 сервера (или 443 для HTTPS).
- Если используется протокол HTTPS, то после установления TCP-подключения следует подтверждение TLS, чтобы проверить подлинность сервера и установить безопасный канал.
- Клиент отправляет запрос GET ресурс HTTP/1.1 и другие сведения заголовка.
- Сервер создает сообщение HTTP/1.1 200 OK с дополнительной информацией, за которой следует содержимое запрошенного ресурса (при наличии).
- Сервер отключается от клиента (протокол TLS завершает работу, если используется протокол HTTPS).
- Клиент отключается от сокета (протокол TLS завершает работу после оповещения об отключении от сервера).
HTTP-запрос PUT
- Клиент отправляет запрос на TCP-подключение к порту 80 (или 443) сервера.
- Если используется протокол HTTPS, то после установления TCP-подключения следует подтверждение TLS, чтобы проверить подлинность сервера и установить безопасный канал.
- Клиент отправляет запрос PUT HTTP/1.1 и другие сведения заголовка, за которыми следует содержимое ресурса.
- Сервер создает сообщение «HTTP/1.1 200 OK» с дополнительной информацией, за которой следует содержимое запрошенного ресурса.
- Сервер разрывает подключение.
- Клиент разрывает соединение.
Примечание
Как уже упоминалось, HTTP-сервер может изменить стандартный порт подключения (80 или 443) на любой другой порт с помощью службы nx_web_http_client_set_connect_port() , что позволяет веб-серверам, использующим альтернативные порты, подключаться к клиентам.