yEnc は、 Usenet上のメッセージや電子メールでバイナリ ファイルを転送するための、バイナリからテキストへのエンコード方式です。8ビットエンコード方式を使用することで、以前のUS-ASCIIベースのエンコード方式に比べてオーバーヘッドが削減されます。yEnc のオーバーヘッドは、多くの場合 (各バイト値が平均してほぼ同じ頻度で出現する場合) 1~2% 程度です。[1]一方、 uuencodeやBase64などの 6 ビット エンコード方式では 33~40% のオーバーヘッドになります。yEnc は当初 Jürgen Helbing によって開発され、最初のリリースは 2001 年初頭でした。2003 年までに、yEnc は Usenet 上のバイナリ ファイルのデファクト スタンダード エンコード システムになりました。[2] yEncode という名前は、 「なぜエンコードするのか?」という言葉遊びです。これは、メッセージ形式の標準に従うことが絶対に必要な場合にのみ文字をエンコードするという考え方です。[3]
yEncの仕組み
Usenet および電子メールのメッセージ本文には、ASCII 文字 ( RFC 822 またはRFC 2822) のみが含まれるように意図されていました。競合するほとんどのエンコードでは、バイナリ ファイルを印刷可能な ASCII 文字に変換して表現します。これは、印刷可能な ASCII 文字の範囲がほとんどのオペレーティング システムでサポートされているためです。ただし、これにより使用可能な文字セットが大幅に減少するため、8 ビット バイトのネットワークではオーバーヘッド (帯域幅の無駄) が大きくなります。たとえば、uuencode および Base64 では、3 バイトのデータが 4 つの印刷可能な ASCII 文字にエンコードされます。これは 4 バイトに相当し、33% のオーバーヘッドになります (ヘッダーによるオーバーヘッドは含みません)。yEnc では、いくつかの例外を除き、1 文字 (1 バイト) を使用してファイルの 1 バイトを表現します。
yEnc は、バイナリ データは主に Usenet や電子メールで転送できるものと想定しています。したがって、結果が印刷可能な ASCII 文字であるかどうかに関係なく、256 バイトのうち 252 バイトはエンコードされずに 1 バイトとして渡されます。エスケープされるのはNUL、LF、CR、=のみです。LF と CR がエスケープされるのは、インターネットメッセージを定義する RFC では、メール メッセージでは復帰と改行に特別な意味を持たせる必要があるためです。= はエスケープ文字なので、それ自体がエスケープされます。NUL も、一般的なコードでヌル文字を処理する際に問題が発生するためエスケープされますが、yEnc は最適化としてソース バイトごとに 42 を追加するため、長いゼロ バイトが続く場合でも、それほど多くのエスケープ処理は不要になります (これは珍しいことではありません)。
yEncを説明するRFCやその他の標準文書は存在しない。 [4] yEncのホームページには、非公式の[引用が必要]仕様と文法の草案( RFC 2822およびRFC 2045と矛盾) [引用が必要]が掲載されているが、 どちらもインターネット技術タスクフォースには提出されていない。[引用が必要]
uuencoding と同様に、欠陥があるにもかかわらず、yEnc はUsenet で[いつ? ]アクティブかつ効果的であり続けています。[引用が必要] yEncの ホームページには、「すべての主要なニュースリーダーが yEnc のサポートに拡張されました」と記載されています。MicrosoftのOutlook Express、Windows Mail、Windows Live Mail はニュースとメールのいずれにも yEnc をサポートしていませんが、プラグインは利用可能です。Mozilla Thunderbird は単一部分の yEnc ファイルをデコードしますが、複数部分のバイナリを結合することはできません。[5]
問題点
多くのプログラマーやニュース管理者が yEnc の弱点を指摘しています。[6] [7] [8] [9] yEnc は uuencode と同じ欠陥を多く抱えており、そのいくつかは数年前にMIMEによって解決されていました(MIME は uuencode の同じ欠陥に対処しました)。たとえば、yEnc では、メッセージ本文でエンコードされたファイルの前後に文字列 "=ybegin" と "=yend" を配置する必要があります。[3]これは、通常のテキストでより頻繁に使用される uuencode の "begin" と "end" よりも改善されていますが、メッセージの読者は添付ファイルの外側で文字列に遭遇する可能性があります (yEnc 自体に関する議論で最も頻繁に発生します)。yEncと uuencode [要出典]は、件名を使用して複数のメッセージに分割されたファイルを再構成しようとしますが、これは信頼できません。[誰によると? ]
yEncodeの採用
yEncode のドラフト提案文書は 2001 年 7 月 31 日に公開されました。[10]参照エンコーダとデコーダは、その年の 11 月に MyNews 1.9 フリーウェア バージョンに含まれました。[11]フリーウェアの win32 デコーダである yDec は 2001 年 11 月 14 日に登場しました。2002 年 3 月 21 日、Agent はバージョン 1.91 で yEnc をサポートしました。[12] [13] Juergen Helbing のフィードバックにより、リリースは 1 週間延期されました。[14] [15]リリースの数日後、Jürgen Helbing は Forté が yEnc を想像できる限りの最高の方法で実装したと書いています。[16]
Stuffit Deluxeは2003年にバージョン8.0でyEncのサポートを追加しました。[17] [18] PowerArchiver 9.2は2005年5月にyEncのサポートを追加しました。[19]
参考文献
- ^ Helbing, Juergen (2002 年 2 月 28 日). 「yEncode - バイナリ用の簡単かつ簡単なエンコーディング」 . 2014 年7 月 26 日閲覧。
- ^ Fellows, G. (2006). 「ニュースグループの復活 - バイナリ投稿のルネッサンス」Digital Investigation . 3 (2): 73–78. doi :10.1016/j.diin.2006.04.006. ISSN 1742-2876.
- ^ ab Kim , Juhoon; Schneider, Fabian; Ager, Bernhard; Feldmann, Anja (2010). 「今日の Usenet の使用状況: NNTP トラフィックの特性」。2010 INFOCOM IEEE コンピュータ通信ワークショップ会議。pp . 1–6。CiteSeerX 10.1.1.679.6023。doi :10.1109/ INFCOMW.2010.5466665。ISBN 978-1-4244-6739-6. S2CID 18282467。
- ^ ハイ・デフィニション:パーソナルテクノロジーのAからZまでのガイド。2006年。353ページ。ISBN 978-0618714896
yEncには公式の標準規格はないが、ニュースグループにバイナリファイルを投稿する際に広く使用されている
。 - ^ 「Thunderbird で Yenc がサポートされますか?」org.mozilla.lists.support-thunderbird (メーリング リスト) 2006 年 5 月 18 日。
- ^ Helbing, Jürgen (2002年6月10日). 「yEncへの反対者」. yenc.org . 2013年8月28日時点のオリジナルよりアーカイブ。
- ^ Nixon, Jeremy (2002年3月17日). 「なぜyEncはUsenetにとって悪いのか」。2013年8月29日時点のオリジナルよりアーカイブ。
- ^ Welch, Curt (2002年9月19日). 「yEncの何が問題なのか?」. 2013年8月11日時点のオリジナルよりアーカイブ。
- ^ Färber, Claus (2002年3月4日). 「yEnc は有害とみなされる」。2009年6月1日時点のオリジナルよりアーカイブ。
- ^ 「yEnc 1.0 オリジナル ドラフト」 2001 年 7 月 31 日。
- ^ Juergen "The Archiver" Helbing. 「1.9 の新機能」. winews.net .
- ^ 「Agent 1.91 がリリースされました」。forteinc.com。Agent 1.91
は、バイナリ用の新しい Usenet エンコード アルゴリズムである yEnc を完全にサポートします
。 - ^ Spanbauer, Scott (2002 年 8 月)。「リビジョン管理 - 最新のソフトウェア調整 (インターネットで世界中のラジオ局を聴く)」。PC World。20 ( 8): 138–139。Fortéの Usenet ニュースリーダーのバージョン 1.92 では、ゴミ箱フォルダーが追加され、既存の機能の一部が改善され、さまざまなバグが修正されて
いますが、修正や機能強化よりも重要なのは、アプリケーションに YEnc バイナリ エンコーディング アルゴリズムのサポートが追加されたことです。
- ^ 「エージェント 1.91 にはあと 1 週間必要」Forté 2002 年 3 月 15 日。
- ^ 「Juergen Helbing の yEnc と Agent 1.91 に関するフィードバック」Forté 2002 年 3 月 17 日。
- ^ Helbing, Jürgen (2002 年 3 月 22 日). 「Forte Agent 1.91 は yEnc をサポートします」。
- ^ Sellers, Dennis (2003 年 9 月 22 日)。「StuffIt Deluxe 8.0 に新しいプラグインが追加され、パフォーマンスが向上」。Macworld。
- ^ Breen, Christopher (2004 年 7 月). 「Stufflt Deluxe 8.0」. Macworld . 21 (7): 40.
- ^ Richard V. Dragan (2005 年 5 月 4 日)。「ファイル圧縮: PowerArchiver 9.2」。
外部リンク
- yEncホームページ
- yEnc仕様テキスト
- 「B-Newsと彼の弟、yEncの物語。」
- 「なぜ yEnc は Usenet に適しているのか」
