Neden TCP kullanıldığında aktarım daha yavaş hale geliyor? TCP genellikle tüm mevcut bant genişliğini kullanabilir. UDP kullanmak yerine daha hızlı olma olasılığı yoktur. Aslında, güvenilir bir UDP tabanlı dosya aktarımı yapmayı denediyseniz, büyük olasılıkla TCP'ye daha düşük bir alternatif uygulayabilirsiniz. Çünkü güvenilirliği kendiniz uygulamak zorundasınız.
ile ilgili sorunlu, FTP'nin aktardığınız her dosya için birden çok eşzamanlı istek yanıtı komutu gerçekleştirmesi ve her dosya için yeni bir veri bağlantısı açmasıdır. Bu, çok sayıda küçük dosya aktarılırken aşırı derecede verimsiz aktarımlarla sonuçlanır, çünkü çoğu zaman veri aktarımı yerine isteklerin/yanıtların beklenmesi ve veri bağlantılarının kurulması harcanır.
Bu sorunu çözmek için basit bir yöntem, dosyaları/klasörleri bir arşive yerleştirmektir. Tabii ki, sadece arşivi yapabilmeniz, FTP veya benzeri kullanarak gönderebilmeniz ve diğer tarafa açabilmeniz mümkünken, ambalajlama ve ambalajı açma zamanı kabul edilemez olabilir. Bu gecikmeyi paketlemeyi yaparak ve on-line açarak önleyebilirsiniz. Bu tür çevrimiçi paketleme/açma işlemlerini entegre eden herhangi bir yazılımın farkında değilim.
alıcı üzerindeki
İlk çalışma: Bu alıcıyı yapacak
nc -l -p 7000 | tar x -C <destination_folder>
bir bağlantı için bekleyin Ancak, sadece bir boru hattı (Linux, Windows üzerinde Cygwin kullanın) içinde nc
ve tar
programları kullanabilirsiniz port numarasını 7000 ile Ardından gönderici çalışır:
cd /some/folder
tar c ./* | nc -q0 <ip_address_of_receiver>:7000
Bu gönderen transferi başlayarak alıcısına bağlanmak yapacaktır. Gönderici, tar arşivini oluşturarak alıcının kendisine gönderecek olan - hepsini aynı anda gönderecek. İhtiyacınız varsa, göndericinin ve alıcının rollerini tersine çevirebilirsiniz (alıcının göndericiye bağlanmasını sağlayarak).
Bu çevrimiçi-yatırım yaklaşımında FTP'nin iki performans sorunu yoktur; herhangi bir istek yanıtı komutu gerçekleştirmez ve yalnızca tek bir TCP bağlantısı kullanır. Bununla birlikte, bunun güvenli olmadığını unutmayın; Gönderen tarafımızdan önce kimse alıcıya bağlanabiliyor, ona kendi tar arşivini gönderiyor. Bu bir sorunsa, uygun güvenlik duvarı kuralları ile birlikte bir VPN kullanılabilir.
DÜZENLEME: Eğer FileCatalyst sayfa inanılan edilecekse, önemli bir problemdir TCP performansı ile bir sorun olarak paket kaybı söz.TCP'nin yüksek paket kaybı bağlantıları ile optimal olmayan şekilde gerçekleştirebileceği doğrudur. Bunun nedeni, TCP'nin genellikle paket kaybına agresif bir şekilde tepki vermesidir, zira kaybın tıkanıklığa bağlı olduğunu varsayar; Additive_increase/multiplicative_decrease'a bakın. Özel protokollerle bunun üstesinden gelmeye çalışacak herhangi bir serbest/açık kaynak dosya aktarım programının farkında değilim. Ancak farklı TCP congestion avoidance algorithms'u deneyebilirsiniz. Özellikle, 'un iletim hızını azaltmak için bir paket kaybı olarak kullanılmayan Vegas'u deneyin.
Dahil ettiğim bağlantıları kontrol ettiniz mi? Aktarılacak 500 GB'lık bir dosyanız varsa, FTP'nin kontrol bağlantıları tamamen önemsizdir ve sonuçta ham TCP performansıdır. Büyük dosyaların mümkün olan en hızlı şekilde aktarılması için - özellikle herhangi bir paket kaybıyla bağlantılı olmayan - kesinlikle gerekli değildir. İçerdiğim linklerdeki ürünler, kendileri için güvenilirlik sağlıyorlar. – stolsvik
@stolsvik, AFAIK'in İnternet'te nadir bulunan yüksek kayıp bağlantılarından bahsetmediniz. Bununla ilgili bir şey ekledim. –
Aslında TCP protokolü gerçekten tek yönlü aktarım için tasarlanmamıştır. Bunu yapmak için yapılabilir, ancak TCP kısa paketler neden olacak şekilde paketler gerektirir ve gerçekten optimal hız için tampon boyutları ve pencere boyutları seçmek için bir dengeleme eylemi olabilir. Ayrıca, uygulamalar her zaman isteğe bağlı çeşitli ayarlarla yapmaları gerekmeyebilir. –