yEnc - это схема кодирования двоичного кода в текст для передачи двоичных файлов в сообщениях в Usenet или по электронной почте . Это снижает накладные расходы по сравнению с предыдущими методами кодирования на основе US-ASCII за счет использования 8-битного метода кодирования. Накладные расходы yEnc часто составляют (если каждое значение байта появляется примерно с одинаковой частотой в среднем) всего 1-2% [1] по сравнению с 33% -40% накладными расходами для 6-битных методов кодирования, таких как uuencode и Base64 . Первоначально yEnc был разработан Юргеном Хельбингом, а его первая версия была выпущена в начале 2001 года. К 2003 году yEnc стала де-факто стандартной системой кодирования для двоичных файлов в Usenet.[2] Название yEncode - это игра слов на тему «Зачем кодировать?» , поскольку идея состоит в том, чтобы кодировать символы только в том случае, если это абсолютно необходимо для соблюдения стандарта формата сообщения. [3]
Как работает yEnc
Тела сообщений Usenet и электронной почты должны были содержать только символы ASCII ( RFC 822 или RFC 2822 ). Большинство конкурирующих кодировок представляют двоичные файлы путем преобразования их в печатаемые символы ASCII, поскольку диапазон печатаемых символов ASCII поддерживается большинством операционных систем. Однако, поскольку это значительно сокращает доступный набор символов, возникают значительные накладные расходы (потраченная впустую пропускная способность) в 8-битных сетях. Например, в uuencode и Base64 три байта данных кодируются в четыре печатаемых символа ASCII, что равняется четырем байтам, что составляет 33% накладных расходов (не включая накладные расходы из заголовков). yEnc использует один символ (один байт) для представления одного байта файла, за некоторыми исключениями.
yEnc предполагает, что двоичные данные в основном могут передаваться через Usenet и электронную почту. Следовательно, 252 из 256 возможных байтов передаются незакодированными как один байт, независимо от того, является ли этот результат печатаемым символом ASCII или нет. Только NUL , LF , CR и = экранируются . LF и CR экранируются, потому что RFC, которые определяют Интернет- сообщения, по-прежнему требуют, чтобы символы возврата каретки и перевода строки имели особое значение в почтовом сообщении. = - это escape-символ, поэтому он сам экранируется. NUL также экранируется из-за проблем с обработкой нулевых символов в общем коде, хотя в качестве оптимизации yEnc добавляет 42 к каждому исходному байту, так что нередко длинные отрезки нулевых байтов не требуют большого экранирования.
Нет RFC или других стандартных документов, описывающих yEnc. [4] Домашняя страница yEnc содержит черновик неофициальной спецификации [ необходима ссылка ] и грамматика (которые противоречат RFC 2822 и RFC 2045 ), [ необходима цитата ], хотя ни один из них не был передан в Инженерную рабочую группу Интернета . [ необходима цитата ]
Как и в случае с uuencoding, несмотря на свои недостатки, yEnc остается [ когда? ] активен и эффективен в Usenet. [ необходима цитата ] На домашней странице yEnc указано, что « все основные программы чтения новостей были расширены до поддержки yEnc ». Microsoft «s Outlook Express , Windows Mail и Windows Live Mail не обеспечивают поддержку yEnc для каждой новости или по электронной почте, но есть плагины доступны. Mozilla Thunderbird будет декодировать файлы yEnc, состоящие из одной части, но не может объединять двоичные файлы, состоящие из нескольких частей. [5]
Проблемы
Многие программисты и новостные администраторы обозначили слабые стороны yEnc. [6] [7] [8] [9] Он страдает многими из тех же недостатков, что и uuencode, ряд из которых уже был решен много лет назад с помощью MIME (который устранил те же недостатки в uuencode). Например, yEnc требует, чтобы строки «= ybegin» и «= yend» были размещены вокруг закодированного файла в теле сообщения. [3] Хотя это улучшение по сравнению с «begin» и «end» uuencode, которые чаще встречаются в обычном тексте, программы чтения сообщений могут по-прежнему сталкиваться со строками вне вложений (чаще всего в обсуждениях о самом yEnc). yEnc и uuencode [ необходима цитата ] также пытаются повторно собрать файлы, разделенные на несколько сообщений, с использованием строки темы, что ненадежно. [ согласно кому? ]
yEncode принятие
Документ проекта предложения yEncode был доступен 31 июля 2001 года. [10] В ноябре того же года в бесплатную версию MyNews 1.9 был включен эталонный кодировщик и декодер. [11] yDec, бесплатный декодер Win32, появился 14 ноября 2001 г. 21 марта 2002 г. агент поддержал yEnc с версией 1.91. [12] [13] Из-за отзывов Юргена Хельбинга выпуск был отложен на неделю. [14] [15] Через пару дней после релиза Юрген Хелбинг написал, что Forté реализовал yEnc наилучшим образом, который только можно вообразить . [16]
Stuffit Deluxe добавила поддержку yEnc в версии 8.0 в 2003 году. [17] [18] PowerArchiver 9.2 добавил поддержку yEnc в мае 2005 года. [19]
Рекомендации
- ^ Хельбинг, Юрген (28 февраля 2002 г.). «yEncode - быстрое и грязное кодирование для двоичных файлов» . Проверено 26 июля 2014 года .
- ^ Стипендиаты, Г. (2006). «Новостные группы возрождаются - возрождение двоичной рассылки». Цифровое расследование . 3 (2): 73–78. DOI : 10.1016 / j.diin.2006.04.006 . ISSN 1742-2876 .
- ^ а б Ким, Джухун; Шнайдер, Фабиан; Агер, Бернхард; Фельдманн, Аня (2010). «Сегодняшнее использование Usenet: характеристика трафика NNTP». 2010 Конференция INFOCOM IEEE по компьютерным коммуникациям. Семинары . С. 1–6. CiteSeerX 10.1.1.679.6023 . DOI : 10.1109 / INFCOMW.2010.5466665 . ISBN 978-1-4244-6739-6.
- ^ High Definition: от А до Я Руководство по персональной технологии . 2006. с. 353. ISBN. 978-0618714896.
Хотя для yEnc нет официальных стандартов, он широко используется для публикации двоичных файлов в группах новостей.
- ^ "Поддержка Yenc в Thunderbird?" . org.mozilla.lists.support-thunderbird (список рассылки). 18 мая 2006 г.
- ^ Хельбинг, Юрген (10 июня 2002 г.). «Противники yEnc» . yenc.org . Архивировано 28 августа 2013 года.
- ^ Никсон, Джереми (17 марта 2002 г.). «Почему yEnc вреден для Usenet» . Архивировано 29 августа 2013 года.
- ^ Уэлч, Курт (19 сентября 2002 г.). "Что не так с yEnc?" . Архивировано 11 августа 2013 года.
- ^ Фарбер, Клаус (4 марта 2002 г.). «yEnc считается вредным» . Архивировано из оригинала на 1 июня 2009 года.
- ^ «Первоначальный проект yEnc 1.0» . 31 июля 2001 г.
- ^ Юрген «Архиватор» Хельбинг. «Новые возможности в 1.9» . winews.net .
- ^ «Агент 1.91 выпущен» . forteinc.com .
Агент 1.91 обеспечивает полную поддержку yEnc, нового алгоритма кодирования Usenet для двоичных файлов.
- ^ Шпанбауэр, Скотт (август 2002 г.). «Контроль версий - Последние настройки программного обеспечения (Слушайте мир радиостанций в Интернете)». Мир ПК . 20 (8): 138–139.
Версия 1.92 программы чтения новостей Usenet от Forté добавляет папку для мусора, улучшает некоторые существующие функции и устраняет различные ошибки; но более важной, чем исправления и улучшения, является добавленная в приложении поддержка алгоритма двоичного кодирования YEnc.
- ^ «Агенту 1.91 нужна еще одна неделя» . Forté . 15 марта 2002 г.
- ^ «Отзыв Юргена Хельбинга о YEnc и Agent 1.91» . Forté . 17 марта 2002 г.
- ^ Хельбинг, Юрген (22 марта 2002 г.). «Forte Agent 1.91 поддерживает yEnc» .
- ^ Продавцы, Деннис (22 сентября 2003 г.). «StuffIt Deluxe 8.0 получает новые плагины, повышение производительности» . Macworld .
- ^ Брин, Кристофер (июль 2004 г.). «Stufflt Deluxe 8.0». Macworld . 21 (7): 40.
- ^ Ричард В. Драган (4 мая 2005 г.). «Сжатие файлов: PowerArchiver 9.2» .
Внешние ссылки
- домашняя страница yEnc
- Текст спецификации yEnc
- «История B-News и его младшего брата yEnc».
- «Почему yEnc хорош для Usenet»