Протоколы передачи данных: что это, какие бывают и в чём различия?
Задумывались ли вы, как происходит обмен данными в сети? Для этого нужны протоколы передачи. Об основных типах рассказываем в этой статье.
Интернет очень большой и комплексный. Но на базовом уровне это всего лишь связь между различными компьютерами (не только персональными). Эта связь представляет из себя сетевые протоколы передачи данных — набор правил, который определяет порядок и особенности передачи информации для конкретных случаев.
Протоколов большое множество. Про основные из них рассказано далее.
IP — Internet Protocol
Протокол передачи, который первым объединил отдельные компьютеры в единую сеть. Самый примитивный в этом списке. Он является ненадёжным, т. е. не подтверждает доставку пакетов получателю и не контролирует целостность данных. По протоколу IP передача данных осуществляется без установки соединения.
Основная задача этого протокола — маршрутизация датаграмм, т. е. определение пути следования данных по узлам сети.
Популярная версия на текущий момент — IPv4 с 32-битными адресами. Это значит, что в интернете могут хранится 4.29 млрд адресов IPv4. Число большое, но не бесконечное. Поэтому существует версия IPv6, которая поможет решить проблему переполнения адресов, ведь уникальных IPv6 будет 2 ^ 128 адресов (число с 38 знаками).
TCP/IP — Transmission Control Protocol/Internet Protocol
Это стек протоколов TCP и IP. Первый обеспечивает и контролирует надёжную передачу данных и следит за её целостностью. Второй же отвечает за маршрутизацию для отправки данных. Протокол TCP часто используется более комплексными протоколами.
UDP — User Datagram Protocol
Протокол, обеспечивающий передачу данных без предварительного создания соединения между ними. Этот протокол является ненадёжным. В нём пакеты могут не только не дойти, но и прийти не по порядку или вовсе продублироваться.
Основное преимущество UDP протокола заключается в скорости доставки данных. Именно поэтому чувствительные к сетевым задержкам приложения часто используют этот тип передачи данных.
FTP — File Transfer Protocol
Протокол передачи файлов. Его использовали ещё в 1971 году — задолго до появления протокола IP. На текущий момент этим протоколом пользуются при удалённом доступе к хостингам. FTP является надёжным протоколом, поэтому гарантирует передачу данных.
Этот протокол работает по принципу клиент-серверной архитектуры. Пользователь проходит аутентификацию (хотя в отдельных случаях может подключаться анонимно) и получает доступ к файловой системе сервера.
DNS
Это не только система доменных имён (Domain Name System), но и протокол, без которого эта система не смогла бы работать. Он позволяет клиентским компьютерам запрашивать у DNS-сервера IP-адрес какого-либо сайта, а также помогает обмениваться базами данных между серверами DNS. В работе этого протокола также используются TCP и UDP.
HTTP — HyperText Transfer Protocol
Изначально протокол передачи HTML-документов. Сейчас же он используется для передачи произвольных данных в интернете. Он является протоколом клиент-серверного взаимодействия без сохранения промежуточного состояния. В роли клиента чаще всего выступает веб-браузер, хотя может быть и, например, поисковый робот. Для обмена информацией протокол HTTP в большинстве случаев использует TCP/IP.
HTTP имеет расширение HTTPS, которое поддерживает шифрование. Данные в нём передаются поверх криптографического протокола TLS.
NTP — Network Time Protocol
Не все протоколы передачи нужны для обмена классического вида информацией. NTP — протокол для синхронизации локальных часов устройства со временем в сети. Он использует алгоритм Марзулло. Благодаря нему протокол выбирает более точный источник времени. NTP работает поверх UDP — поэтому ему удаётся достигать большой скорости передачи данных. Протокол достаточно устойчив к изменениям задержек в сети.
Последняя версия NTPv4 способна достигать точности 10мс в интернете и до 0,2мс в локальных сетях.
SSH — Secure SHell
Протокол для удалённого управления операционной системой с использованием TCP. В SSH шифруется весь трафик, причём с возможностью выбора алгоритма шифрования. В основном это нужно для передачи паролей и другой важной информации.
Также SSH позволяет обрабатывать любые другие протоколы передачи. Это значит, что кроме удалённого управления компьютером, через протокол можно пропускать любые файлы или даже аудио/видео поток.
SSH часто применяется при работе с хостингами, когда клиент может удалённо подключиться к серверу и работать уже оттуда.
О протоколах передачи данных
В этой статье я хочу поделиться личным, не претендующим на академичность, опытом в работе с различными закрытыми протоколами передачи данными (в основном на прикладном-сеансовом уровнях).
Достаточно часто мне приходиться сопрягаться со специализированным ПО (и железом, хотя в конечном итоге идет сопряжение со вшитым на плату фирмвейром), изготовитель каждого из которых предоставляет свой протокол обмена данными.
Какими свойствами и особенностями обладает хороший, годный грамотный, качественный протокол?
В идеале, протокол должен быть абстрагирован от более нижнего уровня взаимодействия, будь то передача по TCP, UDP, по serial порту, USB, Bluetooth, через цифровой радиосигнал, или даже по голубиной почте. И надо учитывать, что далеко не все из них гарантируют доставку и\или достоверность передающихся данных.
Небольшой дисклеймер: говоря о достоверности данных, я имею ввиду их неискаженность вследствие помех и иных ошибок в среде передачи. В статье я не буду затрагивать темы пласта технологий, связанных с безопасностью в ИТ. Допустим что наши Алиса и Боб могут друг другу доверять, и никакая Ева им помешать не может. (Например у коллег вопрос безопасности решается включением всех территориально разделенных участников взаимодействия в хорошо защищенный VPN, не имеющий в свою очередь доступа наружу)
В большинстве протоколов реализована схема «Вопрос-Ответ». Это можно представить как разговор, в котором на каждую реплику своего собеседника вы реагируете вербально, и в том же смысловом ключе. Таким образом участниками взаимодействия достигается уверенность в том, что их сообщения переданы и адекватно восприняты. Однако эта схема допустима и эффективна не для всех задач: в случаях когда задержка в общении должна быть минимизирована, или ответ на каждую из многочисленных реплик признается избыточным (например для отладочных сообщений), реализуется схема «Старт-Стоп». При получении сообщения на «Старт» ваш собеседник начинает сыпать в вас потоком реплик, и замолкает лишь при слове «Стоп». Сообщения, отправляемые в потоке, обычно имеют инкрементируемый порядковый номер, и если при принятии потока сообщений были проблемы с обработкой\было пропущено одно из них, его можно перезапросить отдельно по этому самому номеру.
Все протоколы можно разделить на две группы, (по представлению данных): символьные и бинарные.
Символьные протоколы, с которыми мне приходилось встречаться, базировались либо на XML, либо на JSON-строках. Из их достоинств можно упомянуть о более простой отладке взаимодействия (вследствие их читаемости), о простоте реализации (наличия готовых парсеров), и пресловутой универсальности.
Теперь о недостатках. Очевидно, что такие протоколы являются крайне избыточными, мизерная доля полезной информации плавает в массивной, неэффективной обёртке. При передаче любой числовой информации приходиться заниматься их конвертацией в строковое представление и обратно. Больным местом является передача бинарных данных (и хорошо, что без них бывает можно обойтись, но в ряде случаев это невозможно). Составители протоколов обычно выкручиваются применением Base64, или даже просто передачей бинарной строки в её hex-овом представлении, по два символа на байт.
Также хочется отметить, что полная спецификация того же XML крайне обширна, и стандартные парсеры, при всей их полноте возможностей, достаточно громоздки и медлительны, поэтому распространена практика, когда отдел или контора в итоге пишет и пользуется собственным парсером.
Конечно, для определенных задач, символьные протоколы являются, если не наиболее эффективным, то по крайней мере вполне приемлимым вариантом, но мы с вами идём дальше.
Теперь бинарные протоколы. Сразу же надо вспомнить о Гулливерских войнах тупоконечников и остроконечников. Лично я симпатизирую big-endian, т.к. не считаю неявную типизацию little-endian «чем-то хорошим», да и в моей среде разработки big-endian является нативным.
Бинарные протоколы (не все, но те, которые я отношу к грамотным) можно разделить на два уровня: уровень контейнера и уровень данных. На плечи первого уровня ложится ответственность за целостность и достоверность передачи данных, а так же за доступность обнаружения сообщения в байтовом потоке, и, само собой, за хранение в себе сообщения уровня данных. Второй уровень должен содержать информацию, ради которой всё сетевое взаимодействие и затевалось, в удобном для обработки формате. Его структура в основном зависит от решаемых задач, но и по нему есть общие рекомендации (о которых ниже).
Размеры сообщений (дискретных пакетов байт, которые можно обрабатывать независимо от предыдущих и последующих принимаемых данных) бывают фиксированными и переменными. Понятно, что с фиксированным размером сообщений всё проще — вычитается, начиная с заголовка (о нём позже), определенное количество байт и отправляется на обработку. Зачастую, для обеспечения гибкости, составители таких протоколов включают в сообщение область фиксированного размера (иногда до 80% от общего объема), зарезервированное под модификации нынешнего протокола. На мой взгляд, это не самый эффективный путь обеспечения гибкости, зато избыточность появляется еще какая.
Рассмотрим сообщения переменной длины.
Тут уже можно подробней поговорить о непременном атрибуте бинарного сообщения в любом протоколе — о заголовке (Это вышеупомянутый уровень контейнера).
Обычно заголовки начинаются с константной части, позволяющей, с определенной вероятностью обнаружить начало сообщения в непрерывном байтовом потоке. Очевидно, что имеется риск появления такой константы в произвольном потоке байт, и, хотя увеличение объема этот риск снижает (я встречал константы вида 0123456789VASIA9876543210), целесообразней использовать проверки на основе подсчета контрольной суммы.
За константой обычно следует номер версии протокола, который дает нам понять, в каком формате должно происходить дальнейшее считывание (и имеем ли мы вообще возможность обработать это сообщение — вдруг такая версия нам неизвестна). Следующая важная часть заголовка: информация о самом содержимом контейнера. Указывается тип содержимого (по факту, тот же номер версии протокола для уровня данных), его длина и контрольная сумма. Имея эту информацию, можно уже без проблем и опасений считать содержимое и приступить к его разбору.
Но не прямо сразу! Заголовок должна заключать контрольная сумма его самого (исключая из расчета конечно саму контрольную сумму) — только так мы можем быть уверены в том, что считали только что не белиберду, а валидный заголовок, за которым следуют предназначенные нам данные. Не совпала контрольная сумма? Придётся искать следующее начало нового заголовка дальше по потоку…
Представим, что мы дошли до этапа, что получили наконец неискаженное сообщение уровня данных. Его структура зависит от той области задач той системы, в которой реализован ваш сетевой обмен, однако в общем виде у сообщения тоже бывает быть свой заголовочек, содержащий информацию о типе сообщения. Можно различить как общую специфику сообщения, (например «Запрос Set», «Утвердительный Ответ на Set», «Отрицательный Ответ на Set», «Запрос Get», «Ответ Get», «Потоковое сообщение»), так и конкретную область применение сообщения. Попробую привести пример с потолка:
Тип запроса: Запрос Set (0x01)
Идентификатор модуля-адресата сообщения: PowerSupplyModule (0x0A)
Идентификатор группы сообщений: UPS Management (0x02)
Идентификатор типа сообщения: Reboot (0x01)
Дальше тело сообщения может содержать информацию об адресе ИБП, который Модуль управления энергообеспечением должен перезагрузить, через сколько секунд это сделать и т.п.
На это сообщение мы рассчитываем получить ответное сообщение с типом запроса «Утвердительный Ответ» и последующими 0x0A0201 в заголовке.
Конечно, такое подробное описание типа сообщения может быть избыточным когда межсетевое взаимодействие не предусматривает большого числа команд, так что формировать структуру сообщения надо исходя из требований ТЗ.
Так же будет полезно, если сообщение с «Отрицательным Ответом» будет содержать код ошибки, из-за которой не удалось ответить на команду утвердительно.
Заканчивая своё повествование, добавлю, что тема взаимодействия приложений весьма обширна и порою холиворна(что по факту означает, что в ней нет технологии «серебряной пули»), и отмечу, что те взгляды, что я излагаю, являются лишь компиляцией из опыта по работе с отечественными и зарубежными коллегами. Спасибо за внимание!
upd.
Имел удовольствие пообщаться с критиком своей статьи, и теперь прихожу к осознанию, что я осветил вопрос со своей если можно так выразиться, «байтолюбской», точки зрения. Конечно, раз идет курс на универсальность обработки хранения и передачи данных, то в таком ключе символьные протоколы (в первую очередь говорю об XML) могут дать фору любым другим решениям. Но относительно попытки повсеместного их применения позволю себе процитировать Вирта:
Инструмент должен соответствовать задаче. Если инструмент не соответствует задаче, нужно придумать новый, который бы ей соответствовал, а не пытаться приспособить уже имеющийся.
- передача данных
- протоколы
Протоколы и IP: что нужно знать программисту
Работа устройств с Сетью требует от программиста грамотного подключения и реализации. Обычно эти процессы осуществляются посредством специальных «скриптов». Они работают по особым правилам и принципам. Носят название протоколов.
В данной статье будет рассказано о том, что собой представляет TCP IP. Также изучим виды протоколов, встречающиеся на практике. Предложенная информация будет одинакова полезна и разработчикам, и системным администраторам. Рядовым пользователям, увлекающимся Сетью и интернетом, соответствующие материалы тоже помогут.
Понятие протокола
Протокол – это специальный набор правил, который помогает проводить упорядочивание обмена данными между устройствами. Пример – телефоны или компьютеры. Сегодня существуют различные среды передачи данных. Один из наиболее популярных вариантов – стек протоколов TCP IP.
Он помогает поддерживать передачу файлов, а также удаленный вход в ту или иную систему. Электронная почта через этот «свод правил» тоже успешно реализовывается.
Что это
Протоколы TCP IP дают возможность проведения реализации модели соединения пакетов. Это – база для работы всего интернета. При применении соответствующего термина подразумевается вся Сеть, функционирующая за счет нескольких отдельных протоколов. А именно – TCP и IP.
Это – один из важнейших моментов в системном администрировании, веб разработке и коддинге. Набор протоколов предусматривает некоторые соглашения о межсетевом взаимодействии и маршрутизации. Через соответствующий инструментарий получается налаживать связь между посетителями университетов, исследовательских организаций, а также предприятий и государственных учреждений.
TCP – это…
Изучая протоколы TCP IP, пользователь должен понимать, о каких вообще элементах идет речь. Ранее было сказано, что под соответствующим термином подразумевают весь интернет, работающий через TCP, а также IP. Поэтому далее каждому понятию будет дано отдельное описание.
TCP – это протокол управления передачей. Он помогает устанавливать и поддерживать надежное соединение между девайсами. Отвечает за передачу электронных материалов, а также ведет контроль за объемом перенаправляемых файлов. При сбое начинает повторно отправлять документацию.
О характеристиках
Стоит обратить внимание на то, что у протокола TCP несколько характеристик. Они заключаются в следующем:
- обеспечение взаимодействия на уровне логического соединения;
- потоковая рассылка данных;
- двунаправленная взаимосвязь;
- функции отправки отдельных пакетов электронных материалов;
- использование принципа «скользящего окна» для увеличения скорости обмена информацией.
TCP передает данные, а также является одним из ключевых при рассмотрении принципов работы Сети. С этим «сводом правил» должен быть знаком каждый системный администратор.
Несколько слов об IP
Следующий важный компонент – это IP. Он расшифровывается как «Интернет протокол». Выступает в качестве базы передачи пакета данных. Нужен для отправки сетевых сведений по заданному адресу. Последний носит названием «ip-адрес». Все собранные материалы сначала необходимо поделить на несколько отдельных пакетов. Они будут отправляться получателю независимо друг от друга.
Параметры и характеристики
Ключевыми характеристиками протоколов сетевого типа (IP) выступают следующие моменты:
- организация обмена данными через сегменты;
- взаимодействие девайсов без логического соединения;
- проведение фрагментации АйПи-сегментов, если это необходимо;
- отсутствие средств для управления скоростью передачи информации.
Таким образом рассматриваемые компоненты – это неотделимая часть обмена данными по интернету или через компьютерные сети.
Стеки сетевых протоколов – ключевые особенности
Стек сетевых протоколов TCP/IP нужен для того, чтобы можно было поддерживать связь компьютеров (хостов), которые будут подключены предварительно к Сети. Такой набор имеет одну особенность. Это – аппаратная независимость. Ее не удастся получить при применении иных сетевых технологий и манипуляций.
Протоколы TCP IP не будет зависеть от характеристик имеющегося аппаратного обеспечения. Эта особенность дает возможность найти оптимальный способ передачи обмена информацией между сетями с разными технологиями отправки и получения электронных материалов.
Стоит также обратить внимание, что в рассматриваемой «связке» АйПи играет немаловажную роль. За счет применения соответствующих адресов ведется поддержка соединения между двумя произвольными девайсами.
Основные команды
Протоколы TCP/IP предусматривают в процессе своей работы выполнение тех или иных команд. Вот основные из них:
- передача документов и файлов в иные системы;
- выполнение операций и заданных команд удаленно;
- отправка сообщений удаленным пользователям;
- удаленная печать файлов;
- вход в удаленную систему;
- управление заданной системой.
Стек протоколов TCP IP – это сетевая модель, описывающая весь процесс передачи имеющихся цифровых материалов. До ее изобретения соответствующие операции были невозможны. До 70-х годов прошлого века проблему решить не удавалось. Стековая разработка помогла ее устранить, причем весьма успешно.
Разработка велась под руководством Минобороны США. Иногда рассматриваемая «технология» носит название DoD-системы. Некоторые специалисты говорят, что система похожа на представление уровня модели OSI. Связано это с тем, что оба варианта опираются на принцип деления по уровням, чтобы после выполнять отдельные функции и операции на каждом «слое».
Общая терминология и понятия
Чтобы свести ошибки, связанные с пониманием рассматриваемой темы, к минимуму, необходимо запомнить несколько ключевых терминов. Они – база, без которой более углубленное изучение не представляется возможным:
- Стек (стек протоколов TCP/IP в том числе). Это – гибкое средство для организации сетевого взаимодействия. За счет стека юзер сможет применять собственные параметры и настройки.
- TCP/IP. Специальное ПО, которое помогает в отладке Сети. Устанавливается на устройство вместе с базовой операционной системой. Для применения соответствующей «технологии» не придется проводить инициализацию дополнительного программного обеспечения.
- Карта сетевых адаптеров. Физическое устройство, подключаемое к сетевому кабелю.
- Настройка протоколов. Так называется процесс отладки работы соответствующих «технологий». Обычно подобная настройка осуществляется при помощи инициализации базовой операционной системы. Дополнительные манипуляции для успешного проведения процедуры от юзера не потребуются.
- Схема IP-адресации. Технология, позволяющая однозначно идентифицировать хосты и сети, с которыми будет установлено соединение.
- Демоны TCP/IP протоколов. Это – серверы. Процессы, которые работают в фоновом режиме. Отвечают за выполнение запросов других операций.
Это всего лишь введение в весьма важную тему. Программеру и системному администратору потребуются большие знания в принципах работы Сети. Лишь это поможет настроить в заданном стандарте процесс обмена информацией.
Назначение
У многих возникает вопрос, какую задачу решает рассматриваемый тип протокола. Процесс передачи информации между устройствами требует, чтобы все подключенные компьютеры использовали одни и те же «технологии».
Каждый протокол будет применять собственные методы устранения ошибок, возникающих в процессе обмена информацией. Принципиальная схема корректировок будет сохраняться во всех случаях.
Файлы, которые были отправлены, будут разбиваться на отдельные пакеты, передаваемые на конечные устройства. Соединяются оные в строго установленной последовательности. Каждый пакет дополнительно имеет так называемый «контрольный байт». Это – компонент, позволяющий удостовериться в отсутствии ошибок. Если устройство обнаруживает баг в процессе обмена данными, пакет будет запрашиваться у «источника» снова.
Подобный процесс обеспечивает безопасность и стабильность передачи электронных материалов и приложений. Но передаваться документы смогут с ограниченной скоростью.
Стек протоколов TCP/IP – это совершенная модель. Она дает возможность настраивать взаимодействие компьютеров, подключать к ним разного рода сетевые устройства. Ключевое назначение «технологии» — обеспечение трафика крупных сетей, а также поддержка функционирования всего интернета.
Продолжение статьи читайте тут.
P. S. Интересуют компьютерные сети, сетевые технологии, протоколы передачи данных? Обратите внимание на следующие курсы в Otus:
- «Network engineer «;
- «Network engineer. Basic «.
Что такое протокол
Сейчас многие устройства и программы умеют связываться друг с другом: компьютеры — между собой, телефон — с наушниками, а серверы — с браузером. И довольно часто всё происходит без сбоев. Этим мы обязаны протоколам — вот о них и поговорим.
Что такое протокол
Протокол в ИТ — это набор правил, по которым устройства и программы обмениваются данными. Можно сказать, что это язык — в смысле, что это набор правил общения. Можно сказать, что это грамматика языка. Короче — набор правил.
Обычно в протоколе будут правила:
- Как открывать общение и приветствовать другую сторону.
- Как договориться с другой стороной о параметрах передачи данных.
- Что делать в случае ошибок и недопонимания.
- Как понять, что передача данных завершена.
Когда мы говорили про умный дом, то там многое было завязано на протоколы. Именно по этой причине приборы от разных производителей часто не могут работать вместе — у них просто нет общего протокола.
Физические и логические протоколы
Протоколы делятся на два вида — физические и логические.
Физические протоколы регулируют то, как именно и какие сигналы будут идти от одного устройства к другому. Например, импульсами по 5 вольт 100 раз в секунду или на определённой частоте радиосигналов. Эти протоколы нужны для того, чтобы наладить связь между устройствами. А уже после налаживания связи можно передавать данные.
Физические протоколы часто называют сигнальными, потому что они регулируют передачу физических сигналов между устройствами.
Логические протоколы отвечают за смысл и передачу данных, когда связь уже установлена. Например, у нас есть два блютус-устройства, телефон и наушники, которые выяснили друг про друга, что они могут работать по одному и тому же проколу. После того как они наладили связь, они могут использовать протокол передачи данных, чтобы узнать друг о друге получше:
- какая версия блютуса стоит на каждом устройстве;
- кто что умеет делать — только играть музыку или ещё может работать как гарнитура;
- есть ли поддержка музыкальных кодеков;
- какой уровень заряда на каждом устройстве;
- нужно ли использовать энергосберегающий режим и так далее.
Получается, что задача физического протокола — установить связь между устройствами, а логического — передавать данные по этой установленной связи.

