>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
TypeScript

クラウドも速度制限もなく、同僚に50ギガバイトを送る方法

DashBeam Header

よくある場面です:同僚に20ギガバイトのデータベースダンプや大容量のログアーカイブを送る必要があります。Telegramはファイルサイズ制限を理由に拒否します。Google DriveやYandex Diskは、まず自分のストレージにすべてアップロードする必要があり、ディスク容量を消費した上で、受信者をダウンロード待機させます。社内のLocalSendは便利ですが、相手が異なるISPにいると使えません。

最近、DashBeam(前はAltSendmeとして開発されていた)という興味深いプロジェクトを見つけました。このプログラムは、まさにこの問題を解決します:ファイルを中間サーバーに保存せずに、インターネット経由でコンピュータ間を直接転送します。

DashBeam working demo

内部構造

DashBeamはIrohネットワーキングスタック上に構築されています。Rustで書かれたオープンソースのP2Pエンジンです。 классический HTTPや不安定なWebRTCの代わりに、UDP上のQUICプロトコルとTLS 1.3暗号化を使用しています。

数据传输设计得很巧妙:

  • ファイルとフォルダはコンテンツアドレッシングされたブロック(blob)に分割されます。各ブロックは高速なBLAKE3暗号化ハッシュで検証されます。接続が切断されても、DashBeamはファイルを最初からダウンロードし直すことはしません—不足しているチャンクのみを送信します。
  • ペアリング用のテキストチケットが生成されます。この文字列には、送信者の識別子(Ed25519鍵)、直接接続用のアドレス、要求されたファイルのハッシュが含まれています。
  • デバイスはまず、QUICホールパンチングでNATを突破し、トラフィックを直接ルーティングしようとします。両方のノードが厳格なファイアウォールの内側にある場合、トラフィックはリレーを経由しますが、暗号化されたままです。リレーはノイズしか見えず、ペイロードを読み取ることはできません。
  • 自分のデバイス間で定期的な交換を行うための永久ペアリングがあります。ワークノートパソコンとスマホを一度コードでリンクすれば、チケットを手動でコピーする必要なく、1クリックでファイルを送信できます。

ベンチマークでは、開発者はギガビットネットワークリンクで上限となる125 MB/sの速度を示しており、記録された最大の転送は452 GBでした。

+----------------+                               +------------------+
| Sender (NodeA) | <====== QUIC / TLS 1.3 =====> | Receiver (NodeB) |
+----------------+        (Direct P2P Link)      +------------------+
        \                                                 /
         \-- [Fallback via encrypted Relay if NAT fails]-/

DashBeamが他の類似ツールと異なる点

P2P転送市場にはソリューションが溢れていますが、それぞれに癖があります:

LocalSendは単一のローカルネットワーク内では素晴らしいですが、VPN設定なしではインターネット経由でNATを突破できず、転送が中断されると最初からやり直す必要があります。

Magic Wormholeはターミナルで素晴らしいですが、適切な公式GUIがなく、中断されたファイル転送を再開できません。

PairDropのようなブラウザベースのユーティリティは、WebRTCの制約とブラウザタブのメモリに制限されるため、ギガバイトサイズのフォルダはページがクラッシュすることがよくあります。

DashBeamはすべての人シナリオを組み合わせています。このアプリはWindows、macOS、Linux用のデスクトップクライアント、Android用のスタンドアロンAPK、軽量なターミナルCLI、そしてソフトウェアのインストールが選択肢にない場合の簡略化されたWebバージョンとして利用可能です。

使い方

ワークフローは簡単です:

  1. ファイルまたはディレクトリをプログラムウィンドウにドラッグ&ドロップします。
  2. 生成されたチケットを取得し、任意のmessengerで受信者に送ります。
  3. 受信者はチケットをクライアントに貼り付け、ファイルのプレビューを確認し、ダウンロードを確定します。

自分のマシン間でテストビルドやアーカイブを共有することが多い場合は、設定セクションでデバイスを永久ペアとしてリンクし、送信ボタンで1クリック直接データを送信の方が便利です。

このプロジェクト誰が便利だと思うでしょうか?開発者とDevOpsエンジニアは、企業ディスクを消費せずにVM、バックアップ、ダンプを迅速に転送できます。ビデオ編集者和デザイナーは、クラウドストレージのサイズ制限なしでクライアントにソースファイルを配信する必要があります。

ソースコードはAGPL-3.0ライセンスで配布されています。必要に応じて、VPSに独自のリレーサーバーとDNS検出を展開できます—これに関するドキュメントと設定はプロジェクトリポジトリにあります。

関連プロジェクト