Dateien über ein Ethernet-Patchkabel übertragen: 900 Mbit/s ohne Netzwerk
Transfer files over an Ethernet patch cable
Zwei Computer lassen sich mit einem einfachen Ethernet-Kabel direkt verbinden – ohne Router, Switch oder lokales Netzwerk. Mit ein paar IP-Konfigurationsbefehlen und Tools wie socat und dd erreicht man dabei Geschwindigkeiten von rund 900 Mbit/s, also 6,7 GB pro Minute. Der Blogbeitrag vergleicht diese Methode mit Cloud-Speicher, WLAN und USB-Sticks und zeigt, warum Ethernet oft die schnellste und zuverlässigste Option für den Datentransfer zwischen Geräten in der Nähe ist. Auch die Übertragung auf Mikrocontroller über rohe Link-Layer-Frames wird erwähnt.
Ethernet ist die einzige gängige Verbindung, die mit preiswerten Kabeln zuverlässig Gigabit-Geschwindigkeiten zwischen zwei beliebigen Geräten erreichen kann.
- rmunn
Früher brauchte man dafür ein Crossover-Kabel; ich habe genau das (mit einem Crossover-Kabel) gemacht, bevor https://en.wikipedia.org/wiki/Medium-dependent_interface#Aut... weit verbreitet war. Mit einem normalen (straight-through) Kabel würde man den Transmit (TX)-Pin des einen Adapters mit dem TX-Pin des anderen verbinden und den Receive (RX)-Pin des einen mit dem RX-Pin des anderen – und keines der Geräte würde die Nachrichten des anderen hören. Ein Crossover-Kabel vertauschte diese Leitungen, sodass der TX-Pin jedes Geräts mit dem RX-Pin am anderen Ende verbunden war und beide Geräte sich gegenseitig hören konnten.
Aber mit Auto-MDI-X würde jedes Gerät bemerken: "Hey, ich sende, empfange aber nichts" und versuchen, seine Sende- und Empfangsfunktionen zu vertauschen (auf dem RX-Pin zu senden und auf dem TX-Pin zu empfangen). Da jedes Gerät eine zufällige Zeit wartete, bevor es das tat, war es äußerst unwahrscheinlich (fast unmöglich), dass beide im exakt gleichen Moment umschalten. Und selbst wenn, wäre das zweite Intervall höchstwahrscheinlich auch nicht identisch.
Ich vereinfache die Erklärung oben ein wenig, aber das sind die groben Züge. Und so begannen meine sorgfältig beschrifteten Crossover-Kabel Staub anzusetzen. (Und dann dachte ich: "Moment, ich kann die jetzt einfach als normale Kabel verwenden" und holte sie aus dem Lager und mischte sie unter meine normalen Patchkabel.)
- steve1977
Leute entdecken, dass Netzwerkkabel dazu verwendet werden können, Geräte zu vernetzen. Und dann nennen sie es einen "Trick" (ich bin überrascht, dass es nicht ein "Hack" ist).
- yjftsjthsd-h
Ich bin zu 95% sicher, dass du eigentlich keine IPs vergeben musst. Mach das:
# Ping alle Link-Local-Geräte auf einem Interface:
ping ff02::1%eth0
Und dann mach dein socat/rsync/was auch immer zu der einzigen IP, die antwortet.
- yitchelle
Das erinnert mich an die guten alten 8-Bit-Zeiten, als ich ein RS232-Crossover-Kabel verwendete, um eine Datei von einem Computer auf einen anderen zu übertragen. Selbst bei 30 bps war das viel zuverlässiger, als meine Daten auf einem Computer auf eine Kassette zu schreiben und sie dann auf dem anderen zu lesen.
- sgt
Auf macOS ist es sogar einfacher.
So etwas sollte funktionieren:
ifconfig enX inet6 fd42:dead:beef::1 prefixlen 48
Du musst es nicht hochfahren, da es normalerweise bereits aktiv ist. enX sollte dein USB/Thunderbolt-Ethernet-Adapter sein, z.B. en6.
Dann kannst du mit socat auf deinen anderen Rechner übertragen, selbst wenn es ein Linux-Rechner ist. Ich neige dazu, nc zu verwenden, aber socat ist definitiv schneller.
Warum das deadbeef-Netzwerk? Es ist privater Raum, also kollidiert es nicht mit öffentlichen Adressen.
Allerdings: In 99% der Fälle mit großen Dateien nutze ich einfach Airdrop!
- 3r7j6qzi9jvnve
tbstream sieht lustig aus, ist aber für den Gelegenheitsnutzer schwer zu bedienen – ich bin nicht sicher, ob es einfacher wird, aber ich glaube nicht, dass ich mich daran erinnern werde, in configfs herumzuspielen, nur um eine Datei zu übertragen:
https://git.kernel.org/pub/scm/linux/kernel/git/westeri/thun...
- SillyUsername
Du kannst es auch on-the-fly durch zstd pipen; für Daten, die sich gut komprimieren lassen, sieht man oft das 1,5- bis 3-fache des rohen Durchsatzes, sodass eine Gigabit-Verbindung effektiv 165–330 MB/s bewegen kann.
Empfänger:
socat -u TCP6-LISTEN:1234,reuseaddr STDOUT | zstd -d -c | tar -xpf - -C /destination
Sender:
tar -C /source -cf - directory | zstd -T0 -6 -c | socat -u STDIN 'TCP6:[fd42:dead:beef::2]:1234'
-T0 nutzt alle Kerne. Erhöhe die Stufe über -6 für mehr Kompression, senke sie für mehr Geschwindigkeit, aber wenn deine CPU nicht mithalten kann, werden hohe Stufen es tatsächlich verlangsamen. Bereits komprimierte Daten werden nicht viel Nutzen daraus ziehen.
- awruko
Ich musste buchstäblich einmal ein Kabel kreuzen. Es war eine Art Demo und das Crossover-Kabel fehlte. Die örtlichen Computergeschäfte hatten keins und unter dem Zeitdruck ... habe ich ein Taschenmesser benutzt und das Kabel umgebaut. Es war vor 2000, also war die Geschwindigkeit auf 10/100 Mbit begrenzt – ifconfig meldete keine Fehler und die Demo lief reibungslos.