Tại sao FileZilla lại nhanh hơn PSFTP rất nhiều?


11

Tôi đang sử dụng FileZilla 3.10.3 và PSFTP 0.63 (PuTTY). Bất cứ ai có thể giúp tôi tìm ra lý do tại sao thông lượng tôi nhận được rất khác nhau giữa hai khách hàng? Nó không thể là một thiếu sót của giao thức SFTP, vì FileZilla (và WinSCP) nhanh hơn rất nhiều! Cảm ơn trước.

Khi sử dụng FileZilla để kết nối với cùng một máy chủ bằng một số giao thức, tôi nhận được thông lượng "tốt"; ~ 1,2 MBPS cho một tệp lớn. Đây là nhật 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

Khi sử dụng PSFTP để kết nối với cùng một máy chủ bằng cùng một giao thức và chuyển cùng một tệp, tôi nhận được thông lượng chậm hơn nhiều. Tôi ước tính khoảng 150kb / giây (nhìn vào byte I / O trong trình quản lý tác vụ Windows 7). Đây là nhật 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>

Câu trả lời:


23

FileZilla sử dụng mã nguồn PuTTY / psftp để triển khai SFTP. Trên thực tế, FileZilla chạy một quy trình con PSFTP ẩn.

Nhưng nó sử dụng bản dựng PSFTP ( FzSFtp.exe) của riêng mình , sử dụng một vài tối ưu hóa (và các sửa đổi khác), bao gồm:

  • Hàng đợi chuyển SFTP là 4 MB (so với 1 MB trong PSFTP)
  • Phân bổ bộ nhớ trong khối lớn hơn nhiều (32 KB so với 515 B)
  • Sử dụng bộ đệm mạng lớn (4 MB cho SO_RCVBUF và kích thước động cho SO_SNDBUF [sử dụng SIO_IDEAL_SEND_BACKLOG_QUERY]). PSFTP giữ cho hệ thống mặc định.

FileZilla cũng sử dụng một trình biên dịch khác (mingw) so với PuTTY (VS), những gì có thể đóng góp.


WinSCP cũng dựa trên mã PSFTP (mặc dù nó sử dụng mã PSFTP bên trong, không phải trong quy trình phụ bên ngoài) và sử dụng một bộ tối ưu hóa tương tự.


4
Rất nhiều thông tin, Martin, và cảm ơn bạn vì WinSCP!
Chris
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.