Сетевое взаимодействие компьютеров является сложным процессом. Он может быть представлен как процесс передачи некоторого сообщения от программы, функционирующей на одном компьютере, программе, функционирующей на другом компьютере. Инициатором передачи сообщения может быть как пользователь, так и сама программа. Примером такого взаимодействия является отправка HTTP-запроса от web-браузера web-серверу и получение HTTP-ответа (web-страницы).
Для организации такого взаимодействия требуется решить целый комплекс задач, среди которых:
- организация исходного потока данных (сообщения) в пакеты;
- адресация компьютеров;
- адресация прикладных процессов;
- маршрутизация пакета в сложной сети при наличии нескольких альтернативных маршрутов;
- обеспечение совместимости различных сетевых технологий;
- обеспечение контроля и надежности передачи.
Для решения перечисленных задач применяют принцип декомпозиции, т.е. разбиения всего комплекса задач на отдельные подзадачи. Преимущества такого подхода очевидны и заключаются в следующем:
- упрощается постановка задачи и формализация требований;
- появляется возможность независимой работы разных групп специалистов над отдельными задачами;
- обеспечивается лучшая способность к модернизации за счет замены отдельных компонентов;
- упрощается процесс диагностики и настройки систем.
В случае решения задачи сетевого взаимодействия компьютеров принцип декомпозиции имеет свою специфику, заключающуюся в том, что каждая подзадача есть определенный этап передачи сообщения. При этом последовательность таких этапов имеет определенное направление «вниз» или «вверх». Направление «вниз» соответствует передачи сообщения от программы (пользователя) к аппаратным средствам, непосредственно передающим сигнал по линиям связи. Направление «вверх» - в противоположную сторону.
В соответствии с данной терминологией отдельные этапы передачи сообщения именуются уровнями (level). В силу того, что последовательность этапов передачи сообщения (уровней) определена и обычно не может изменяться, уровни условно располагают вертикально, один над другим, что соответствует направлениям передачи сообщения «вниз» или «вверх». Чем выше уровень, тем ближе он к пользователю, чем ниже – тем ближе к физической среде передачи сигнала. При этом для каждого уровня (за исключением самого верхнего и самого нижнего) можно определить два смежных, один из которых будет являться верхним, а другой – нижним относительно данного. Выше самого верхнего уровня будет находиться пользователь (прикладная программа), ниже самого нижнего – физическая среда передачи (кабель, радиоэфир).
Уровневая организация средств передачи сообщений полностью соответствует уровневой архитектуре программно-аппаратных средств современного компьютера, где можно выделить прикладное ПО, системные библиотеки, драйверы устройств, микрокод устройств, аппаратную реализацию.
Специфика задач, решаемых на каждом уровне, нашла свое отражение в понятии протокола. Протокол – правила обмена информацией, определенные на каком-либо уровне. Как именно реализован тот или иной протокол в системе зависит, прежде всего, от его уровня. Так, протоколы верхнего уровня реализованы чаще всего прикладными программами, протоколы средних уровней – компонентами операционной системы, нижних уровней – сетевым оборудованием, сетевыми адаптерами.
Общим принципом организации передачи данных в сети Интернет является пакетная передача. Согласно этому принципу все данные помещаются в пакеты определенной структуры. Как правило, пакет состоит из заголовка, содержащего служебную информацию, и поля данных, содержащего «полезную» информацию. Структура и размер пакета, состав и назначение служебных полей заголовка являются важной частью спецификации протокола.
Важнейшим принципом последовательной обработки сообщения (пакета) является инкапсуляция – процесс помещения пакета верхнего уровня в поле данных пакета нижнего уровня.
Таким образом, сообщение, проходя обработку «вниз» сообщение последовательно дополняется заголовками соответствующих уровней. Это можно представить как вложение одного сообщения с заголовком внутрь другого сообщения, что и означает термин «инкапсуляция». При обработке «вверх» происходит обратный процесс – заголовки прочитываются и отбрасываются, а вложенные сообщения извлекаются из поля данных.