Инкапсуля́ция
в
компью́терных сетя́х
— это метод построения модульных
сетевых протоколов
, при котором логически независимые функции сети
абстрагируются
от нижележащих механизмов путём включения или
инкапсулирования
этих механизмов в более высокоуровневые объекты.
Например, когда приложению требуется послать сообщение с помощью
UDP
, то производится последовательность действий:
в первую очередь приложение заполняет специальную
структуру данных
, в которой указывает информацию о получателе (сетевой протокол, IP-адрес, порт UDP);
передаёт сообщение, его длину и структуру с информацией о получателе обработчику протокола UDP (транспортный уровень);
обработчик UDP формирует датаграмму, в которой в качестве данных выступает сообщение, а в заголовках находится UDP-
порт
получателя (а также другие данные);
обработчик UDP передаёт сформированную датаграмму обработчику
IP
(сетевой уровень);
обработчик IP рассматривает переданную UDP датаграмму как данные и предваряет их своим заголовком (в котором, в частности, находится
IP-адрес
получателя, взятый из той же структуры данных приложения, и номер верхнего протокола);
полученный пакет обработчик IP передаёт на канальный уровень, который опять-таки рассматривает данный пакет как «сырые» данные;
обработчик канального уровня, аналогично предыдущим обработчикам, добавляет в начало свой заголовок (в котором так же указывается номер протокола верхнего уровня, в нашем случае это 0x0800(IP)) и, в большинстве случаев, добавляет конечную контрольную сумму, тем самым формируя кадр;
далее полученный кадр передаётся на физический уровень, который осуществляет преобразование битов в электрические или оптические сигналы и посылает их в среду передачи.
Итак, говоря более простым языком,
инкапсуляция
— это включение всего пакета одного протокола (то есть его заголовки и данные) внутрь пакета другого протокола в качестве передаваемой информации.