使用FTPS连接传输文件时,"二进制模式taransfer"和" ASCII模式传输"有什么区别?

时间:2020-03-05 18:58:24  来源:igfitidea点击:

我正在使用<B> FTPS连接来发送文本文件
[此文件将包含EDI(电子数据交换)信息)到信箱INOVIS。我已将系统配置为打开FTPS连接,并使用PUT命令将文件写入FTP服务器上的文件夹中。
问题是:我应该使用哪种文件传输模式?如何在模式之间切换?

此外,通过FTPS连接传输文件时,哪种模式是"最佳实践"。
如果有人可以为我提供一个小的ftp脚本,那将有所帮助。

解决方案

回答

如果要精确复制,请使用二进制模式(使用ascii模式)假定数据为7位文本(0-127位字符),并截断该范围之外的所有数据。可以追溯到7位奥秘的网络天,在这种天数下,ASCII模式可以节省时间。

在我们所生活的全球化环境中,找到非ASCII字符非常常见,例如外语,货币符号等。我们应该始终使用BINARY模式。

回答

ASCII模式还使最终用户可以更轻松地在不同平台上共享文本文件。他们将不必担心默认的行尾(例如cr / lf而不是lf),因为ASCII模式将即时为他们完成转换。

对于大多数文件类型,我们始终会希望使用BINARY模式。

回答

ASCII模式在UNIX和DOS格式之间更改换行符。 \ n到\ r \ n,反之亦然。

回答

ACSII模式可基于服务器和客户端平台(CR / LF与LF)在UNIX和Windows格式之间转换文本文件,而Binary则不会。当然,如果我们以ASCII模式传输几乎所有非文本的内容,则可能由于该原因而损坏。

回答

实际上,ASCII / BINARY与第8位无关。这是翻译行尾的惯例。

当我们在与Unix FTP服务器通信的Windows计算机上(FTPS或者FTP协议无关紧要)时,该服务器将在存储文件和因此,如果我们是从UNIX服务器获取文件的,则进行相反的翻译。

ASCII模式的思想是将行尾转换为目标平台的相应尾端。

由于当今世界似乎正在​​收敛于unix约定(<LF>),并且由于当今几乎所有的编辑器(记事本除外)都可以轻松地处理Unix-Line-Endings,因此ASCII模式的日子确实已被编号,我会绝对建议始终使用BINARY传输模式。

无论如何,在传输中途更改数据的前景有些令人恐惧。

回答

对于FTP协议,ASCII传输模式会将每个字符的第8位视为无关紧要,并将其用于错误检查。至于二进制传输模式,数据将按原样发送。请注意,以ASCII模式发送二进制数据(几乎)总是会导致数据损坏。但是,只要发送和接收系统以相同的方式使用第8位,就可以以二进制模式传输ASCII数据(在现代系统中,第8位应保持为0以防止与扩展的ASCII字符集冲突)。

回答

该问题的许多其他答案都是几乎正确到完全错误的信息的集合。

ASCII模式意味着该文件应在线上转换为规范文本形式。除其他外,这意味着:

  • NVT-ASCII字符集。即使原始文件使用其他字符集,例如ASCII,EBCDIC或者UTF-8. 从技术上讲,这不允许设置第8位的字符,但是大多数实现都不会强制这样做。
  • CRLF行尾。

EBCDIC模式意味着一组类似的规则,不同之处在于线路上的数据应位于EBCDIC中。

本地模式允许发送的数据的大小不是每个字节8位。

IMAGE(或者BINARY)模式意味着应该发送数据而不进行任何更改。用户有责任确保目标系统在数据到达后就能理解它们。

除其他外,这意味着如果所涉及的系统之一不使用基于ASCII的字符集,则使用BINARY模式发送文本数据的建议将失败。