Сетевые модели
Скорее всего, вы уже знаете, что браузеры получают данные от серверов по протоколу HTTPS, файлы — по FTP-протоколу, а сервером можно управлять по SSH-протоколу. Но так как все они используют похожие схемы установления связи и логики работы, сетевые протоколы объединяют в модели передачи данных в сети.
Модель (в этом случае) — это сборник протоколов и других вещей, которые вместе помогают решать более сложные задачи, чем то, на что способен один конкретный протокол.
Можно представить, что модель — это как комплексный обед в столовой. В него входит несколько блюд, в каждое блюдо входят какие-то продукты, а всё вместе — это сложный комплекс из питательных веществ, который помогает вам наесться, не думая о деталях: содержании клетчатки и витаминах, белках, жирах и углеводах.
Соответственно, сетевая модель — это «комплексный обед» из протоколов, которые разложены на разных уровнях и служат каждый своей цели.
В ИТ есть две основных сетевых модели передачи данных — OSI и стек TCP/IP. OSI расшифровывается как Open Systems Interconnection Model, открытая модель взаимосвязей систем. Её разберём сейчас, а TCP/IP — в отдельной статье.
Как устроена модель OSI
В OSI всё делится на 7 уровней, каждый из которых отвечает за что-то своё.
- Физический уровень отвечает за физические параметры связи — будет ли это радиосвязь, передача тока по проводам или оптический канал связи.
- Канальный уровень регулирует то, как именно будет использоваться физический канал связи и как будут передаваться и приниматься сигналы по этому каналу.
- Сетевой уровень задаёт правила адресации и доставки сообщения — как сделать так, чтобы наше сообщение получил нужный нам адресат.
- Транспортный уровень делает так, чтобы все сообщения отправлялись по очереди, а не так, чтобы один всё время что-то отправляет, а второй не знает, как вклиниться.
- Сеансовый уровень отвечает за связь между двумя программами, которые работают на разных компьютерах.
- Уровень представления используется для того, чтобы внутренние данные компьютера представить в том формате, который нужен для передачи этих данных.
- Прикладной уровень обеспечивает понятный способ связи по сети для разных программ.
Предполагается, что более высокие уровни используют для своей работы более низкие уровни. Например, пятый, сеансовый уровень исходит из того, что все остальные четыре нижних уровня работают как нужно и ему про это думать не надо. Это позволяет разным программистам сосредоточиться каждый на своих задачах и не тратить силы на работу с другими уровнями.

Что это нам даёт
Как пользователю интернета вам не нужно знать, как работают протоколы и сетевые модели. Но как разработчику вам полезно понимать механизм, благодаря которому компьютеры могут друг до друга докричаться.
И вот этот механизм:
- У нас есть набор правил, которые приняли все компьютеры, которые друг друга понимают.
- Эти правила как бы вложены друг в друга. По-другому можно сказать, что более высокоуровневые правила сидят на низкоуровневых.
- Благодаря этой вложенности мы можем делать очень сложно взаимодействующие машины: нам не надо изобретать новый способ связи между устройствами, нам достаточно использовать общепринятые протоколы.
На основании этих базовых понятий мы расскажем о главной сетевой модели современности — TCP/IP. Это всё присказка, а сказка впереди.