이더넷 패치 케이블 하나로 두 컴퓨터 사이에 파일 전송하기
Transfer files over an Ethernet patch cable
두 컴퓨터를 이더넷 케이블로 직접 연결하고 간단한 IP 설정만으로 파일을 전송하는 방법을 소개한다. 이 방법은 클라우드 저장소나 USB 드라이브보다 훨씬 빠르며, 약 900Mbps(분당 6.7GB)의 속도를 낼 수 있다. 저자는 이더넷이 저렴한 케이블로 기가비트 속도를 안정적으로 낼 수 있는 유일한 일반적인 연결 방식이라고 강조하며, 인터넷이 아닌 용도로도 이더넷이 과소평가되고 있다고 말한다.
이더넷은 저렴한 케이블로 두 기기 사이에서 안정적으로 기가비트 속도를 낼 수 있는 유일한 일반적인 연결 방식이다.
HN 토론
181- rmunn
그때는 크로스오버 케이블이 필요했어요. 저는 정확히 그렇게(크로스오버 케이블로) 해본 적이 있는데, 그건 https://en.wikipedia.org/wiki/Medium-dependent_interface#Aut... 이 널리 보급되기 전이었죠. 스트레이트-through 케이블을 사용하면 한 어댑터의 송신(TX) 핀이 다른 어댑터의 TX 핀에 연결되고, 수신(RX) 핀은 RX 핀에 연결되니까, 어느 쪽도 상대방이 보내는 메시지를 '듣지' 못하게 됩니다. 크로스오버 케이블은 그 선들을 뒤집어서, 각 장치의 TX 핀이 반대쪽의 RX 핀에 연결되도록 하여 양쪽 모두 서로를 '들을' 수 있게 했죠.
하지만 자동 MDI-X가 도입되면서, 각 장치는 '이상하네, 보내는데 아무것도 안 받고 있네'라고 인식하고 송신과 수신 기능을 뒤집어 보게 됩니다(RX 핀으로 송신하고 TX 핀으로 수신). 각 장치는 그렇게 하기 전에 임의의 시간을 기다리기 때문에, 두 장치가 정확히 동시에 뒤집힐 가능성은 거의(사실상) 없었습니다. 그리고 만약 동시에 뒤집힌다 해도, 두 번째 간격도 동일할 가능성은 매우 낮았죠.
위 설명은 약간 단순화한 것이지만, 대략 그런 흐름입니다. 그렇게 해서 제가 조심스럽게 라벨을 붙여둔 크로스오버 케이블들이 먼지를 쌓기 시작했습니다. (그리고 나서 '잠깐만, 이제 이걸 그냥 일반 케이블로 써도 되잖아'라는 걸 깨닫고, 다시 꺼내서 일반 패치 케이블과 섞어 쓰기 시작했죠.)
- steve1977
사람들이 네트워크 케이블로 네트워크를 구성할 수 있다는 걸 발견하고는 그걸 '트릭'이라고 부르네요. (사실 '해킹'이라고 안 부르는 게 오히려 놀랍습니다.)
- yjftsjthsd-h
IP를 할당할 필요가 없다는 확신이 95% 있습니다. 이렇게 하세요:
# 인터페이스의 모든 링크-로컬 장치에 ping:
ping ff02::1%eth0
그런 다음 응답하는 유일한 IP로 socat/rsync/whatever를 하면 됩니다.
- yitchelle
이 글은 저에게 8비트 시절에 크로스오버 RS232 케이블로 한 컴퓨터에서 다른 컴퓨터로 파일을 보내던 좋은 옛날을 떠올리게 하네요. 30bps에서도 테이프에 데이터를 저장했다가 다른 컴퓨터에서 읽는 것보다 훨씬 안정적이었습니다.
- sgt
macOS에서는 훨씬 더 쉽습니다.
다음과 같이 하면 됩니다:
ifconfig enX inet6 fd42:dead:beef::1 prefixlen 48
인터페이스를 올릴 필요는 없습니다. 이미 올라와 있을 테니까요. enX는 USB/Thunderbolt 이더넷 어댑터(예: en6)여야 합니다.
그런 다음 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/100 Mbit로 제한되었지만 ifconfig에서 오류가 보고되지 않았고 데모는 순조롭게 진행되었습니다.