реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ASN.1, что это и как?
Zelepuk
сообщение Feb 8 2012, 15:15
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Волей случая соприкоснулся с абревиатурой ASN.1. Посмотрел в гугле: ASN.1 (англ. Abstract Syntax Notation One) — в области телекоммуникаций и компьютерных сетей язык для описания абстрактного синтаксиса данных (ASN.1), используемый OSI.
Достатачно обстрактное понятие. Кто-нибудь может на пальцах рассказать зачем это нужно и как применяется.
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 9 2012, 09:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



ASN.1 описывает некоторую структуру данных. Способ ее передачи задается отдельно. Применяется это все например в CryptoAPI (Windows) - там в ASN.1 описанных структурах генерятся данные (как результат работы крипто примитивов).
Вот, тут есть пример (но не CryptoAPI)
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Feb 9 2012, 17:17
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(XVR @ Feb 9 2012, 13:21) *
ASN.1 описывает некоторую структуру данных. Способ ее передачи задается отдельно. Применяется это все например в CryptoAPI (Windows) - там в ASN.1 описанных структурах генерятся данные (как результат работы крипто примитивов).
Вот, тут есть пример (но не CryptoAPI)


Спасибо за ответ!
Не могли бы вы немного пояснить(или дать источник где описывается), что подразумевается под "структурой данных" и зачем её описывать? Я пока могу рассуждать на уровне передачи байт в канале.
это некое кодирование?
пока тёмный лес...
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 10 2012, 05:48
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Zelepuk @ Feb 9 2012, 21:17) *
Не могли бы вы немного пояснить(или дать источник где описывается), что подразумевается под "структурой данных" и зачем её описывать?
Подразумевается, что вам надо передать не просто набор байтов, а некую более сложную сущность. Ну например вы хотите получить со своего прибора статистику работы, которая состоит из заголовка (структура из скажем 5 фиксированных полей) и самой статистики в виде массива пар - имя (в виде строки) и значение (в виде целого числа)

Этот формат можно описать в виде ASN.1, и передать в одной из кодировок (BER/PER/XER) в канал (UART например) в виде потока байтов

Цитата
Я пока могу рассуждать на уровне передачи байт в канале.
Это транспортный (не структурированный) уровень
Цитата
это некое кодирование?
Угу - это следующий уровень в иерархии представления данных
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 10 2012, 11:31
Сообщение #5


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Zelepuk @ Feb 9 2012, 19:17) *
Спасибо за ответ!
Не могли бы вы немного пояснить(или дать источник где описывается), что подразумевается под "структурой данных" и зачем её описывать? Я пока могу рассуждать на уровне передачи байт в канале.
это некое кодирование?
пока тёмный лес...


Да в принципе это просто такой древний примитивный способ сжатия при передаче данных.
В общем случае все можно передавать текстом как в HTTP, применить сжатие типа gzip и парсить по схеме на основе XML.
Но раньше для примитивных систем это было слишком накладно и по объему данных и по вычислительным ресурсам.
И решили переменные типизировать во первых, а во вторых по разному в зависимости от типа их кодировать.
Вот и появились при передаче целые, с плавающей точкой, текстовые, двоичные и т.д. переменные.
Некая спецификация в нотации ASN.1 просто описывает какие типы переменных могут встретиться в потоке, а отдельный стандарт кодирования еще и описывает как они кодируются в битовом представлении. Типы переменных могут быть и более сложными вложенными структурами. Но сути не меняет, все с целью уменьшить расходы по расшифровке и уменьшить объем передачи.
Но с другой стороны обмен спецификацией в нотации ASN.1 между независимыми разработчиками облегчает написание совместимых протоколов.
Хотя опять же нужна еще договоренность о кодировании снизу и о семантике сверху.
ASN.1 в этом смысле немного архаичен поскольку частично берет на себя и семантику.

Т.е. это такой стандарт предшественник XML, JSON и проч.
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Feb 10 2012, 19:02
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(XVR @ Feb 10 2012, 09:48) *
Подразумевается, что вам надо передать не просто набор байтов, а некую более сложную сущность. Ну например вы хотите получить со своего прибора статистику работы, которая состоит из заголовка (структура из скажем 5 фиксированных полей) и самой статистики в виде массива пар - имя (в виде строки) и значение (в виде целого числа)

Этот формат можно описать в виде ASN.1, и передать в одной из кодировок (BER/PER/XER) в канал (UART например) в виде потока байтов

Это транспортный (не структурированный) уровень
Угу - это следующий уровень в иерархии представления данных


спасибо, стало более понятней.
А существуют ли примеры протоколов где применяется ASN.1
Или лучше увидеть паспорт прибора, где описано как "забирать данные" по таким протоколам (как описание регистров в Modbus)
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 12 2012, 10:16
Сообщение #7


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Zelepuk @ Feb 10 2012, 21:02) *
спасибо, стало более понятней.
А существуют ли примеры протоколов где применяется ASN.1
Или лучше увидеть паспорт прибора, где описано как "забирать данные" по таким протоколам (как описание регистров в Modbus)


Похоже вы не до конца поняли. wink.gif

ASN.1 это нотация, а не протокол.
Вы можете взять любой протокол в котором есть хоть какое-то различение кодирования данных в зависимости от типа и описать его с помощью ASN.1
Самый распространенный случай применения ASN.1 это синтаксис MIB файлов для SNMP менеджеров.
Когда говорят о протоколе, то интересуются прежде всего кодированием, а нотация в котором оно описывается большого значения не имеет.
Просто в народе иногда отождествляют кодирование и ASN.1
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Feb 12 2012, 12:31
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Я с вашего позволения продолжу череду глупых вопросов по этой теме.
Например для реализации Modbus(где конечно нет кодирования), я просто собираю пакеты, отправляю, а затем принимаю на другой стороне и разбираю.
В случае с боле сложными протоколами, где применяется кодирование, какое место занимает ASN.1 в частности. Например в сети я нашёл декодер, где на входе должен быть некий файл описания (в файле описываются данные), а на выходе получаем *.c и *.h файлы.
Незнаю как применить полученные функции (в *.c файле)

лично мне интересно кодирование для IEC61850(протокол MMS)

Сообщение отредактировал Zelepuk - Feb 12 2012, 15:47
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 20:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01414 секунд с 7
ELECTRONIX ©2004-2016