Storage API stream wrappers Traffic Usage In my Drupal 7 Project I have configured Storage API stream wrappers in order to save all public and private files over ftp server.

everything works well and files in public and private are copied into ftp server correctly.

Imagine that my base server is domain.com and my ftp server is ftp.com

As you know, public files will be shown with direct link to the source for example 

http://ftpdomain.com/public-file.png 


and private files are not shown with direct links for example 

http://domain.com/system/storage/serve/private-file.rar


Now my question is: when a user try to download private-file.rar via above link, what happens really?
is private file from ftp server being copied to the main server temp folder at first and then download starts?
Or private-file.rar is downloaded directly from ftp server to the client machine despite the URL starts with "http://domain.com/.... "

It is very important for me because of shared server rules in file download limitations , I have to purchase one PHP host for running Drupal script and one download host for placing files folder in order to run a Drupal project commerce file shop.

I want to be sure, download traffic only relate to download server not PHP server.

Thanks a lot for your guidance.
If you look into the Drupal core's routing config, you can find the controller responsible for delivering private files. It's abstracted through the BinaryFileResponse object, but you can see in its sendContent method how the data is prepared for delivery. 

It uses PHP's stream_copy_to_stream function to copy from your input stream (your private path) to the php://output stream, the HTTP body delivered via PHP/web server.