Затем что мы сейчас обсуждаем формат сообщений cheshirenet. Сообщения это то что передается между узлами при синхронизации. Между узлами нет http, и не факт, что есть TCP/IP. Есть только какой-то 8bit-clean двунаправленный канал.
Поэтому сообщения должны быть самодостаточны, и если ссылаться на другие объекты, то только на сообщения обладающие всеми свойствами сообщения (т.е. embedded метаинформацией и электронной подписью автора).
MIME - Это жутко неудобно. Постоянные проблемы с тем как терминируются строки в разных операционных системах и прочие вопросы канонической сериализации, необходимой при вычислении хэша. А хэш у нас не только электронная подпись. но и идентификатор документа.
Опять же, необходимость работать с объектами, длина которых превосходит 232байтов в сочетании с тем, что длина большинства объектов менее 216, а длина большинства полей - меньше 27.
У меня была идея испоьзовать в качестве поля длины не BER-длину а utf-8. Т.е. считать что поля тэга и длины представляют собой UTF-8 символы. Но текущий стандарт UTF-8 поддерживает только коды от 0 до 231. Для размера видео в байтах этого мало. Вот 36 бит, пожалуй бы хватило. Но 7-байтовые последовательнности, начинающиеся с 0xFE валидным utf-8 не являются. И ядро питона их обрабатывать не будет. Вообще максимальный символ юникода, с которым у меня питон справился это 0x0010ffff. Поэтому придется все-таки длину брать как в BER.
no subject
Date: 2017-04-05 03:04 pm (UTC)Поэтому сообщения должны быть самодостаточны, и если ссылаться на другие объекты, то только на сообщения обладающие всеми свойствами сообщения (т.е. embedded метаинформацией и электронной подписью автора).
MIME - Это жутко неудобно. Постоянные проблемы с тем как терминируются строки в разных операционных системах и прочие вопросы канонической сериализации, необходимой при вычислении хэша. А хэш у нас не только электронная подпись. но и идентификатор документа.
Опять же, необходимость работать с объектами, длина которых превосходит 232байтов в сочетании с тем, что длина большинства объектов менее 216, а длина большинства полей - меньше 27.
У меня была идея испоьзовать в качестве поля длины не BER-длину а utf-8. Т.е. считать что поля тэга и длины представляют собой UTF-8 символы. Но текущий стандарт UTF-8 поддерживает только коды от 0 до 231. Для размера видео в байтах этого мало. Вот 36 бит, пожалуй бы хватило. Но 7-байтовые последовательнности, начинающиеся с 0xFE валидным utf-8 не являются. И ядро питона их обрабатывать не будет. Вообще максимальный символ юникода, с которым у меня питон справился это
0x0010ffff. Поэтому придется все-таки длину брать как в BER.