на каком уровне osi ip адрес источника добавляется в pdu в процессе инкапсуляции
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Модель OSI – это просто!
Модель Open Systems Interconnection (OSI) – это скелет, фундамент и база всех сетевых сущностей. Модель определяет сетевые протоколы, распределяя их на 7 логических уровней. Важно отметить, что в любом процессе, управление сетевой передачей переходит от уровня к уровню, последовательно подключая протоколы на каждом из уровней.
Онлайн курс по Кибербезопасности
Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии
Видео: модель OSI за 7 минут
Нижние уровни отвечают за физические параметры передачи, такие как электрические сигналы. Да – да, сигналы в проводах передаются с помощью представления в токи 🙂 Токи представляются в виде последовательности единиц и нулей (1 и 0), затем, данные декодируются и маршрутизируются по сети. Более высокие уровни охватывают запросы, связанные с представлением данных. Условно говоря, более высокие уровни отвечают за сетевые данные с точки зрения пользователя.
Модель OSI была изначально придумана как стандартный подход, архитектура или паттерн, который бы описывал сетевое взаимодействие любого сетевого приложения. Давайте разберемся поподробнее?
#01: Физический (physical) уровень
На первом уровне модели OSI происходит передача физических сигналов (токов, света, радио) от источника к получателю. На этом уровне мы оперируем кабелями, контактами в разъемах, кодированием единиц и нулей, модуляцией и так далее.
Отметим, что в качестве носителя данных могут выступать не только электрические токи. Радиочастоты, световые или инфракрасные волны используются также повсеместно в современных сетях.
Сетевые устройства, которые относят к первому уровню это концентраторы и репитеры – то есть «глупые» железки, которые могут просто работать с физическим сигналом, не вникая в его логику (не декодируя).
#02: Канальный (data Link) уровень
Представьте, мы получили физический сигнал с первого уровня – физического. Это набор напряжений разной амплитуды, волн или радиочастот. При получении, на втором уровне проверяются и исправляются ошибки передачи. На втором уровне мы оперируем понятием «фрейм», или как еще говорят «кадр». Тут появляются первые идентификаторы – MAC – адреса. Они состоят из 48 бит и выглядят примерно так: 00:16:52:00:1f:03.
Канальный уровень сложный. Поэтому, его условно говоря делят на два подуровня: управление логическим каналом (LLC, Logical Link Control) и управление доступом к среде (MAC, Media Access Control).
На этом уровне обитают такие устройства как коммутаторы и мосты. Кстати! Стандарт Ethernet тоже тут. Он уютно расположился на первом и втором (1 и 2) уровнях модели OSI.
#03: Сетевой (network) уровень
Идем вверх! Сетевой уровень вводит термин «маршрутизация» и, соответственно, IP – адрес. Кстати, для преобразования IP – адресов в MAC – адреса и обратно используется протокол ARP.
Именно на этом уровне происходит маршрутизация трафика, как таковая. Если мы хотим попасть на сайт wiki.merionet.ru, то мы отправляем DNS – запрос, получаем ответ в виде IP – адреса и подставляем его в пакет. Да – да, если на втором уровне мы используем термин фрейм/кадр, как мы говорили ранее, то здесь мы используем пакет.
Из устройств здесь живет его величество маршрутизатор 🙂
Процесс, когда данные передаются с верхних уровней на нижние называется инкапсуляцией данных, а когда наоборот, наверх, с первого, физического к седьмому, то этот процесс называется декапсуляцией данных
#04: Транспортный (transport) уровень
Транспортный уровень, как можно понять из названия, обеспечивает передачу данных по сети. Здесь две основных рок – звезды – TCP и UDP. Разница в том, что различный транспорт применяется для разной категории трафика. Принцип такой:
#05: Сеансовый (session) уровень
Попросите любого сетевого инженера объяснить вам сеансовый уровень. Ему будет трудно это сделать, инфа 100%. Дело в том, что в повседневной работе, сетевой инженер взаимодействует с первыми четырьмя уровнями – физическим, канальным, сетевым и транспортным. Остальные, или так называемые «верхние» уровни относятся больше к работе разработчиков софта 🙂 Но мы попробуем!
Сеансовый уровень занимается тем, что управляет соединениями, или попросту говоря, сессиями. Он их разрывает. Помните мем про «НЕ БЫЛО НИ ЕДИНОГО РАЗРЫВА»? Мы помним. Так вот, это пятый уровень постарался 🙂
#06 Уровень представления (presentation)
На шестом уровне творится преобразование форматов сообщений, такое как кодирование или сжатие. Тут живут JPEG и GIF, например. Так же уровень ответственен за передачу потока на четвертый (транспортный уровень).
#07 Уровень приложения (application)
На седьмом этаже, на самой верхушке айсберга, обитает уровень приложений! Тут находятся сетевые службы, которые позволяют нам, как конечным пользователям, серфить просторы интернета. Гляньте, по какому протоколу у вас открыта наша база знаний? Правильно, HTTPS. Этот парень с седьмого этажа. Еще тут живут простой HTTP, FTP и SMTP.
Полный курс по Сетевым Технологиям
В курсе тебя ждет концентрат ТОП 15 навыков, которые обязан знать ведущий инженер или senior Network Operation Engineer
Функции сетевого уровня
Сетевой уровень, или Уровень OSI 3, предоставляет службы для обмена отдельными частями данных по сети между определенными конечными устройствами. Для выполнения этих функций, сетевой уровень использует четыре базовых процесса:
Адресация
Во-первых, Сетевой уровень должен обеспечить механизм для адресации этих конечных устройств. Если отдельные части данных должны быть направлены к конечному устройству, у того устройства должен быть уникальный адрес. В сети IPv4, когда этот адрес добавляется к устройству, то устройство называют узел или хост.
Инкапсуляция
Маршрутизация
Затем, в функциональные обязанности сетевого уровня входит предоставление служб, чтобы направить эти пакеты к их конечному хосту. Хосты источника и назначения не всегда находятся в той же самой сети. Фактически, пакету, возможно, придется пройти через множество различных сетей. По пути следования каждый пакет должен вестись через сеть, чтобы достигнуть своего конечного места назначения. Промежуточные устройства, которые соединяют сети, называются маршрутизаторами. Роль маршрутизатора состоит в выборе пути следования пакетов и в их направлении к месту назначения. Этот процесс известен как маршрутизация.
Во время маршрутизации через объединенную сеть пакет может пересечь много посреднических устройств. Каждый маршрут, которым следует пакет, чтобы достигнуть следующего устройства, называют хопом. Во время передачи пакета его содержимое (PDU Транспортного уровня) остается нетронутым, пока не будет достигнут конечный хост.
Декапсуляция
Наконец, пакет достигает конечного хоста и обрабатывается на Уровне 3. Узел исследует адрес получателя, чтобы проверить, что пакет адресовался этому устройству. Если адрес корректен, пакет декапсулируется Сетевым уровнем и PDU 4-го Уровня, содержавшийся в пакете, передается соответствующей службе Транспортного уровня.
В отличие от Транспортного уровня (Уровень OSI 4), который управляет транспортом данных между процессами, работающими на каждом конечном узле, протоколы Сетевого уровня определяют структуру пакетов и обработку, используемую для передачи данных от одного узла до другого узла. Работа безотносительно к данным приложения, которые содержатся в каждом пакете, позволяет Сетевому уровню переносить пакеты для множества типов коммуникаций между множеством хостов.
Простое пособие по сетевой модели OSI для начинающих
Открытая сетевая модель OSI (Open Systems Interconnection model) состоит из семи уровней. Что это за уровни, как устроена модель и какова ее роль при построении сетей — в статье.
Модель OSI является эталонной. Эталонная она потому, что полное название модели выглядит как «Basic Reference Model Open Systems Interconnection model», где Basic Reference Model означает «эталонная модель». Вначале рассмотрим общую информацию, а потом перейдем к частным аспектам.
Принцип устройства сетевой модели
Сетевая модель OSI имеет семь уровней, иерархически расположенных от большего к меньшему. То есть, самым верхним является седьмой (прикладной), а самым нижним — первый (физический). Модель OSI разрабатывалась еще в 1970-х годах, чтобы описать архитектуру и принципы работы сетей передачи данных. Важно помнить, что данные передаются не только по сети интернет, но и в локальных сетях с помощью проводных или беспроводных соединений.
В процессе передачи данных всегда участвуют устройство-отправитель, устройство-получатель, а также сами данные, которые должны быть переданы и получены. С точки зрения рядового пользователя задача элементарна — нужно взять и отправить эти данные. Все, что происходит при отправке и приеме данных, детально описывает семиуровневая модель OSI.
На седьмом уровне информация представляется в виде данных, на первом — в виде бит. Процесс, когда информация отправляется и переходит из данных в биты, называется инкапсуляцией. Обратный процесс, когда информация, полученная в битах на первом уровне, переходит в данные на седьмом, называется декапсуляцией. На каждом из семи уровней информация представляется в виде блоков данных протокола — PDU (Protocol Data Unit).
Рассмотрим на примере: пользователь 1 отправляет картинку, которая обрабатывается на седьмом уровне в виде данных, данные должны пройти все уровни до самого нижнего (первого), где будут представлены как биты. Этот процесс называется инкапсуляцией. Компьютер пользователя 2 принимает биты, которые должны снова стать данными. Этот обратный процесс называется декапсуляция. Что происходит с информацией на каждом из семи уровней, как и где биты переходят в данные мы разберем в этой статье.
Первый, физический уровень (physical layer, L1)
Начнем с самого нижнего уровня. Он отвечает за обмен физическими сигналами между физическими устройствами, «железом». Компьютерное железо не понимает, что такое картинка или что на ней изображено, железу картинка понятна только в виде набора нулей и единиц, то есть бит. В данном случае бит является блоком данных протокола, сокращенно PDU (Protocol Data Unit).
Каждый уровень имеет свои PDU, представляемые в той форме, которая будет понятна на данном уровне и, возможно, на следующем до преобразования. Работа с чистыми данными происходит только на уровнях с пятого по седьмой.
Устройства физического уровня оперируют битами. Они передаются по проводам (например, через оптоволокно) или без проводов (например, через Bluetooth или IRDA, Wi-Fi, GSM, 4G и так далее).
Второй уровень, канальный (data link layer, L2)
Когда два пользователя находятся в одной сети, состоящей только из двух устройств — это идеальный случай. Но что если этих устройств больше?
Второй уровень решает проблему адресации при передаче информации. Канальный уровень получает биты и превращает их в кадры (frame, также «фреймы»). Задача здесь — сформировать кадры с адресом отправителя и получателя, после чего отправить их по сети.
У канального уровня есть два подуровня — это MAC и LLC. MAC (Media Access Control, контроль доступа к среде) отвечает за присвоение физических MAC-адресов, а LLC (Logical Link Control, контроль логической связи) занимается проверкой и исправлением данных, управляет их передачей.
На втором уровне OSI работают коммутаторы, их задача — передать сформированные кадры от одного устройства к другому, используя в качестве адресов только физические MAC-адреса.
Третий уровень, сетевой (network layer, L3)
На третьем уровне появляется новое понятие — маршрутизация. Для этой задачи были созданы устройства третьего уровня — маршрутизаторы (их еще называют роутерами). Маршрутизаторы получают MAC-адрес от коммутаторов с предыдущего уровня и занимаются построением маршрута от одного устройства к другому с учетом всех потенциальных неполадок в сети.
На сетевом уровне активно используется протокол ARP (Address Resolution Protocol — протокол определения адреса). С помощью него 64-битные MAC-адреса преобразуются в 32-битные IP-адреса и наоборот, тем самым обеспечивается инкапсуляция и декапсуляция данных.
Четвертый уровень, транспортный (transport layer, L4)
Все семь уровней модели OSI можно условно разделить на две группы:
Уровни группы Media Layers (L1, L2, L3) занимаются передачей информации (по кабелю или беспроводной сети), используются сетевыми устройствами, такими как коммутаторы, маршрутизаторы и т.п. Уровни группы Host Layers (L4, L5, L6, L7) используются непосредственно на устройствах, будь то стационарные компьютеры или портативные мобильные устройства.
Четвертый уровень — это посредник между Host Layers и Media Layers, относящийся скорее к первым, чем к последним, его главной задачей является транспортировка пакетов. Естественно, при транспортировке возможны потери, но некоторые типы данных более чувствительны к потерям, чем другие. Например, если в тексте потеряются гласные, то будет сложно понять смысл, а если из видеопотока пропадет пара кадров, то это практически никак не скажется на конечном пользователе. Поэтому, при передаче данных, наиболее чувствительных к потерям на транспортном уровне используется протокол TCP, контролирующий целостность доставленной информации.
Для мультимедийных файлов небольшие потери не так важны, гораздо критичнее будет задержка. Для передачи таких данных, наиболее чувствительных к задержкам, используется протокол UDP, позволяющий организовать связь без установки соединения.
При передаче по протоколу TCP, данные делятся на сегменты. Сегмент — это часть пакета. Когда приходит пакет данных, который превышает пропускную способность сети, пакет делится на сегменты допустимого размера. Сегментация пакетов также требуется в ненадежных сетях, когда существует большая вероятность того, что большой пакет будет потерян или отправлен не тому адресату. При передаче данных по протоколу UDP, пакеты данных делятся уже на датаграммы. Датаграмма (datagram) — это тоже часть пакета, но ее нельзя путать с сегментом.
Главное отличие датаграмм в автономности. Каждая датаграмма содержит все необходимые заголовки, чтобы дойти до конечного адресата, поэтому они не зависят от сети, могут доставляться разными маршрутами и в разном порядке. Датаграмма и сегмент — это два PDU транспортного уровня модели OSI. При потере датаграмм или сегментов получаются «битые» куски данных, которые не получится корректно обработать.
Первые четыре уровня — специализация сетевых инженеров, но с последними тремя они не так часто сталкиваются, потому что пятым, шестым и седьмым занимаются разработчики.
Пятый уровень, сеансовый (session layer, L5)
Пятый уровень оперирует чистыми данными; помимо пятого, чистые данные используются также на шестом и седьмом уровне. Сеансовый уровень отвечает за поддержку сеанса или сессии связи. Пятый уровень оказывает услугу следующему: управляет взаимодействием между приложениями, открывает возможности синхронизации задач, завершения сеанса, обмена информации.
Службы сеансового уровня зачастую применяются в средах приложений, требующих удаленного вызова процедур, т.е. чтобы запрашивать выполнение действий на удаленных компьютерах или независимых системах на одном устройстве (при наличии нескольких ОС).
Примером работы пятого уровня может служить видеозвонок по сети. Во время видеосвязи необходимо, чтобы два потока данных (аудио и видео) шли синхронно. Когда к разговору двоих человек прибавится третий — получится уже конференция. Задача пятого уровня — сделать так, чтобы собеседники могли понять, кто сейчас говорит.
Шестой уровень, представления данных (presentation layer, L6)
О задачах уровня представления вновь говорит его название. Шестой уровень занимается тем, что представляет данные (которые все еще являются PDU) в понятном человеку и машине виде. Например, когда одно устройство умеет отображать текст только в кодировке ASCII, а другое только в UTF-8, перевод текста из одной кодировки в другую происходит на шестом уровне.
Шестой уровень также занимается представлением картинок (в JPEG, GIF и т.д.), а также видео-аудио (в MPEG, QuickTime). Помимо перечисленного, шестой уровень занимается шифрованием данных, когда при передаче их необходимо защитить.
Седьмой уровень, прикладной (application layer)
Седьмой уровень иногда еще называют уровень приложений, но чтобы не запутаться можно использовать оригинальное название — application layer. Прикладной уровень — это то, с чем взаимодействуют пользователи, своего рода графический интерфейс всей модели OSI, с другими он взаимодействует по минимуму.
Все услуги, получаемые седьмым уровнем от других, используются для доставки данных до пользователя. Протоколам седьмого уровня не требуется обеспечивать маршрутизацию или гарантировать доставку данных, когда об этом уже позаботились предыдущие шесть. Задача седьмого уровня — использовать свои протоколы, чтобы пользователь увидел данные в понятном ему виде.
Протоколы здесь используют UDP (например, DHCP, FTP) или TCP (например, HTTP, HTTPS, SFTP (Simple FTP), DNS). Прикладной уровень является самым верхним по иерархии, но при этом его легче всего объяснить.
Критика модели OSI
Семиуровневая модель была принята в качестве стандарта ISO/IEC 7498, действующего по сей день, однако, модель имеет свои недостатки. Среди основных недостатков говорят о неподходящем времени, плохой технологии, поздней имплементации, неудачной политике.
Первый недостаток — это неподходящее время. На разработку модели было потрачено неоправданно большое количество времени, но разработчики не уделили достаточное внимание существующим в то время стандартам. В связи с этим модель обвиняют в том, что она не отражает действительность. В таких утверждениях есть доля истины, ведь уже на момент появления OSI другие компании были больше готовы работать с получившей широкое распространение моделью TCP/IP.
Вторым недостатком называют плохую технологию. Как основной довод в пользу того, что OSI — это плохая технология, приводят распространенность стека TCP/IP. Протоколы OSI часто дублируют другу друга, функции распределены по уровням неравнозначно, а одни и те же задачи могут быть решены на разных уровнях.
Разделение на семь уровней было скорее политическим, чем техническим. При построении сетей в реальности редко используют уровни 5 и 6, а часто можно обойтись только первыми четырьмя. Даже изначальное описание архитектуры в распечатанном виде имеет толщину в один метр.
Кроме того, в отличие от TCP/IP, OSI никогда не ассоциировалась с UNIX. Добиться широкого распространения OSI не получилось потому, что она проектировалась как закрытая модель, продвигаемая Европейскими телекоммуникационными компаниями и правительством США. Стек протоколов TCP/IP изначально был открыт для всех, что позволило ему набрать популярность среди сторонников открытого программного кода.
Даже несмотря на то, что основные проблемы архитектуры OSI были политическими, репутация была запятнана и модель не получила распространения. Тем не менее, в сетевых технологиях, при работе с коммутацией даже сегодня обычно используют модель OSI.
Вывод, роль модели OSI при построении сетей
В статье мы рассмотрели принципы построения сетевой модели OSI. На каждом из семи уровней модели выполняется своя задача. В действительности архитектура OSI сложнее, чем мы описали. Существуют и другие уровни, например, сервисный, который встречается в интеллектуальных или сотовых сетях, или восьмой — так называют самого пользователя.
Как мы упоминали выше, оригинальное описание всех принципов построения сетей в рамках этой модели, если его распечатать, будет иметь толщину в один метр. Но компании активно используют OSI как эталон. Мы перечислили только основную структуру словами, понятными начинающим.
Модель OSI служит инструментом при диагностике сетей. Если в сети что-то не работает, то гораздо проще определить уровень, на котором произошла неполадка, чем пытаться перестроить всю сеть заново.
Зная архитектуру сети, гораздо проще ее строить и диагностировать. Как нельзя построить дом, не зная его архитектуры, так невозможно построить сеть, не зная модели OSI. При проектировании важно учитывать все. Важно учесть взаимодействие каждого уровня с другими, насколько обеспечивается безопасность, шифрование данных внутри сети, какой прирост пользователей выдержит сеть без обрушения, будет ли возможно перенести сеть на другую машину и т.д. Каждый из перечисленных критериев укладывается в функции одного из семи уровней.
Курс по основам компьютерных сетей на базе оборудования Cisco. Этот курс поможет вам подготовиться к экзаменам CCENT/CCNA, так как за его основу взят курс Cisco ICND1.
1.16 Принцип инкапсуляции данных, фрагментации и декапсуляции в моделях TCP/IP и OSI 7
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей, напомню, что эти записи основаны на программе Cisco ICND1 и помогут вам подготовиться к экзаменам CCENT/CCNA. Эта запись обобщает информацию, полученную нами в четырех предыдущих. Разобравшись с процессами инкапсуляции и декапсуляции данных, у вас появится представление о том, как работает компьютерная сеть и почему уровни модели передачи данных и их функционал изолированы друг от друга.
Перед началом я хотел бы вам напомнить, что ознакомиться с опубликованными материалами первой части нашего курса можно по ссылке: «Основы взаимодействия в компьютерных сетях».
1.16.1 Введение
Эта тема подводит итог четырем предыдущим и объединяет их воедино, ранее мы разбирались с моделями передачи данных: сначала мы рассмотрели семуровневую модель передачи данных OSI 7, а затем модель стека протоколов TCP/IP, а до этого мы узнали в чем польза от декомпозиции задачи сетевого взаимодействия и в чем разница между протоколами и службами. Мы очень подробно рассмотрели процессы, происходящие на различных уровнях моделей, перечислили устройства и протоколы, которые выполняют функции того или иного уровня, но мы практически не разбирались с тем, что происходит с данными, когда они переходят с одного уровня на другой.
И на самом деле, процесс передачи данных с одного уровня на другой очень важен для понимания принципов работы сетевых устройств, компьютерных сетей и протоколов, так как вся суть работы протоколов заключена в заголовках, которые добавляются или убираются в зависимости от того, с какого уровня на какой переходят данные. Процесс добавления заголовка поверх существующего называется инкапсуляция данных, это когда данные движутся с более высокого уровня вниз (то есть при подготовке данных к передаче), процесс снятия заголовка называется декапсуляция данных, это когда данные движутся снизу вверх, то есть при приеме.
1.16.2 Принцип инкапсуляции данных в компьютерной сети
В других темах мы уже не раз упоминали, что данные, передаваемые по сети, должны пройти процесс обработки как на передающей стороне, так и на принимающей. Когда передающая сторона готовит данные к передаче – это процесс инкапсуляции данных, и наоборот, когда принимающая сторона начинает обрабатывать входящую последовательность бит и формировать из нее сообщения – это процесс декапсуляции. Начнем мы с передающей стороны и посмотрим, что происходит с данными, когда они готовятся к передаче.
Процессы инкапсуляции и декапсуляции будем рассматривать на примере модели стека протоколов TCP/IP, можно было бы это сделать и на примере эталонной модели сетевого взаимодействия, но это будет дольше, а принцип один и тот же, с той лишь разницей, что данные в модели OSI 7 никак не фрагментируются при их переходе с седьмого уровня на пятый, с ними просто происходят какие-то изменения (они архивируются, кодируются, шифруются, в общем, как-то преобразуются), но они не разбиваются на сообщения, которые затем будут передаваться по сети, фрагментация начинается только на транспортном уровне.
В обеих моделях передачи данных на каждом уровне, начиная с транспортного, и кроме физического, идет процесс инкапсуляции данных, то есть на каждом уровне к имеющимся данным добавляется заголовок и при необходимости к данным может быть добавлена метка конца. На транспортном уровне еще происходит процесс фрагментации данных, то есть разбиение больших данных, которые отправляет пользователь, на маленькие сообщения, которые удобно передавать по сети (фрагментация может происходит еще и на сетевом уровне, но это не совсем стандартная ситуация, поэтому сейчас мы ее не рассматриваем). На физическом уровне модели передачи данных упакованные в несколько слоев сообщения превращаются в последовательность бит, чтобы затем отправиться в среду передачи данных.
Что содержится в заголовках, которыми упаковываются данные? Это зависит от уровня модели передачи данных и того протокола, чей заголовок добавляется к сообщению, самые важные для нас протоколы и заголовки мы рассмотрим (IPv4, IPv6, TCP, UDP, Ethernet), но если говорить в общем, то заголовки содержат служебную информацию, которая помогает устройствам компьютерной сети определить: кому принадлежит данное сообщение, куда его дальше отправить, не повредилось ли сообщение, какое сообщение в полученной последовательности является первым, а какое вторым и многое другое.
Принцип инкапсуляции данных для модели стека протоколов TCP/IP показан ниже на Рисунке 1.16.1.
Рисунок 1.16.1 Принцип инкапсуляции данных в модели стека протоколов TCP/IP
Здесь у нас есть пользователь, который хочет отправить свое другу сообщение: «Привет, Вася!». Этот пользователь открывает почтовый клиент, вводит сообщение и нажимает кнопку «Отправить». Пока пользователь вводит сообщение и пока его обрабатывает почтовый клиент, оно представлено в виде «Пользовательских данных», как только это сообщение попадет на транспортный уровень, он превратится в сегмент или дейтаграмму (в зависимости от протокола, который будет использован для передачи: TCP или UDP), более того, если пользовательские данные будут слишком большими, то на транспортном уровне будет выполнена фрагментация, то есть данные пользователя будут разбиты на сообщения поменьше и к каждому сообщению будет добавлен заголовок транспортного уровня, по которому принимающая сторона сможет снова собрать сообщение, которое послал пользователь, а также определить: какому приложение следует отправить полученные данные на обработку.
После того, как транспортный уровень закончит свои операции, он передаст получившиеся сообщения на сетевой уровень, сетевой уровень поверх заголовка транспортного уровня добавит свой заголовок и получится пакет, то есть для сетевого уровня данными уже являются сегменты и дейтаграммы, которые приходят к нему с транспортного уровня. По заголовку сетевого уровня маршрутизаторы/роутеры смогут составить маршрут, по которому будет двигаться пакет в компьютерной сети.
Далее пакеты спустятся на канальный уровень, для канального уровня данными уже являются пакеты. На канальном уровне поверх заголовка сетевого уровня будет добавлен заголовок канального уровня, но, кроме того, после того, как будет добавлен заголовок, клиентский компьютер посчитает контрольную сумму получившейся конструкции и запишет ее после пользовательских данных, чтобы принимающее устройство смогло проверить: а не повредились ли данные при передаче по сети. Вся конструкция целиком называется кадром. Сетевые карты компьютеров и коммутаторы для передачи данных пользуются заголовками канального уровня.
Перед тем, как отправить данные в канал связи, передающий компьютер превратит полученные кадры в последовательность бит. Собственно, сама передача данных ведется в физической среде, которая определяет скорость передачи данных и некоторые другие важные характеристики компьютерной сети. Тут стоит сказать, что все вышеописанные операции ведутся внутри передающего компьютера и всё это вместе называется инкапсуляцией данных. Если говорить о устройствах физического уровня, то можно вспомнить хабы и сетевые концентраторы с их недостатками, к счастью, они уже не используются.
Мы рассмотрели инкапсуляцию данных в модели TCP/IP, если говорить про модель OSI 7, то здесь будет несколько незначительных отличий, о которых мы уже говорили выше, основной принцип останется тем же.
1.16.3 Декапсуляция данных
Давайте теперь посмотрим, что будет происходить на принимающей стороне, то есть разберемся с принципом декапсуляции данных в моделях TCP/IP и OSI 7. Декапсуляция данных – это процесс обратный инкапсуляции, если при подготовке данных к передаче мы их запаковывали, то на принимающей стороне мы их будем распаковывать, если все понятно, то можете пропустить раздел этот раздел, если нет, то давайте разбираться. Декапсуляция данных показана на Рисунке 1.16.2.
Рисунок 1.16.2 Принцип декапсуляции данных в модели стека протоколов TCP/IP
Как видите, второй рисунок ничем не отличается от первого, разница только в направлении стрелки, которая показывает, что компьютер Васи занимается приемом данных, то есть идет процесс декапсуляции данных. Итак, компьютер Васи, подключенный витой парой к компьютерной сети получает сообщения на скорости 100 Мбит/c, которые на физическом уровне представлены в виде последовательности бит, эти биты поступают на канальный уровень и на нем принимающий компьютер собирает из них кадры, по заголовку кадра компьютер Васи понимает, что это сообщение принадлежит ему, а по контрольной сумме компьютер понимает, что сообщение не было повреждено в процессе передачи по сети.
Компьютер Васи понимает, что пользователь не сможет самостоятельно разобраться с кадрами и понять, что в них находится, кроме того, компьютер Васи может быть транзитным устройством, то есть передавать данные дальше, ему нужно убедиться, что эти данные действительно для него, чтобы в этом убедиться, ему нужно убрать заголовок канального уровня и контрольную сумму и заглянуть в заголовок сетевого уровня, в заголовке сетевого уровня находятся логические адреса, которые однозначно идентифицируют узел в компьютерной сети. Принимающий компьютер проанализировал заголовок сетевого уровня и понял, что эти данные действительно для него и их нужно обрабатывать дальше, поэтому он снимает сетевой заголовок и видит заголовок транспортного уровня.
Заголовок транспортного уровня содержит подсказку для компьютера Васи о том, в какой последовательности нужно собрать сегменты, чтобы из них получились исходные данные, а также по этому заголовку компьютер видит какому прикладному приложению отправить полученные данные на обработку, в нашем случае это почтовый клиент. Как только почтовый клиент получит данные от транспортного уровня и обработает их, он оповестит Васю о том, что пришло новое сообщение. Давайте объединим два наших рисунка, чтобы увидеть картину целиком.
Рисунок 1.16.3 Инкапсуляция и декапсуляция данных в модели стека протоколов TCP/IP или процесс приема и передачи данных в компьютерной сети
Из рисунка видно, что при помощи протокола прикладного уровня общаются клиентские приложения, на транспортном уровне происходит взаимодействие двух компьютеров, как логических устройств, также у компьютеров есть сетевая библиотека, которая помогает ему принимать решения о том, что делать с полученными пакетами, а также у компьютера есть такое устройство, как сетевая карта, которая дает ему доступ к физическим ресурсам компьютерной сети, то есть позволяет подключаться к этой самой сети.
Как видите, ничего сложного в декапсусляции и инкапсуляции нет, это похоже на процесс запаковки и распаковки конфет: на заводе они запаковываются в фантики, а перед тем как их съесть, вы эти фантики разворачиваете.
1.16.4 Выводы
Давайте подведем итоги разговору о принципе инкапсуляции и декапсуляции данных, который реализован в моделях передачи данных TCP/IP и OSI 7, то есть этот принцип работает во всех компьютерных сетях, как в самых маленьких, так и в самых больших, вне зависимости от типа сетевого трафика, передаваемого по компьютерной сети.
Пользователь или конечный потребитель услуги взаимодействует с приложениями, то есть с самым верхним уровнем модели передачи данных. То есть протоколы верхнего уровня используются для взаимодействия приложений друг с другом, так, например, http-клиент или просто браузер взаимодействует с http-сервером в сети Интернет по одноименному протоколу (в качестве примера веб-сервера можно привести сервер Apache), особенностью схемы взаимодействия клиент-сервер в данном случае является то, что ни клиентское, ни серверное приложение ничего не знают о существование компьютерной сети, даже если клиент находится в Сибири, а сервер в Нью-Йорке, так как от этих приложений эта информация скрыта, благодаря принципу инкапсуляции данных, эти приложения общаются на своем уровне при помощи http-сообщений: клиент шлет запросы, а сервер ответы.
С верхних уровней данные попадают на транспортный уровень, этот уровень отвечает за взаимодействие двух конечных узлов, он помогает узлам разделять трафик различных приложений при отправки и при получении, но кроме этого, транспортный уровень делит большие объемы данных, которые пользователи отправляют, на небольшие фрагменты, каждому такому фрагменту на транспортном уровне добавляется специальный заголовок, который нужен для того, чтобы принимающая сторона смогла собрать из мелких сообщений исходные данные. На транспортном уровне также еще нет представления о устройстве сети, так как транспортный уровень создает надежный виртуальный канал поверх ненадежной сети передачи данных, а нижние уровни от него изолированы.
Сообщения транспортного уровня спускаются на сетевой уровень и к ним добавляется сетевой заголовок, этот заголовок помогает маршрутизаторам определить путь, по которому будут следовать данный при их передаче из пункта А в пункт Б, то есть здесь у нас появляется представление о логической топологии компьютерной сети, но нет понимания того, как получить физический доступ к ресурсам нашей сети, эта информация сокрыта от сетевого уровня.
С сетевого уровня пакеты попадают на канальный уровень и к ним добавляются соответствующие заголовки, после чего они становятся кадрами. Канальный уровень дает доступ нашему компьютеру к реальным ресурсам компьютерной сети, то есть определяет интерфейсы и технологии, по которым будет осуществляться передача данных от узла к узлу. А также на канальном уровне реализована функция проверки целостности данных.
После того, как кадр будет сформирован, компьютер превратит его в последовательность нулей и единиц и отправит эту последовательность по линии связи. Если говорить коротко, то принцип инкапсуляции и декапсуляции данных решает проблему изоляции и разграничения функционала между уровнями модели передачи данных, это всё возможно благодаря тому, что на каждом уровне данные оборачиваются в дополнительный заголовок, когда они готовятся к передаче, а на приемной стороне эти заголовки снимаются.