Udcast가 Netcat보다 몇 배 더 빠른 이유는 무엇입니까?


2

네트워크를 통해 파일이나 디스크 이미지를 복사하기 위해 가끔 Netcat을 사용합니다. 그것이 일을하는 동안 나는 항상 ssh, no ssh, compression 또는 no compression과 상관없이 항상 느린 느린쪽에있는 것처럼 느꼈습니다.

나는 udpcast ( http://www.udpcast.linux.lu/cmd.html ) 테스트를 시작 했으며 적어도 5 배 이상 빠릅니다. 압축 파이프가있는 Udpcast는 압축 파이프가없는 netcat보다 몇 배 더 빠릅니다. Nc를 사용한 압축은 일반적으로 로컬 네트워크에서 속도가 느려져 일반적으로 피합니다. 내 네트워크는 일반적으로 1GB에서 실행되기 때문에

다음은 ssh가없고 압축이없는 몇 가지 예입니다.

dd if=somedisk |pv|nc -l -p 9999  
nc networkaddr 9999|pv >./disk.img  


udp-sender --full-duplex --file /dev/somedisk
udp-receiver --file ./disk.img

이것들은 내가 사용하는 몇 가지 기본 예입니다. 당연히 압축 파이프도 사용합니다. 모든 경우에 udpcast는 Netcat의 최소 5 배 속도를 수행하며 왜 그런지 궁금합니다.

파이프가있는 Udpcast는 네트워크 파일 전송에 적합하다고 생각합니다.

네트워크를 통해 17.5GiB 용 tar 및 untar 파이프가있는 udpcast

실제 9m26.186s
사용자 0m1.247s
sys 0m23.836s

그리고 여기 Linux에서 Windows
실제 9m17.729s
사용자 0m0.311s
sys 0m11.044s에 Samba를 통한 cp가 있습니다.

Netcat으로 Udpcast 성능을 포착 할 수 있습니까?
때때로 일부 배포판을 요구하는 이유는 이제 Udpcast를 제공 할 수 있습니다.


2
UDP가 TCP보다 오버 헤드가 훨씬 적기 때문입니다. 따라서 UDP는 항상 괜찮은 네트워크에서 더 빠릅니다. 더 작은 데이터 그램으로 조각난 프레임을 필요로하는 네트워크에서 TCP가 지배합니다 (TCP가 필요하거나 사용자 공간에서 직접 수행).
Hennes

답변:


2

nc 기본적으로 TCP가 사용됩니다.

TCP는 "창 크기"가 낮은 것으로 시작하여 최대 창 크기가 더 크게 결정되면 연결 중에 속도를 얻습니다. 또한 TCP는 연결을 유지하기 위해 추가 트래픽을 보냅니다 (예 : ACK 패킷). 이는 "연결"이라는 개념과 신뢰할 수있는 주문 배달을 지원하는 데 필요합니다.

UDP는 연결 또는 안정적인 전송을 지원하지 않으므로 추가 수하물이 없으므로 더 빠릅니다.

나는 udpcast많이 사용하지는 않았지만 오류 감지 메커니즘이 없다면 네트워크가 패킷을 삭제하기로 결정한 경우 전송 한 내용의 사본이 좋지 않을 위험이 있습니다.

nc-uTCP 대신 UDP를 사용하여 송수신 하는 옵션 IIRC가 있습니다.


나는 당신이 그것을 재생할 시간이있을 때 udpcast에 대한 당신의 의견을 듣고 싶습니다
kerrreem
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.