You can use XModem if you want to, our device used to use that. Its a bit of a waste as USB bulk transfers are reliable, the basic USB protocol already does ACKs, CRC checking and has retry logic, so XModem is superfluous and just slows things down.
Once you have a connection you can just stream the data and be assured that any data which does arrive is good and complete.