"Also the communication HAVE to be 100% correct all of the times."
If that is an accurate statement what you don't want is anything to do with TCP/IP
Well, I have a couple of things to say regarding this.
Firstly, I read about FTP and HTTP and I decided that HTTP would be the best option.
Secondly, HTTP and FTP are all running on top of TCP if I'm not wrong.
Thirdly, what is 100%? For me and you, we would see some flaws and errors, but for the user, it would look like everything is OK because not only can data be sent in chunks, but a chunk could be re-sent if it fails, or the whole file could be re-sent if it fails.
The user would only notice a slight time difference in the transfer process.
Edit:Foruthly(?), if there are other options and approaches, then by all means, educate me and use whatever fits.
All I care is about the customers at the end of the day.
They are the ones that conciously decide to exchange their hard earned money for a product or a service, so quality and reliability is key.