HULFTとは|ファイル転送の具体的な仕組みを見てみよう(後編)

HULFTコラム ネットワークスペシャリストが語る!あきみちさんがHULFTの中の人に聞いてみた

企業のデータ連携基盤を支える「HULFT」を使うメリットや、安全、安心を支える技術について、インターネットインフラに造詣のある技術ライター「あきみち」氏が独自の視点でレポートする本コラム。「HULFT(ハルフト)の名前だけは知っている」といった方に向けて、基本機能やファイル転送の概要をわかりやすくご紹介します。

第3回HULFTとは|ファイル転送の具体的な仕組みを見てみよう(後編)

前編では、HULFTによるファイル転送を行うためのTCP接続の開始から終了までの大まかな流れを紹介しました。今回は、ファイル転送に伴って行われる処理を、もう少し詳しく見てみましょう。

ファイル転送前後に行われる処理

HULFTでのファイル転送は、単純にファイルを転送するだけではなく、ファイル転送に付随する各種処理が大きな特徴です。ファイル転送に付随する処理としては、配信側で行われる転送前の処理と、集信側で行われる転送後の処理と集信側での処理が終了したのちに配信側で処理が行える同期機能があります。

配信側で行われる転送前処理は、ファイル入力、コード変換、圧縮、暗号化、転送の順番で配信が行われます。

コード変換、圧縮、暗号化のファイル転送に付随する処理は、すべてのファイル転送でこれらが必ず行われるわけではありません。管理者は、どのファイル転送に対してどのような前後処理が行われるのかを設定可能です。たとえば、ある特定の種類のファイルに対しては転送前にコード変換を行ったり、他のファイルには圧縮や暗号化を行うといった設定も可能です。

それらの、HULFTのファイル転送に付随する処理をもう少し詳しく見てみましょう。

まずは、コード変換ですが、日本国内の大手企業の社内システムなどで汎用機が使われることがあります。かつて多く使われていた汎用機を減らすダウンサイジング、マイグレーション、分散などがありますが、すべての機能をUNIX系OSやWindowsなどに移行させるのが難しい場合などに、汎用機が外部と連携する必要が発生します。

汎用機が他のシステムと連携するときに、文字コードが問題になることがあります。汎用機で使われている文字コードを他のシステムで処理できない場合があるのです。しかし、様々な汎用機で使われている個別の文字コードに対応するためのプログラムをゼロから作るには莫大な工数がかかってしまいます。

HULFTの文字コード変換機能は各種汎用機で使われている文字コードに対応しており、ファイル転送のときに文字コードの変換を行えます。
汎用機に対応するときに発生しがちな文字コード関連プログラムの開発工数を削減するとともに、バグの発生を防げるのです。

次に圧縮ですが、HULFT ver8には、ランレングス法に似た圧縮方式と、ハフマン法を用いたDeflate圧縮の2種類があります。前者は、データ末尾にパディングが多用される汎用機、後者は様々なテキストデータでそれぞれ効果を発揮します。

暗号化が行われる設定になっていれば、配信側ホストで転送するデータを暗号化したうえでネットワークに送出されます。HULFT 8で利用可能な暗号の種類は、HULFT暗号、C4S暗号、AESの3種類です。

集信側では、配信側で行われた処理に応じて復号化、解凍伸張、コード変換、ファイル出力が行われます。
配信側と集信側で行われるそれぞれの前後処理は、メモリ上で行われるため、前後処理のための中間ファイル等は生成されません。

データ整合性検証

HULFTには、データ整合性検証機能もあります。
HULFTによる一連のファイル転送処理が行われる過程で元々のデータが壊れていないのかを検証できる機能です。

HULFTはTCPを利用したファイル転送を行っています。
TCPにはCRC(Cyclic Redundancy Check)と呼ばれる誤り検出符号がありますが、ネットワーク上でノイズが乗ってしまって壊れたデータがCRCによるチェックをすり抜けてしまう可能性もあります。
ごく稀ではありますが、ネットワーク内でデータが壊れたまま転送が成功してしまうことがあるのです。

HULFTは、非常に多くのシステムで採用されていますが、そういった問題は年に何度か報告があります。
通常であれば信頼できる通信手法であると信じられているTCPですが、実際は完全にデータの内容を保証しているわけではないのです。

HULFTのデータ整合性検証により、TCP上で発生したデータの誤りも検出できるのです。

ジョブ連携

配信の最初と集信の最後に行える処理に「ジョブ連携」があります。ジョブ連携は、その名の通り、ファイル転送に付随するジョブとファイル転送を連携させるものです。

ジョブ連携機能を利用して様々なことが実現できますが、ジョブ連携が最も多く利用される用途が同期転送です。

たとえば、ある特定のファイルを順番に送りたい場合などがあります。
そのようなときに、ファイル転送が順番に行われるように、ひとつが終わってから次のファイル転送を行うという同期したファイル転送もできます。

その他、配信側が、ファイル転送の終了だけではなく、ファイル転送が行われた後に集信側で行われる処理も含めて全てが成功したかどうかを確認したい場合もあります。
そのうえで配信側は、集信側へのファイル転送が成功したことを確認した後に、手元にあるファイルを削除するといった処理が行われることもあります。

ftpなどのファイル転送コマンドを使う場合、ファイル転送コマンドとは別にそういった機能を別途実装する必要がありますが、HULFTのジョブ連携機能を利用することで新規開発を行わずにそれらを実現できます。

最後に

今回は、HULFTのファイル転送で実際に何が行われているのかを紹介しました。

単に「HULFTはファイル転送に付随する処理も行なっています」と表現すると、ftpなどとの違いが何であるかという疑問を持ってしまいますが、どのようにファイル転送が行われているのかを見ると、その違いが一目瞭然であり、そもそも比べるものでもないことをご理解いただけると思います。

次回は、さらに詳しくHULFTの機能を見ていきます。

あきみちさんがHULFT(ハルフト)の中の人に聞いてみた コラム一覧

記事を書いた人

小川 晃通 氏

Geekなぺーじ」を運営するブロガー。
慶應義塾大学政策メディア研究科にて博士を取得。ソニー株式会社において、ホームネットワークにおける通信技術開発に従事した後、2007年にソニーを退職し、現在はブロガーとして活動。
著書多数「アカマイ知られざるインターネットの巨人」など。アルファブロガーアワード2011受賞。

関連コンテンツ

コラム一覧に戻る