FileZilla neden PSFTP'den daha hızlı?


11

FileZilla 3.10.3 ve PSFTP 0.63 (PuTTY) kullanıyorum. Aldığım iş miktarının iki müşteri arasında neden bu kadar farklı olduğunu anlamama yardımcı olan var mı? Sadece SFTP protokolünün bir eksikliği olamaz, çünkü FileZilla (ve WinSCP) çok daha hızlıdır! Şimdiden teşekkürler.

Bazı sunucu kullanarak aynı sunucuya bağlanmak için FileZilla kullanırken, "iyi" bir verim alıyorum; Bir büyük dosya için ~ 1.2MBPS. İşte günlük:

Response: fzSftp started, protocol_version=2
Command: open "mecorp@ftp.themcorp.com" 22
Trace: Looking up host "ftp.themcorp.com"
Trace: Connecting to 222.22.111.33 port 22
Trace: We claim version: SSH-2.0-PuTTY_Local:_Mar_29_2015_12:25:15
Trace: Server version: SSH-2.0-9.99 sshlib: 8.1.0.0
Trace: Using SSH protocol version 2
Trace: Doing Diffie-Hellman group exchange
Trace: Doing Diffie-Hellman key exchange with hash SHA-1
Trace: Host key fingerprint is:
Trace: ssh-dss 1024 20:88:a6:92:fe:11:db:b4:9a:b5:9e:8b:5f:50:bb:77
Trace: Initialised AES-256 SDCTR client->server encryption
Trace: Initialised HMAC-SHA1 client->server MAC algorithm
Trace: Initialised AES-256 SDCTR server->client encryption
Trace: Initialised HMAC-SHA1 server->client MAC algorithm
Command: Pass: ********
Trace: Sent password
Trace: Access granted
Trace: Opening session as main channel
Trace: Opened main channel
Trace: Started a shell/command
Status: Connected to ftp.themcorp.com
Trace: CControlSocket::ResetOperation(0)
Status: Starting upload of c:\temp\test.zip
Command: cd "/Home/mecorp"
Response: New directory is: "/Home/mecorp"
Trace: CControlSocket::ResetOperation(0)
Trace: FileTransferSend()
Command: put "c:\temp\test.zip" "test.zip"
Status: local:c:\temp\test.zip => remote:/Home/mecorp/test.zip
Trace: FileTransferParseResponse()
Trace: CControlSocket::ResetOperation(0)
Status: File transfer successful, transferred 27,974,088 bytes in 21 seconds

Aynı sunucuya aynı protokolü kullanarak bağlanmak ve aynı dosyayı aktarmak için PSFTP kullanırken, çok daha yavaş verim elde ederim. Yaklaşık 150 kb / sn (Windows 7 görev yöneticisinde G / Ç baytlarına bakarak) tahmin ediyorum. İşte günlük:

C:\temp>c:\d2\trunk\Util\psftp.exe -v -l mecorp -pw topsecret -P 22 ftp.themcorp.com
Looking up host "ftp.themcorp.com"
Connecting to 222.22.111.33 port 22
Server version: SSH-2.0-9.99 sshlib: 8.1.0.0
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.63
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-dss 1024 20:88:a6:92:fe:11:db:b4:9a:b5:9e:8b:5f:50:bb:77
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Using username "mecorp".
Sent password
Access granted
Opening session as main channel
Opened main channel
Started a shell/command
Connected to ftp.themcorp.com
Remote working directory is /Home/mecorp
psftp> put test.zip test.zip
local:test.zip => remote:/Home/mecorp/test.zip
psftp>

Yanıtlar:


23

FileZilla, SFTP uygulaması için bir PuTTY / psftp kaynak kodu kullanır. Aslında FileZilla gizli bir PSFTP alt işlemini çalıştırır.

Ancak FzSFtp.exe, aşağıdakiler de dahil olmak üzere birkaç optimizasyon (ve diğer değişiklikler) kullanan kendi PSFTP ( ) yapısını kullanır:

  • SFTP aktarım kuyruğu 4 MB (PSFTP'deki 1 MB ile karşılaştırıldığında)
  • Belleği çok daha büyük parçalara ayırır (515 B ile karşılaştırıldığında 32 KB)
  • Büyük ağ arabellekleri kullanır (SO_RCVBUF için 4 MB ve SO_SNDBUF için [SIO_IDEAL_SEND_BACKLOG_QUERY kullanılarak] dinamik boyut). PSFTP sistem varsayılanlarını korur.

FileZilla ayrıca katkı sağlayabilecek PuTTY (VS) 'den farklı bir derleyici (mingw) kullanır.


WinSCP ayrıca PSFTP kodunu da temel alır (harici bir alt işlemde değil, PSFTP kodunu dahili olarak kullanır) ve benzer bir optimizasyon seti kullanır.


4
Çok bilgilendirici Martin ve WinSCP için teşekkürler!
Chris
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.