Сетевые протоколы: типы и назначение
Содержание:
- История
- Технологии и альянсы
- Какие ещё протоколы используются в Интернете
- Типы стандартов
- Набор протоколов в OSI:
- 1. Протоколы физического уровня модели OSI:
- 2. Протоколы канального уровня модели OSI:
- 3. Протоколы сетевого уровня модели OSI:
- 4. Протоколы транспортного уровня модели OSI:
- 5. Протоколы сеансового уровня модели OSI:
- 6. Протоколы представления уровня модели OSI:
- 7. Протоколы прикладного уровня модели OSI:
- Уровни OSI
- Основные протоколы интернета
- Свойства протокола
- Использование [ править ]
- Приложения
- Сетевые модели и протоколы
История
Понимание телекоммуникационными компаниями требований к справочникам было хорошо развито после 70 лет создания и управления телефонными справочниками. Эти компании представили концепцию служб каталогов для информационных технологий и компьютерных сетей , и их вклад в разработку завершился всеобъемлющей спецификацией X.500 , набором протоколов, разработанным Международным союзом электросвязи (ITU) в 1980-х годах.
Доступ к службам каталогов X.500 традиционно осуществлялся через протокол доступа к каталогам X.500 (DAP), для которого требовался стек протоколов взаимодействия открытых систем (OSI) . Изначально LDAP задумывался как облегченный альтернативный протокол для доступа к службам каталогов X.500 через более простой (и теперь широко распространенный) стек протоколов TCP / IP . Эта модель доступа к каталогам была заимствована из протоколов DIXIE и Directory Assistance Service .
Протокол был первоначально создан Тим Хоус в Университете штата Мичиган , Стив Kille из ISODE Limited, Колин Роббинс из Nexor и Wengyik Ён из Performance Systems International , около 1993 года в качестве преемника Dixie и DAS . Марк Уол из Critical Angle Inc., Тим Хоус и Стив Килле начали работу в 1996 году над новой версией LDAP, LDAPv3, под эгидой Инженерной группы Интернета (IETF). Протокол LDAPv3, впервые опубликованный в 1997 году, заменил LDAPv2 и добавил поддержку расширяемости, интегрировал простой уровень аутентификации и безопасности и лучше согласовал протокол с версией X.500 1993 года. Дальнейшее развитие самих спецификаций LDAPv3 и многочисленных расширений, добавляющих функции LDAPv3, было осуществлено через IETF .
На ранних этапах разработки LDAP он был известен как Lightweight Directory Browsing Protocol , или LDBP . Он был переименован с расширением области действия протокола, выходящей за рамки просмотра и поиска каталогов, и теперь включает функции обновления каталогов. Ему было дано название Lightweight, потому что он не требовал такой интенсивной работы в сети, как его предшественник DAP, и, таким образом, был более легко реализован через Интернет из-за относительно небольшого использования полосы пропускания.
LDAP повлиял на последующие Интернет-протоколы, включая более поздние версии X.500, каталог с поддержкой XML (XED), язык разметки службы каталогов (DSML), язык разметки предоставления услуг (SPML) и протокол определения местоположения службы (SLP). Он также используется в качестве основы для Microsoft «s Active Directory .
Технологии и альянсы
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 телефонии, это большая тема, неразрывно связанная, с современными технологиями и их развитием.
Какие ещё протоколы используются в Интернете
Помимо выше указанных, для сети существуют и другие решения. У каждого свои особенности:
- MAC, или Media Access Control отвечает за идентификацию устройств в Сети на одном из самых низких уровней. Уникальным MAC-адресом снабжается каждое приспособление, которое подключается к Сети. Эту информацию задаёт ещё производитель. Физические адреса используются в случае с локальными сетями, по которым передают сведения. Это один из немногих протоколов, до сих пор остающийся достаточно популярным.
- DNS — протокол для передачи файлов. Отвечает за преобразование в сложные IP-адреса данных, которые раньше были легко понятны и читаемы. Обратный порядок преобразования тоже работает. Благодаря этому становится просто получать доступ к сайтам с помощью доменного имени.
- SSH реализуется для удалённого управления системой с участием защищённого канала. Этот вариант для работы используют многие технологии.
Важно! При выборе того или иного метода отталкиваться нужно от того, для чего предназначен тот или иной элемент. Одинаковым остаётся способ настройки в разных операционных системах
Только в некоторых специализированных компонентах заметно отличие.
Системы Windows изначально были настроены так, чтобы в качестве универсального протокола использовать TCP/IP. Все остальные функции не настраиваются вообще либо настраиваются, но автоматически.
Чёткая определённость и структурированность — главные условия для организации правильного обмена информацией по Сети между компьютерами. По этой причине применяются различные стандарты. Первоначально для установки протоколов использовались международные соглашения. Различные задачи, типы информации, протоколы могут быть разными в зависимости от того, что нужно пользователям или самим сетям.
Обратите внимание! Настройки в большинстве случаев автоматические, никаких проблем с работой возникнуть не должно. Хотя и ручная корректировка не доставляет хлопот, если следовать простым инструкциям
Типы стандартов
Юридические стандарты (De jure) принимают организации, которые имеют право на это.
Фактические стандарты (De facto) — это стандарты, которые установились сами по себе, их никто не принимал. К примеру, появилась новая технология, которая быстро развилась и стала популярной. Как это произошло со стеком протоколов TCP/IP, который сейчас основа сети интернет.
Стандарты для сетей
Принимается огромное множество разных стандартов, но есть самые значимые:
- Международная организация по стандартизации (IOS) приняла стандарт на эталонную модель OSI, описывающая, как должны строиться компьютерные сети.
- Институт инженеров по электронике и электротехнике (IEEE) принимающие стандарты на технологи по передачи данных.
- Совет по архитектуре интернета (IAB) принимает стандарты на протоколы интернет.
- Консорциум W3C принимает стандарты в область Web.
Стандарты IEEE
Институт ieee утверждает стандарты не только в компьютерных сетях, но также в других сферах электроники, электротехники. Институт поделен на комитеты. Разработкой стандартов для комп. сетей занимается комитет под № 802.
Каждый № это семейство стандартов. Например, 802.3 описывает разные варианты технологий Ethernet, такие как, Fast Ethernet, Gigabit Ethernet и 10 Gigabit Ethernet.
Набор протоколов в OSI:
Пора рассказать на мой взгляд самое интересное, это распределение протоколов по уровням модели OSI, тут будут описаны самые основные протоколы, так как, их очень много.
1. Протоколы физического уровня модели OSI:
- Ethernet — Протокол для работы кабеля Ethernet, или кабеля для интернета;
- GSM — Протокол для работы со сотовой связи;
- 802.11 — Протокол для работы Wi-Fi;
- USB — Протокол для работы шины в компьютере или флешки;
- IrDA — Протокол для работы с инфракрасным портом;
- Bluetooth — Протокол для работы с Bluetooth;
2. Протоколы канального уровня модели OSI:
- Ethernet — Протокол самого кабеля интернет;
- Frame Relay — Протокол для передачи сотовой связи;
- PPP — Протокол передачи данных один на один, между двумя компьютерами;
3. Протоколы сетевого уровня модели OSI:
- IPv4 — Протокол для работы IP адресов версии четыре;
- IPv6 — Протокол для работы IP адресов версии шесть;
- ICMP — Протокол для ошибок в сотовой связи;
- RiP — Протокол позволяет маршрутизаторам быстро и динамически находить путь;
4. Протоколы транспортного уровня модели OSI:
- TCP — Протокол который отправляет пакет проверяя, но медленно, используется для сайтов;
- UDP — Протокол который отправляет пакет не проверяя, но быстро, используется в онлайн играх;
5. Протоколы сеансового уровня модели OSI:
- PPTP — Протокол для туннельного соединена с компьютер на компьютер или VPN;
- L2TP — Подобный протокол PPTP
- SSH — Протокол позволяет производить удалённое управление операционной системой;
6. Протоколы представления уровня модели OSI:
- SSL — Криптографический протокол для безопасного соединения;
- XDR — Протокол позволяет организовать не зависящую от платформы передачу данных между компьютерами в гетерогенных сетях;
7. Протоколы прикладного уровня модели OSI:
- HTTP — Протокол для передачи гипертекста или HTML;
- FTP, TFTP, SFTP — Протоколы для передачи файлов;
- TELNET — Протокол для уделённого управления другим компьютером;
- DHCP — Протокол для автоматического получение IP адреса;
- IRC — Протокол для обмена сообщениями в режиме реального времени;
- SNMP — Протокол для управление устройствам в IP-ситах;
- DNS — Протокол позволяющий получать информацию о доменах;
- BitTorrent — Пиринговый (P2P) сетевой протокол для кооперативного обмена файлами через Интернет;
- SMTP, POP3, IMAP4— Протоколы для отправки, доставки электронной почты;
Уровни OSI
Для наглядности процесс работы сети принято разделять на 7 уровней, на каждом из которых работает своя группа протоколов.
Для выполнения разных задач имеется несколько протоколов, которые занимаются обслуживанием систем, например, стек TCP/IP. Давайте здесь внимательно посмотрим на то, каким образом информация с одного компьютера отправляется по локальной сети на другой комп.
Задачи компьютера ОТПРАВИТЕЛЯ:
- Взять данные из приложения
- Разбить их на мелкие пакеты, если большой объем
- Подготовить к передаче, то есть указать маршрут следования, зашифровать и перекодировать в сетевой формат.
Задачи компьютера ПОЛУЧАТЕЛЯ:
- Принять пакеты данных
- Удалить из него служебную информацию
- Скопировать данные в буфер
- После полного приема всех пакетов сформаровать из них исходный блок данных
- Отдать его приложению
Для того, чтобы верно произвести все эти операции и нужен единый свод правил, то есть эталонная модель OSI.
Вернемся у к уровням OSI. Их принято отсчитывать в обратном порядке и в верхней части таблицы располагаются сетевые приложения, а в нижней — физическая среда передачи информации. По мере того, как данные от компьютера спускаются вниз непосредственно к сетевому кабелю, протоколы, работающие на разных уровнях, постепенно их преобразовывают, подготавливая к физической передаче.
Разберем их подробнее.
6. Уровень представления (Presentation Layer)
Переводит эти данные на единый универсальный язык. Дело в том, что каждый компьютерный процессор имеет собственный формат обработки данных, но в сеть они должны попасть в 1 универсальном формате — именно этим и занимается уровень представления.
Ваше мнение — WiFi вреден?
Да
24.14%
Нет
75.86%
Проголосовало: 9755
5. Сеансовый уровень (Session Layer)
У него много задач.
- Установить сеанс связи с получателем. ПО предупреждает компьютер-получатель о том, что сейчас ему будут отправлены данные.
- Здесь же происходит распознавание имен и защита:
- идентификация — распознавание имен
- аутентификация — проверка по паролю
- регистрация — присвоение полномочий
- Реализация того, какая из сторон осуществляет передачу информации и как долго это будет происходить.
- Расстановка контрольных точек в общем потоке данных для того, чтобы в случае потери какой-то части легко было установить, какая именно часть потеряна и следует отправить повторно.
- Сегментация — разбивка большого блока на маленькие пакеты.
4. Транспортный уровень (Transport Layer)
Обеспечивает приложениям необходимую степень защиты при доставке сообщений. Имеется две группы протоколов:
- Протоколы, которые ориентированы на соединение — они отслеживают доставку данных и при необходимости запрашивают повторную отправку при неудаче. Это TCP — протокол контроля передачи информации.
- Не ориентированные на соединение (UDP) — они просто отправляют блоки и дальше не следят за их доставкой.
3. Сетевой уровень (Network Layer)
Обеспечивает сквозную передачу пакета, рассчитывая его маршрут. На этом уровне в пакетах ко всей предыдущей динформации, сформированной другими уровнями, добавляются IP адреса отправителя и получателя. Именно с этого момент пакет данных называется собственно ПАКЕТОМ, у которого есть IP адреса (IP протокол — это протокол межсетевого взаимодействия).
2. Канальный уровень (Data Link Layer)
Здесь происходит передача пакета в пределах одного кабеля, то есть одной локальной сети. Он работает только до пограничного маршрутизатора одной локальной сети. К полученному пакету канальный уровень добавляет свой заголовок — MAC адреса отправителя и получателя и в таком виде блок данных уже называется КАДРОМ.
При передачи за пределы одной локальной сети пакету присваивается MAC не хоста (компьютера), а маршрутизатора другой сети. Отсюда как раз появляется вопрос серых и белых IP, о которых шла речб в статье, на которую была выше дана ссылка. Серый — это адрес внутри одной локальной сети, который не используетс яза ее пределами. Белый — уникальный адрес во всем глобальном интернете.
При поступлении пакета на пограничный роутер IP пакета подменяется на IP этого роутера и вся локальная сеть выходит в глобальную, то есть интернет, под одним единственным IP адресом. Если адрес белый, то часть данных с IP адресом не изменяется.
1. Физический уровень (Transport layer)
Отвечает за преобразование двоичной информации в физический сигнал, который отправляется в физический канал передачи данных. Если это кабель, то сигнал электрический, если оптоволоконная сеть, то в оптический сигнал. Осуществляется это преобразование при помощи сетевого адаптера.
Основные протоколы интернета
Как я уже сказал. в основе работы сети лежит использование нескольких протоколов, которые работают один поверх другого. Давайте рассмотрим основные сетевые протоколы интернет, которые вам будут часто встречаться, и попытаемся понять разницу между ними.
- MAC или (Media Access Control) — это протокол низкого уровня, который используется для идентификации устройств в локальной сети. У каждого устройства, подключенного к сети есть уникальный MAC адрес, заданный производителем. В локальных сетях, а все данные выходят из локальной сети и попадают в локальную сеть перед тем, как попасть к получателю, используются физические MAC адреса для обозначения устройств. Это один из немногих протоколов уровня соединения, с которым довольно часто приходится сталкиваться.
- IP ( Internet Protocol) — расположен уровнем выше, за MAC. Он отвечает за определение IP адресов, которые будут уникальными для каждого устройства и позволяют компьютерам находить друг друга в сети. Он относится к сетевому уровню модели TCP/IP. Сети могут быть связанны друг с другом в сложные структуры, с помощью этого протокола компьютеры могут определить несколько возможных путей к целевому устройству, причем во время работы эти пути могут меняться. Есть несколько реализаций протокола, но наиболее популярной на сегодняшний день является IPv4 и IPv6.
- ICMP (Internet control message protocol) — используется для обмена сообщениями между устройствами. Это могут быть сообщения об ошибках или информационные сообщения, но он не предназначен для передачи данных. Такие пакеты используются в таких диагностических инструментах, как ping и traceroute. Этот протокол находится выше протокола IP;
- TCP (Transmission control protocol) — это еще один основной сетевой протокол, который находится на том же уровне, что и ICMP. Его задача — управление передачей данных. Сети ненадежны. Из-за большого количества путей пакеты могут приходить не в том порядке или даже теряться. TCP гарантирует, что пакеты будут приняты в правильном порядке, а также позволяет исправить ошибки передачи пакетов. Информация приводится к правильному порядку, а уже затем передается приложению. Перед передачей данных создается соединение с помощью так называемого алгоритма тройного рукопожатия. Он предусматривает отправку запроса и подтверждение открытия соединения двумя компьютерами. Множество приложений используют TCP, это SSH, WWW, FTP и многие другие.
- UDP (user datagram protocol) — это популярный протокол, похожий на TCP, который тоже работает на транспортном уровне. Отличие между ними в том, что здесь используется ненадежная передача данных. Данные не проверяются при получении, это может выглядеть плохой идеей, но во многих случаях этого вполне достаточно. Поскольку нужно отправлять меньше пакетов, UDP работает быстрее, чем TCP. Поскольку соединение устанавливать не нужно, то этот протокол может использоваться для отправки пакетов сразу на несколько машин или IP телефонии.
- HTTP (hypertext transfer protocol) — это протокол уровня приложения, который лежит в основе работы всех сайтов интернета. HTTP позволяет запрашивать определенные ресурсы у удаленной системы, например, веб страницы, и файлы;
- FTP (file transfer protocol) — это протокол передачи файлов. Он работает на уровне приложений и обеспечивает передачу файла от одного компьютера к другому. FTP — не безопасный, поэтому не рекомендуется его применять для личных данных;
- DNS (domain name system) — протокол того же уровня, используемый для преобразования понятных и легко читаемых адресов в сложные ip адреса, которые трудно запомнить и наоборот. Благодаря ему мы можем получить доступ к сайту по его доменному имени;
- SSH (secure shell) — протокол уровня приложений, реализованный для обеспечения удаленного управления системой по защищенному каналу. Многие дополнительные технологии используют этот протокол для своей работы.
Есть еще очень много других протоколов, но мы рассмотрели только сетевые протоколы, которые больше всего важны. Это даст вам общие понятия того, как работает сеть и интернет в целом.
Свойства протокола
IMAP — это текстовый протокол для доступа к электронной почте на почтовом сервере . Почтовый клиент только посылает запросы к серверу для получения информации, которая в настоящее время требуется. Был бы пользователь z. Б. просмотреть содержимое папки, клиент получает текущий список сообщений для соответствующей папки с сервера. Если содержимое письма должно отображаться, оно загружается с сервера. Поскольку все данные остаются на сервере, все они показывают одну и ту же текущую базу данных почтового ящика — даже при использовании нескольких клиентов. Кроме того, нет необходимости в локальном хранении данных, и на сервере выполняются расширенные возможности, такие как поиск по почте.
С помощью IMAP также можно получить доступ к различным папкам в почтовом ящике. Многие серверы также могут сортировать входящую почту прямо по разным папкам ( фильтровать ). Установив права доступа для папок в почтовом ящике, несколько пользователей могут получить доступ к одним и тем же данным одновременно . Расширение IMAP IDLE позволяет немедленно уведомлять клиентов ( push- уведомления ) о поступлении новой почты. Это позволяет избежать ненужного трафика данных, который может возникнуть в результате постоянных запросов ( опросов ) от клиента. Если у вас нет интернет-соединения с вашим почтовым сервером, вы, как правило, больше не можете получить доступ к своей почте. Некоторые клиенты решают эту проблему, создавая локальные копии почты, к которым они могут получить доступ в автономном режиме . Когда подключение к Интернету восстанавливается, данные снова сравниваются ( синхронизируются ) с почтовым сервером .
Поскольку данные хранятся централизованно на внешнем сервере, необходимо также учитывать вашу собственную защиту данных . Поэтому соединение с сервером должно быть зашифровано .
Клиент | сервер | Объяснение |
---|---|---|
* OK IMAP4rev1 Сервис готов | Сервер приветствует клиента | |
a001 логин mrc секрет | Клиент входит в систему | |
a001 OK ВХОД завершен | Сервер подтверждает регистрацию | |
a002 выберите почтовый ящик | Клиент выбирает почтовый ящик в качестве активной папки | |
* 18 СУЩЕСТВУЕТ
* ФЛАГИ (\ Ответил \ Флаг \ Удалено \ Просмотрено \ Черновик) |
Доступно 18 писем
Установлены флаги |
|
a003 получить 12 полных | Клиент запрашивает информацию по почте №12 | |
* 12 ПОЛУЧИТЬ (ФЛАГИ (\ озера)
a003 OK FETCH завершен |
Почта уже прочитана
17 июля 1996 г. отправил заголовок
|
|
a004 fetch 12 body | Клиенту нужны все заголовки для письма № 12 | |
* 12 FETCH (ТЕЛО {342}
a004 OK FETCH завершен |
Сервер отправляет запрошенные почтовые заголовки | |
a005 store 12 + flags \ удалено | Пометить письмо № 12 как удаленное | |
* 12 ПОЛУЧИТЬ (ФЛАГИ (\ Seen \ Deleted))
a005 OK + FLAGS завершено |
||
a006 выйти | Клиент выходит из системы | |
* BYE Сервер IMAP4rev1 завершает соединение
a006 OK ВЫХОД завершен |
Использование [ править ]
Сервер LDAP может возвращать ссылки на другие серверы для запросов, которые он не может выполнить сам. Для этого требуется структура именования для записей LDAP, чтобы можно было найти сервер, содержащий заданное отличительное имя (DN), концепцию, определенную в Справочнике X.500, а также используемую в LDAP. Другой способ найти серверы LDAP для организации — это запись DNS- сервера (SRV).
Организация с доменом example.org может использовать DN LDAP верхнего уровня (где dc означает компонент домена). Если сервер LDAP также называется ldap.example.org, URL-адрес LDAP верхнего уровня организации становится .
Как в X.500 , так и в LDAPv3 используются в основном два общих стиля именования. Они задокументированы в спецификациях ITU и RFC IETF. Исходная форма занимает верхний объект уровня в качестве объекта страны, таких как , . Модель компонентов предметной области использует модель, описанную выше. Пример именования на основе страны может быть , или в США: .
Приложения
Многие ключевые Интернет-приложения используют UDP, в том числе: систему доменных имен (DNS), где запросы должны быть быстрыми и состоять только из одного запроса, за которым следует один пакет ответа, простой протокол управления сетью (SNMP), протокол информации о маршрутизации ( RIP) и протокол динамической конфигурации хоста (DHCP).
Голосовой и видеотрафик обычно передается по протоколу UDP. Протоколы потоковой передачи видео и аудио в реальном времени предназначены для обработки случайных потерянных пакетов, поэтому при повторной передаче потерянных пакетов происходит только небольшое ухудшение качества, а не большие задержки. Поскольку и TCP, и UDP работают в одной и той же сети, многие компании обнаруживают, что недавнее увеличение трафика UDP из этих приложений реального времени снижает производительность приложений, использующих TCP, таких как точки продаж , системы бухгалтерского учета и базы данных. Когда TCP обнаруживает потерю пакета, он ограничивает использование скорости передачи данных. Поскольку для бизнеса важны как приложения реального времени, так и бизнес-приложения, некоторые считают важным развитие качественных сервисных решений.
Некоторые системы VPN , такие как OpenVPN, могут использовать UDP и выполнять проверку ошибок на уровне приложений при реализации надежных соединений.
QUIC — это транспортный протокол, построенный на основе UDP. QUIC обеспечивает надежное и безопасное соединение. HTTP 3 использует QUIC в отличие от более ранних версий HTTPS, которые используют комбинацию TCP и TLS для обеспечения надежности и безопасности соответственно. Это означает, что HTTP 3 использует одно рукопожатие для установки соединения, а не два отдельных рукопожатия для TCP и TLS, а это означает, что общее время установления соединения сокращается.
Сетевые модели и протоколы
Сетевой протокол — набор правил и действий (очерёдности действий), позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть системами.
Стандартизированный протокол позволяет разрабатывать интерфейсы (на физическом или прикладном уровне), не привязанные к конкретной аппаратной или программной платформе.
OSI & TCP/IP
В настоящее время для описания сетевых протоколов часто используется модель OSI
(Open System Interconnection — взаимодействие открытых систем) состоящая из 7 уровней:
- прикладной (application) — HTTP, WebSocket
- представления (presentation)
- сеансовый (session)
- транспортный (transport) — TCP, UDP
- сетевой (network) — IP
- канальный (data link) — Ethernet
- физический (physical)
Эта модель, предложенная ISO, хорошо описывает взаимодействие систем в теории, но она сама и протоколы,
которые были предложены для ее реализации, не получили широкого распростронения на практике, и самой популярной моделью
стал 4-уровневый (или 5, в зависимости от точки зрения) стек протоколов TCP/IP:
- прикладной (application layer) — HTTP, WebSocket, gRPC
- транспортный (transport layer) — TCP, UDP
- сетевой (internet layer) — IP
- канальный (network access layer / data link) — Ethernet, IEEE 802.11
- физический* (physical)
На какой уровень вы бы отнесли следующие протоколы?
- FTP
- SSL / TLS
- NTP (network time protocol)
- SSH
- gRPC
- BitTorrent
- BGP (Border Gateway Protocol)
- DNS
- ARP (Address Resolution Protocol)
Каждый уровень и протокол использует собственные абстракции которые доступны протоколам более высоких уровней.
Например, для TCP нет понятия «сообщения» — этот протокол оперирует потоками данных,
в то время как для IP четко определено понятие пакета для которого определен максимальный размер, который диктуется MTU конкретной сети.
При передаче данных с более высокого уровня, протокол низкого уровня добавляет служебные заголовки и может дополнительно фрагментировать данные.
TCP & UDP
Самыми распространенными протоколами транспортного уровня являются TCP & UDP
— TCP (Transmission Control Protocol) — предоставляет поток данных с предварительной установкой соединения,
осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета,
гарантируя тем самым, в отличие от UDP, целостность передаваемых данных и уведомление отправителя о результатах передачи.
— UDP (User Datagram Protocol) — предоставляет возможность отправки сообщений без необходимости предварительной
установки специальных каналов передачи данных.
Оба протокола используют протокол IP для адресации и передачи данных в сети.
TCP требует обязательного установления соединения (handshake):
Утановление соединения может занимать значительное время — например, при latency между системами в 50 мс,
данные могут быть получены второй стороной не ранее чем через 150 мс.
Кстати, с точки зрения TCP нет понятия «клиент» и «сервер» — обе стороны соединения равноправны и могут посылать и принимать данные независимо.
После того как соединение установлено, оно теоретически может существовать бесконечно долго.
На практике же это не так — большое количество промежуточных proxy серверов, имеющие свою точку зрения.
Несмотря на то что TCP является протоколом надежной передачи данных, он лишь гарантирует что при получении ACK-а
вы можете рассчитывать на то, что другая сторона получила данные без изменений.
Поэтому приложениям стоит рассчитывать на то, что при любом сетевом взаимодействии что-то может пойти не так
и приложение должно корректно обрабатывать исключительные ситуации (connection reset, timeout-ы, и т.д.)
Для корректного закрытия соединения используется следующая последовательность:
Если же соединение было закрыто некорректно (например. kill -9) то другая сторона может об этом узнать,
только если попробует передать или получить данные — встроенного механизма heartbeat-ов в TCP нет,
что часто приводит к проблемам с proxy-серверами.
UDP используется в случае когда от протокола требуется обеспечить минимальную задержку несмотря на возможность
потери данных или порядка сообщений — игры, видео- и аудио- конференции и стриминг.
Так же протокол более высокого уровня может сам гарантировать надежную передачу данных (например FTP).
Дополнительные ссылки: