Files
SecondBrain/90 Library/Networking/Инкапсуляция данных.md
2026-05-31 10:18:48 +03:00

48 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
status: stable
type: concept
tags:
- network
- networking
created: 2025-12-17
updated: 2026-05-07
aliases:
- Инкапсуляция Данных
---
# Инкапсуляция Данных
Согласно моделям [[Модель OSI|OSI]] и TCP/IP данные передаются последовательно от приложения ниже по уровням, далее по физическому уровню от отправителя к получателю, а у получателя последовательно вверх к уровню приложения. Процесс "спуска" сверху вниз называется _**инкапсуляцией**_, а "подъем" снизу вверх - _**деинкапсуляцией**_
## Инкапсуляция
_Инкапсуляция данных_ - это процесс добавления к исходным данным, полученным с уровня приложения (L7), некоторой дополнительной служебной информации, которая позволяет надлежащим образом обрабатывать и передавать исходную информацию. Добавляться информация может как в заголовок (**header**), так и в конец (**footer**, **trailer**) данных.
## Деинкапсуляция
_Деинкапсуляция данных_ - процесс, очевидно, обратный инкапсуляции. Информация, полученная на уровне `n` в процессе инкапсуляции, обрабатывается тем же уровнем `n` в процессе деинкапсуляции и эта информация удаляется из данных.
![](Инкапсуляция%20данных_image.png)
## Процесс Инкапсуляции
1. Приложение получает какие-то данные (имеются ввиду L7+L6+L5), обрабатывает, инкапсулирует (как - не столь важно, это зависит от приложения, притом не обязательно, добавляя _headers_).
2. Транспортный (L4) уровень получает поток данных и разделяет на несколько частей. К каждой части добавляет заголовок, теперь это "**сегменты данных**". Заголовки содержат информацию о последовательности, что позволяет получателю собрать сегменты в полноценный поток данных.
3. Сетевой (L3) уровень получает сегменты данных, добавляя им заголовок, содержащий служебную информацию о маршрутизации для правильной доставки данных. Теперь сегмент называется пакетом или дейтаграммой (datagram).
4. Канальный (L2) уровень берет пакет и добавляет к нему **заголовок**, содержащий информацию для коммутации конкретным аппаратным компонентам, а также нижний **футер**, содержащий информацию, связанную с обнаружением ошибок. Здесь данные называются фреймом (_frame_) данных.
5. Физический (L1) уровень работает с фреймами, преобразуя их в физический сигнал.
## Процесс Деинкапсуляции
1. L1 принимает физический сигнал и преобразовывает в фреймы данных.
2. L2 проверяет заголовок фрейма, правильно ли он пришел (если нет - выбрасываем), дальше проверяет футер, если есть ошибка, то запрашивается повторная передача данных, иначе, пересылает выше.
3. L3 получает пакет и смотрит на заголовок (проверка правильности маршрутизации), если всё нормально, то сегмент данных пересылается дальше.
4. L4 проверяет заголовок сегмента, затем собирает все сегменты в нужном порядке для формирования потока данных.
5. L5+L6+L7 преобразуют поток данных по правилам конкретного ПО и выдают конечному пользователю.
> **Сегментирование данных**
>
>  Сегментирование - процесс разбиение сообщения на более мелкие единицы. Мультиплексирование - процесс получение нескольких потоков сегментированных данных.
>
> Сегментация имеет два основных преимущества:
>
> 1. Высокая скорость - нет нужны отправлять весь файл по одному каналу связи, можно отправить много сегментов по многим каналам.
> 2. Большая эффективность - при потере одного сегмента не надо перекачивать весь файл, а нужно заново скачать только этот сегмент.