イーサネットケーブル1本で2台のPCを直結、900Mbpsのファイル転送
Transfer files over an Ethernet patch cable
2台のコンピュータをイーサネットケーブルで直接接続し、IPアドレスを設定するだけで、ギガビット級の速度でファイル転送ができることを紹介。クラウドストレージやUSBメモリと比較し、イーサネット直結が最も高速で信頼性が高いと説く。Linuxでの具体的なコマンド例や、USB-Cでの実現可能性にも言及。
イーサネットは、安価なケーブルで2台の任意のデバイス間でギガビット速度を確実に達成できる唯一の一般的な接続方法です。
HNでの議論
181- rmunn
あれはクロスオーバーケーブルが必要だった時代の話だ。私も(クロスオーバーケーブルを使って)まさにそれをやったことがある。それはhttps://en.wikipedia.org/wiki/Medium-dependent_interface#Aut...が広まる前のことだ。ストレートケーブルだと、一方のアダプタの送信(TX)ピンをもう一方の送信(TX)ピンに、受信(RX)ピンをもう一方の受信(RX)ピンに接続することになり、どちらの機器も相手が送信しているメッセージを「聞く」ことができない。クロスオーバーケーブルはそれらの配線を入れ替えるので、各機器のTXピンは相手側のRXピンに接続され、両方の機器がお互いを「聞く」ことができる。しかし、オートMDI-Xがあれば、各機器は「おや、送信しているのに何も受信していないぞ」と気づき、送信と受信の機能を入れ替えようとする(RXピンで送信し、TXピンで受信する)。各機器はそれをランダムな時間待ってから行うので、両方がまったく同時に入れ替わる可能性は極めて低い(ほぼ不可能)。もし同時に入れ替わったとしても、次の間隔も同じになる可能性は高いとは言えない。上の説明は少し簡略化しているが、大筋はこんな感じだ。そして、そうやって私が注意深くラベルを貼ったクロスオーバーケーブルはほこりをかぶり始めた。(そして、「ちょっと待て、今はこれを普通のケーブルとして使えるじゃないか」と気づき、保管場所から引っ張り出して、普通のパッチケーブルと混ぜて使うようになった。)
- steve1977
ネットワークケーブルでネットワーク機器をつなげることを発見して、それを「トリック」と呼ぶ人たちね(実際には「ハック」じゃないのが意外だけど)。
- yjftsjthsd-h
IPアドレスを割り当てる必要はおそらくないと95%の確信があるよ。こうやるんだ:
# インターフェース上のすべてのリンクローカルデバイスにpingを打つ:
ping ff02::1%eth0
そして、応答する唯一のIPに対してsocatやrsyncなどを使えばいい。
- yitchelle
これは、8ビット時代にクロスオーバーRS232ケーブルを使って2台のコンピュータ間でファイルを送信していた古き良き時代を思い出させる。たとえ30bpsでも、一方のコンピュータでデータをカセットテープに書き込んでからもう一方で読み取るよりもはるかに信頼性が高かった。
- sgt
macOSならもっと簡単だよ。
こんな感じでうまくいくはず:
ifconfig enX inet6 fd42:dead:beef::1 prefixlen 48
インターフェースはすでに上がっているはずだから、上げる必要はない。enXはUSB/Thunderboltイーサネットアダプタ(例:en6)にすべき。
それから、もう一方のマシン(Linuxマシンでも)にsocatで転送できる。私はncを使う傾向があるけど、socatの方が確実に速い。
なぜdeadbeefネットワークなのか不思議に思うかもしれないけど、プライベート空間だからパブリックアドレスと衝突しないんだ。
とはいえ、大きなファイルの99%のケースでは、AirDropで送るけどね!
- 3r7j6qzi9jvnve
tbstreamは面白そうだけど、カジュアルなユーザーには使いにくいね。もっと簡単になるかどうかはわからないけど、ファイルを転送するためだけにconfigfsをいじるのは覚えられないと思う。
https://git.kernel.org/pub/scm/linux/kernel/git/westeri/thun...
- SillyUsername
zstdにパイプで通すこともできるよ。圧縮率の高いデータなら、生のスループットの1.5倍から3倍になることがよくあるから、ギガビットリンクで実質165〜330MB/sを移動できる。
受信側:
socat -u TCP6-LISTEN:1234,reuseaddr STDOUT | zstd -d -c | tar -xpf - -C /destination
送信側:
tar -C /source -cf - directory | zstd -T0 -6 -c | socat -u STDIN 'TCP6:[fd42:dead:beef::2]:1234'
-T0は全コアを使う。レベルを-6より上げると圧縮率が上がり、下げると速度が上がる。ただし、CPUが追いつかない場合は、高いレベルは逆に遅くなる。すでに圧縮されたデータではあまり効果はない。
- awruko
実際に一度ケーブルをクロスオーバーにしなければならなかったことがある。何かのデモで、クロスオーバーケーブルがなかったんだ。地元のコンピュータ店にはなくて、時間に追われて…ポケットナイフを使ってケーブルを変換した。2000年より前のことなので、速度は10/100Mbitに制限されていた。ifconfigはエラーを報告せず、デモはスムーズに進んだ。