FTP中ASCII模式的意义是什么?


17

为什么在FTP中存在ASCII模式,这种模式在当今的软件和FTP实现中很普遍?为什么不总是使用二进制而不考虑数据?

Answers:


24

如有疑问,请阅读RFC

如果未使用STRUcture命令,但所有FTP实现都必须为“文本”文件(即,具有ASCII或EBCDIC类型的文件)接受文件和记录结构,则默认采用文件结构。文件的结构将影响文件的传输模式(请参见“传输模式”部分)以及文件的解释和存储。

文件的“自然”结构将取决于存储文件的主机。通常,源代码文件将以固定长度的记录存储在IBM Mainframe中,而DEC TOPS-20则以字符流的形式存储在DEC TOPS-20中,例如通过。如果在这样的不同站点之间传输文件很有用,则一个站点必须有某种方式可以识别另一个站点对文件的假设。

等等等等。简而言之,这是为了确保当使用另一种编码传输到主机时,一种编码形式的文本表示形式已正确转换。


如有疑问:搜索Google并在StackExchange上找到答案。
ke4ukz

4

因为不同的操作系统(Windows,UNIX,VAX)对简单的文本文件使用不同的行尾方法。

Windows(DOS)使用CR / LF对,UNIX仅使用其中之一。ASCII模式可转换CRLF对,而BIN模式则不会。

罗恩


4
这不仅仅是您提到的行尾编码差异,而且还涉及字符本身的差异编码,例如ASCII和EBCDIC之间的差异。@Sinan回答了RFC-959中记录的详细信息
高个子Jeff

1

我认为这只是因为有时很方便。以前,FTP 您如何从一个系统获取文件到另一个系统的日子,这是一个很大的节省时间-您不必知道另一端的系统就可以拥有可读的文本文件。

但是,是的,今天主要只是个麻烦。对于那些没有经验的人来说,这只是一台损坏的o-matic机器!


1

ASCII模式早在字符和EOL编码成为实际问题的那一天就已存在,但我希望看到ftp客户端删除或今天只是隐藏此选项。如今,大多数系统之间只是搞混了EOL约定,但是我发现大多数体面的文本编辑器都不再在乎。因此,为了避免损坏二进制文件(甚至是一些基于文本的文件),我建议仅对所有内容使用二进制模式。


-1

使用ASCII模式,以便软件可以根据是否上载/下载,将EOL字符自动更改为客户端/服务器的适当值。如果要上载到与您使用的相同类型的系统,则这些模式没有区别。

但是,此模式的原因是因为并非所有系统上的所有软件都可以正确处理不是正确的EOL类型的EOL(例如,许多Windows软件将只能正确处理“ \ r \ n”并且会阻止某些操作) “ \ n”太可怕了)。


“这些模式没有区别。” - 这不是真的。以ascii模式发送二进制文件可能会损坏它。不好
Beefster
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.