Коллеги, большое спасибо за идеи и рассуждения. Думаю это полезно не только для меня. Не стал сильно сразу расписывать задачу, чтоб не засорять. Со стороны клиента файлы пока передает человек, это не картинки и не музыка, а созданный пакет файлов, например бинарники и другие форматы подготовленные для обработки удаленной «железкой», поэтому есть свобода, и действительно идея прописать внутрь файла hash мне нравится. После загрузки файла можно сразу ее пересчитать или даже на ходу по блокам после записи и чтения с SD. Тогда можно будет светси к минимуму напряжения оператора, что будет их «заливать» удаленно. И по приему 226 transfer complete можно будет судить, что файл записан и верифицирован.
В примере *.dvc3 это формат шифрованной прошивки для обновления firmware в нашей компании.
Код
Статус: Соединяюсь с 176.226.243.83:201...
Статус: Соединение установлено, ожидание приглашения...
Ответ: 220 Welcome to DaNiS FTP Server
Команда: USER Murena
Ответ: 331 User name okay, need password
Команда: PASS ******
Ответ: 230 Login successful.
Команда: SYST
Ответ: 215 UNIX Type: L8 Internet Component Suite
Команда: FEAT
Ответ: 500 Syntax error, command unrecognized
Статус: Соединение установлено
Статус: Получение списка каталогов...
Команда: CWD /
Ответ: 250 CWD command successful
Команда: PWD
Ответ: 257 "/" is current directory.
Команда: TYPE I
Ответ: 200 Switching to Binary mode.
Команда: PASV
Ответ: 227 Entering Passive Mode (176,226,243,83,0,200)
Команда: LIST
Ответ: 150 Opening BINARY mode data connection for /bin/ls
Ответ: 226 transfer complete, data port is closed
Статус: Список каталогов извлечен
Статус: Начинаю закачивать E:\KTM4_v64_35_test_U3_ftp.dvc3
Команда: CWD /DanFolder002
Ответ: 250 CWD command successful
Команда: PWD
Ответ: 257 "/" is current directory.
Команда: PASV
Ответ: 227 Entering Passive Mode (176,226,243,83,0,200)
Команда: STOR KTM4_v64_35_test_U3_ftp.dvc3
Ответ: 150 File status okay; about to open data connection.
Ответ: 226 transfer complete, data port is closed
Статус: Файл передан успешно, передан 263 462 байт в 3 секунды
Простой проверке CRC32 пакетов, что приходят по TCP я не верю, у меня был случай, когда я скачивал дистрибутив Mplab с сайта Микрочип, после скачки установка «падала», когда я скачал этот же дистрибутив с другого места, все стало ОК. Я сравнил эти два одинаковых файла по 105 MB утилитой «file compare» и нашел 9 байт в разных местах, которые отличались, распечатал и «сунул в нос» провайдеру, через неделю извинились и что то поменяли, стало нормально.