ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

4 минуты чтени€

¬осьма€ часть тут.

‘ормат Type Length Value (TLV) €вл€етс€ еще одним широко используемым решением проблемы маршалинга данных. Ќа рисунке 1 показан пример протокола маршрутизации от промежуточной системы к промежуточной системе IS-IS.

–ис. 1 ѕример формата TLV дл€ IS-IS

Ќа рисунке 1 пакет состоит из заголовка, который обычно имеет фиксированную длину, а затем из набора TLV.  аждый TLV форматируетс€ на основе своего типа кода. ¬ этом случае показаны два типа TLV (в IS-IS есть много других типов; два используютс€ здесь дл€ иллюстрации). ѕервый тип - 135, который несет информацию о версии 4 протокола IP (IPv4). Ётот тип имеет несколько полей, некоторые из которых имеют фиксированную длину, например, метрика. ƒругие, однако, такие как префикс, имеют переменную длину; длина пол€ зависит от значени€, размещенного в каком-либо другом поле в TLV. ¬ этом случае поле длины префикса определ€ет длину пол€ префикса. —уществуют также суб-TLV, которые имеют аналогичный формат и несут информацию, св€занную с этой информацией IPv4. “ип 236 аналогичен 135, но он несет информацию по IPv6, а не IPv4.

ѕо существу, TLV можно рассматривать как полный набор автономной информации, переносимой в более крупном пакете. TLV состоит из трех частей:

  • “ип кода, который описывает формат данных
  • ƒлина, котора€ описывает общую длину данных
  • «начение или сами данные

‘орматы на основе TLV менее компактны, чем форматы фиксированной длины, поскольку они содержат больше метаданных в самом пакете. »нформаци€ о типе и длине, содержаща€с€ в данных, предоставл€ет информацию о том, где искать в словаре информацию о форматировании, а также информацию о грамматике дл€ использовани€ (как каждое поле отформатировано и так далее). ‘орматы TLV компенсируют возможность измен€ть форматирование информации, передаваемой протоколом, не требу€ обновлени€ каждого устройства или позвол€€ некоторым реализаци€м выбирать не поддерживать все возможные TLV по сравнению с дополнительными метаданными, передаваемыми по проводам.

TLV обычно считаютс€ очень гибким способом маршалинга данных в протоколах.


—ловари общих объектов

ќдной из основных проблем с пол€ми фиксированной длины €вл€етс€ фиксированность определений полей; если вы хотите изменить протокол пол€ фиксированной длины, вам нужно увеличить номер версии и изменить пакет, или вы должны создать новый тип пакета с различными кодировками дл€ полей. ‘орматирование TLV решает эту проблему путем включени€ встроенных метаданных с передаваемыми данными за счет передачи большего количества информации и уменьшени€ компактности. ќбщие скомпилированные словари пытаютс€ решить эту проблему, помеща€ словарь в общий файл (или библиотеку), а не в спецификацию. –исунок 2 иллюстрирует процесс.

Ќа рисунке 2 этот процесс начинаетс€ с того, что разработчик создает структуру данных дл€ организации определенного набора данных, которые будут передаватьс€ по сети.  ак только структура данных построена, она компилируетс€ в функцию или, возможно, копируетс€ в библиотеку функций (1) и копируетс€ в приемник (2). «атем приемник использует эту библиотеку дл€ написани€ приложени€ дл€ обработки этих данных (3). Ќа стороне передатчика необработанные данные кодируютс€ в формат (4), а затем передаютс€ по протоколу через сеть к приемнику (5). ѕолучатель использует свою общую копию формата данных (6) дл€ декодировани€ данных и передачи декодированной информации принимающему приложению (7).

Ётот вид системы сочетает в себе гибкость модели на основе TLV с компактностью протокола фиксированного пол€. ’от€ пол€ имеют фиксированную длину, определени€ полей задаютс€ таким образом, чтобы обеспечить быстрое и гибкое обновление при необходимости изменени€ формата маршалинга. ѕока обща€ библиотека отделена от приложени€, использующего данные, словарь и грамматика могут быть изменены путем распространени€ новой версии исходной структуры данных.

–ис. 2 ќбщие скомпилированные словари

ѕотребуетс€ ли Ђƒень флагаї, если будет распространена нова€ верси€ структуры данных? Ќеоб€зательно. ≈сли номер версии включен в структуру данных, чтобы получатель мог сопоставить полученные данные с правильной структурой данных, то в системе одновременно может существовать несколько версий структуры данных.  ак только отправитель не найден с использованием более старого формата данных, стара€ структура может быть безопасно отброшена по всей системе.

¬ажно: в то врем€ как системы фиксированного формата и TLV рассчитывают на то, что разработчики читают спецификации и пишут код как форму совместного использовани€ грамматики и словар€, системы общей структуры данных, описанные в этих лекци€х, рассчитывают на то, что общий словарь будет распростран€тьс€ каким-то другим способом. ≈сть много различных способов сделать -это, например, нова€ верси€ программного обеспечени€ может быть распространена среди всех отправителей и получателей, или некотора€ форма распределенной базы данных может использоватьс€ дл€ обеспечени€ того, чтобы все отправители и получатели получали обновленные словари данных, или некотора€ часть приложени€, котора€ специально управл€ет маршалингом данных, может быть распределена и сопр€жена с приложением, которое генерирует и потребл€ет данные. Ќекоторые системы такого рода передают общий словарь как часть первоначальной настройки сеанса.