Как стать автором
Обновить

Комментарии 66

наконец-то кто-то написал об asn.1

подозреваю флейм по поводу сабж vs xml ;)
Для ASN.1 есть же XER (не то что подумалось, а xml encoding rules), так что имхо нечего и спорить — из ASN.1 можно получить XML, а вот обратно увы :(
Корректней было бы сравнивать языки описания схемы XML (DTD, XSD/WXS, RELAX NG), по ним вполне можно построить эквивалентное ASN.1 представление.
НЛО прилетело и опубликовало эту надпись здесь
Вы меня не поняли. XML в данном случае контейнер, ASN.1 язык описания содержимого этого контейнера, DTD, XSD, RELAX NG — тоже. Если языки описывают одно и тоже, можно сделать вывод, что они эквиваленты. Этого уже достаточно, чтобы считать сравнение DTD, XSD, RELAX NG vs ASN.1 корректным, а XML vs ASN.1 — нет.

Бонус: из всего этого следует, что схемы XML теоретически возможно перевести на ASN.1, тогда эти ваши Структуры Данных можно генерировать также, как и прочий эйэсенный хлам.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
С тем, что результат фиговый не поспоришь.

Можно ли где-нибудь в сети посмотреть на спецификации каких-либо нетривиальных форматов описанных на ASN.1, например описание формата Flash-файлов?
НЛО прилетело и опубликовало эту надпись здесь
> H.323? :)

На сколько я понял, специфицируются только форматы сообщений, а сами потоковые бинарные данные нет. Есть что-нибудь такое чтобы прям по полочкам от самого абстрактного уровня и до битов? Или ASN.1 для этого не применяется?
НЛО прилетело и опубликовало эту надпись здесь
> Не совсем понимаю чего вы конкретно хотите

Я пытаюсь выяснить у носителя языка возможно ли на нём описывать\кодировать данные изначально чуждые языку или этот язык вещь в себе. Например, возможно ли описать существующий бинарный формат, и после бинарного кодирования получить файл совместимый с приложениями предназначенными для работы с такими файлами.

Это всё не из праздного любопытства, у нас есть проект-долгожитель, который производит бинарные данные, начинался он на Дельфи ещё при царе Горохе, потом С++, потом понадобилось на сервере с помощью PHP некоторую часть данных обрабатывать, сейчас стало понятно, что было бы не плохо иметь доступ к этим данным из .NET. В итоге, имеется куча маленьких велосипедов для доступа к этим данным и один большой на C++. Если бы можно было на чём-то описать прародителя всех велосипедов и генерировать из него для каждого языка\платформы свою проекцию, сохранив при этом бинарную совместимость — это была бы сказка.
ASN.1 не может генерировать произвольный бинарный формат. Бинарник, полученный из описания в ASN.1 имеет чёткую структуру, и описать уже существующий бинарный протокол, используя ASN.1 не получится.
На самом деле, может. Технология называется ECN.
Что-то никак не могу найти. Можешь ссылкой поделиться?
Спасибо, не натыкался раньше
Это потому, что ты смотрел на отсутствующий стандарт X.208. Если бы ты посмотрел X.680+, там бы сразу ECN нашёл.
В Wireshark есть поддержка MPEG Audio, и лежит файл с описанием формата в ASN.1. Но сам поток там не описывается, да и не применяется asn.1 для кодирования потоковых данных.
Применяется. Вернее, рассчитывалось, что может применяться. См. стандарт CER. Компилятор lionet.info/asn1c поддерживает потоковое декодирование.
Не знал, спасибо
Флеймить по этой теме не имеет смысла, так как ниши у XML и ASN.1 разные, хотя и пересекаются в некоторой области, отличной от нуля. Но всё равно, в большинстве случаев надо использовать здравый смысл и выбрать тот инструмент, который лучше других подходит для решения проблемы. Фанатично пытаться повсюду использовать какой-то один формат в ущерб задаче — по меньшей мере глупо.
JSON is my favourite ;)
ASN.1 ещё долго не уйдёт со сцены, так что работать с ним надо уметь. PB только что появился и пройдут ещё годы, прежде чем он получит такой же вес, как и ASN.1.
Он походу вобще не уйдет со сцены :) На нем вся криптография в этих всяких интернетах базируется. Как минимум.
Ну всё меняется в этом мире. Мало ли, что ещё придумают.
пока что asn.1 никуда не делся. а прошло более 2-х лет :-)
ASN.1 ещё минимум лет 15 будет жить, а максимум — неизвестно сколько.
Гм, в Perl/PHP все проще, это встроенная функция pack/unpack (ну или serialize для эстетов) :)
Это совсем разные вещи.
Аналог pack/unpack в ерланге — term_to_binary/binary_to_term.
Эх… Для SEQUENCE'а из трех полей ASN понятен. Но в разборе какого-нибудь CMS увязнуть проще некуда. Хотя скорость и экономия памяти приличная.
А зачем для CMS тогда использовать ASN.1?
en.wikipedia.org/wiki/Content_management_system
!=
en.wikipedia.org/wiki/Cryptographic_Message_Syntax

