File Integrity Checking (XCRC)
Although TCP/IP checks that all packets are received, malformed packets or other mishaps can occur, leading the client to believe that a transfer was successful when it was not. EFT's file integrity command is defined as XCRC. Once an XCRC-enabled client (such as CuteFTP) performs a transfer, it can request EFT to do a checksum calculation on the file. If it matches the checksum on the client, then the transfer is deemed successful. Performing XCRC checksum calculations is processor intensive; enable or disable the feature accordingly.
XCRC is a proprietary command and is not defined nor endorsed by any FTP-related RFC. (XCRC applies to FTP and HTTP only, not SFTP. Refer to File Integrity Checking in FTP and SFTP below for details of file integrity checking in SFTP.)
250 <XCRC> | calculated CRC value |
450 Requested file action not taken | file is busy |
550 Requested action not taken | file is not found or has no read permission; or the SP or EP are not correct |
File Integrity Checking in FTP and SFTP
FTP provides a very raw mechanism to transfer files – the data for a file is uploaded/downloaded as a stream of bits over a TCP/IP connection. There is no additional overhead on that operation, so it is fast; however, this also means that there are no intrinsic mechanisms for ensuring that the file got to the other end intact. That is why many servers, including EFT, support the XCRC command, an extension to the FTP protocol. The XCRC command performs a CRC32 checksum over the file (either the whole file, or a portion of the file if a byte range is specified on the command line). This gives a 32-bit value that EFT computes on the file, which can be compared to the 32-bit value computed on the client side. If both files are the same size and the CRC32 matches, then there is a very high probability that the files are identical and files were transferred correctly.
In contrast, SFTP does add overhead to the transfer of files. As a file is transferred between client and server, it is broken up into smaller chunks called "packets." For example, suppose each packet is 32KB. The SFTP protocol does a checksum on each 32KB file as it is sent, and includes that checksum along with that packet. The receiver gets that packet and decrypts the data, and then verifies the checksum. The checksum itself is "stronger" than the CRC32 checksum. (Because SFTP uses a 128-bit or higher checksum, such as MD5 or SHA, and because this is done on each and every packet, there is a very granular integrity checking that is accomplished as part of the transfer.) Thus, the protocol itself is slower (because of the additional overhead), but the successful completion of a transfer means, de facto, that it has be transferred integrally and there is no need for an additional check.
XCRC can be used on files larger than 2 GB.
To enable or disable the XCRC command
-
Do one of the following:
-
To allow transfers, select the Allow integrity checking (XCRC) check box.
-
To block transfers, clear the Allow integrity checking (XCRC) check box.
-
Click OK to close the FTP Settings dialog box.
-
Click Apply to save the changes on the Server.