直接インターネットメッセージカプセル化

DIME (Direct Internet Message Encapsulation) は、インターネット経由でバイナリやその他のカプセル化されたデータをストリーミングするための、2000 年代初頭に Microsoft が提案したインターネット標準です。

IETFのウェブサイトによると、この標準規格は撤回されており、RFCのステータスにはなっていない。しかし、MicrosoftはかつてWebサービス経由のファイル転送にDIMEを推奨していた。Java EEでも使用されていたが、プロトコルの実装の違いにより困難を極めた。

最初のバージョン[ 1 ]は2001年11月にIETFに提出され、最後のアップデート[ 2 ]は2002年6月に提出されました。2003年12月までに、DIMEはMessage Transmission Optimization MechanismおよびSOAP with Attachmentsとの競争に敗れました。[ 3 ] Microsoftは現在、DIMEを「SOAP Message Transmission Optimization Mechanism (MTOM)仕様に置き換えられた」と説明しています[ 4 ]。

この標準は、 MIMEの改良版となることを目指していました。[ 5 ]特に MIME の難しさは、各メッセージをテキストとしてエンコードする必要があり、各セクションがメッセージ ヘッダーで指定された区切り文字で区切られることです。つまり、送信者は通信を開始する前にデータ ストリーム全体を把握しておかなければならず、データ内に存在しない区切り文字を選択する必要があります。これは、通信開始時にストリーム全体が利用できない場合や、検索にコストがかかる場合には役に立ちません。DIME はストリーミングを重視しており、たとえば、受信側はメッセージ全体を待たずに、メッセージのチャンクが到着したらそれを処理できます。

批判

HTTPの問題

DIME はOSI モデルデータリンク層の転送形式として定義されていますが、通常はHTTP経由で転送されます。ここでの難しさの 1 つは、HTTP メッセージが実質的に任意のサイズ (制限は各チャンクのサイズ情報で、32 ビット、つまり 1 ギガビット) になる可能性があることです。多くの HTTP 受信側はこれほど大きなメッセージに慣れておらず、メッセージをバッファリングすると、ソフトウェアが短いメッセージを期待していたのに長いメッセージを受信したために、単に失敗します。さらに、HTTP 受信側がセキュリティ保護されている場合、メッセージを受信すると、送信者にチャレンジ メッセージ (コード 400) を送り返します。HTTP はコネクションレス型であるため、チャレンジを受け入れるか拒否するかだけで、送信された大量のデータが完全に失われることがあります。もちろん、チャレンジへの応答は成功する可能性がありますが、その場合はデータが 2 回送信されることになり、データが巨大であればその目的が達成されません。

代替ソリューションでは、チャレンジ成功の基準 (ユーザー名とパスワードなど) が帯域外で確立されるため、最初にメッセージとともに送信され、チャレンジを受信できません (コネクションレス HTTP プロトコルの副産物として、各メッセージは個別に扱われるため、どのメッセージにもチャレンジ応答を正常に含めることができる必要があります)。

DIMEは、他のプロトコルの実用化と比較して非常に高速でした。データがBase64エンコードではなくバイナリ形式だったため、比較的コンパクトで、プロトコルに組み込まれたチャンク化とパケット化の手法により、適切な受信者がメッセージ全体を読み取る前にストリーミングして読み取ることができました。

ネットワーク層の問題

DIME はデータリンク層で定義されているため、DIME メッセージを別の DIME メッセージにカプセル化することが可能でした。これは圧縮にはまったく役立ちませんでしたが、OS モデルのネットワーク層にあるルーターなどのネットワーク インフラストラクチャをバイパスするのに便利な場合がありました。ルーターなどのインフラストラクチャは、カプセル化されたトラフィックをブロックします (バイナリであるため、疑いの目で見る可能性があります)。とはいえ、MIME などの他のプロトコルも同様に影響を受ける可能性があります。DIME は一般に信頼性が高いクライアント間で使用されていたため、ルーターで特定のポートを開いて、DIME トラフィックを送受信する明確な目的に使用することができました。これによってセキュリティの側面が損なわれることはありませんでした。チャレンジは依然として発生するからです。単に、そのポートではバイナリ トラフィックが標準であると受け入れたため、多数の誤検知が発生しませんでした。

参照

参考文献

  1. ^ニールセン、ヘンリック;サンダース、ヘンリー。クリステンセン、エリック D.クリスチャン、ホイテマ(2002 年 7 月)。「draft-nielsen-dime-00 ダイレクト インターネット メッセージ カプセル化 (DIME)」2021年2月11日に取得
  2. ^ニールセン、ヘンリック;サンダース、ヘンリー。クリステンセン、エリック D.クリスチャン、ホイテマ(2002 年 7 月)。「draft-nielsen-dime-02 ダイレクト インターネット メッセージ カプセル化 (DIME)」2021年2月11日に取得
  3. ^ Salz, Rich (2003年12月12日). 「Re: DIMEの現状はどこで確認できますか?」 2007年9月27日時点のオリジナルよりアーカイブ2006年10月31日閲覧。
  4. ^ 「メッセージング仕様のインデックスページ」。Microsoft 2011年6月6日時点のオリジナルよりアーカイブ2006年10月31日閲覧。
  5. ^ 「技術ドキュメント」