А последний именно что ASN encoded.
Я про en.wikipedia.org/wiki/CMS_protocol подумал.
А в разборе Cryptographic Message Syntax что сложного? Можно ещё посмотреть на такие протоколы, как H.248 и H.323, там тоже ASN.1 используется и всё вполне нормально разбирается.
Как много в IT любви к аббревиатурам :)
Разбор не особо сложный — сложно для понимания. Хотя краем глаза глянул на H.323 — тож без поллитры не разберешься :)
Это так сначала кажется, что сложно. Когда начинаешь использовать — становится просто и понятно.
Ага, то-то в линуксе и большинстве сетевых устройств NAT h.323 представляет из себя эвристику, которая в общем случае не работает, а работает только с определенными опциями.
То-то решения для sip-телефония плодятся как грибы.
То-то фирма dlink закрыла поддержку h.323 в шлюзах.

Ну просто очень простой и дружественный протокол.
Казалось бы, причём тут ASN.1?
С таким же успехом можно высказываться против передачи данных с помощью байтов, аргументируя это тем, что от H.323 отказываются, а он передаётся байтами.
Можно и дальше расширить: практические примеры показывают, что бинарные протоколы, даже использующие ASN.1, все равно не становятся достаточно удобными и простыми в сопровождении.

А отказываться не надо. Надо внимательно взвешивать технологии при их выборе.
Можете привести эти практические примеры, кроме H.323?
Легко: практически все развитые (читай настолько удобные, что не загнулись) протоколы интернета базирующиеся на TCP — НЕ БИНАРНЫЕ.
Когда у человека единственный инструмент — молоток, то всё вокруг кажется гвоздями. Когда единственный инструмент — PHP, всё становится текстовым протоколом.
Вместо того, чтобы делать выводы обо мне по моим сегодняшним постам, лучше почитайте RFC — узнаете, что вот уже 40 лет текстовые протоколы двигают Интернет.
Вот я на то и намекаю, что не все люди с PHP в руках делают интернет. Интернетом жизнь не ограничивается, есть много других, более интересных занятий.
И занятия эти сводятся к унаследованным сетям связи и каналам с крайне низкой пропускной способностью.
А там где нету этих проблем, современные протоколы получаются текстовыми. Взять хотя бы относительно свежий MGCP: казалось бы, те же самые бравые мужи-телефонисты из nortel проектировали, но протокол почему-то вышел текстовым.
С SIP та же история — разрабочик Bell Labs.
А взять хотя бы ещё более свежий H.248/Megaco, так почему-то есть и текстовый, и бинарный формат, как раз в ASN.1.
Ну а что там на практике у железок? Оба варианта поддерживаются одинаково хорошо?
Да.
Я вообще не пойму, с какой целью ведётся этот спор. Хотите сказать, что работать с ASN.1 не надо, так как формат плохой? Или то, что бинарные форматы не нужны? Или просто поговорить приспичило?
С целью опровергнуть первоначальное утверждение о простоте бинарных форматов.
Ну и бравых мужей помянуть словом бранным.
Я пока не видел опровержений. Если, конечно, не считать подход «мне не нравится — не нужно» достаточной аргументацией.

Кстати, протокол AMQP бинарный :)
«слишком многим не нравится — в большинстве случаев не нужен».
Т.е. везде должны использоваться Java, XML, PHP и Windows? Что решения, отличные от мейнстрима, не должны иметь права на жизнь?
Плохой пример. Но, да. В такой области как коммуникации — желательно придерживаться общепринятой практики.
Так вот, в телекоммуникациях ASN.1 — общепринятая практика.
Ну и пусть. Это дурное воспитание.
А если считать телекоммуникациями еще и Интернет, то объем разработок в этой области гораздо больше разработок перекладывающих байтики связистов. И получается ASN.1 не особо общепринят.
Вечер юмора можно считать открытым?
Надеюсь у вас все будет хорошо.
НЛО прилетело и опубликовало эту надпись здесь
А судя по заголовку rfc 2543, он работал над протоколом от имени Bell Labs.
Сам Джо в своих тезисах XML'у противопоставляет UBF. Не знаю, насколько актуальная вещь.
Для описания CDR и т.п. записей оборудования ASN незаменим, так как позволяет покрывать сложную (включая рекурсию) структуру.
НЛО прилетело и опубликовало эту надпись здесь
GPB компактнее за счет более удачного кодирования — wire type и tag там идут одним байтом
ASN1, кроме всего прочего, еще и стандарт кодирования в цифровых подписях CMS Digital Signature (RFC3852), то есть используется много где
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации