在处理 FTP 协议标准的RFC 959的第 4.1 节末尾,它遵循 Telnet 协议和 Telnet eol 代码。
引用 RFC:
文件传输协议遵循 Telnet 协议的规范,用于通过控制连接进行的所有通信。由于用于 Telnet 通信的语言可能是协商的选项,因此接下来两节中的所有引用都将指向“Telnet 语言”和相应的“Telnet 行尾代码”。目前,人们可能会将它们理解为 NVT-ASCII 和<CRLF>
. 不会引用 Telnet 协议的其他规范。
然后在RFC 1123 中,第 3.3.1 节将正确的行尾引用为<CRLF>
:
Telnet 协议将序列 CR LF 定义为“行尾”。对于终端输入,这对应于在用户终端上按下命令完成或“行尾”键;在 ASCII 终端上,这是 CR 键,但也可以标记为“Return”或“Enter”。
然后讨论不同平台上行尾的歧义。并说应该允许<CR NUL>
, 或\r\0
, 但再次说这<CRLF>
应该是默认值。
在Newlines的维基百科文章中,也讨论了这个问题,并说:
大多数文本 Internet 协议(包括 HTTP、SMTP、FTP、IRC 和许多其他协议)都要求在协议级别使用 ASCII CR+LF (0x0D 0x0A),但建议宽容的应用程序也识别单独的 LF。在实践中,有许多应用程序错误地使用 C 换行符 '\n' 代替(请参阅下面的编程语言中的换行符部分)。当试图与遵守更严格的标准解释的系统进行通信时,这会导致问题;一个这样的系统是 qmail MTA,它主动拒绝接受来自发送裸 LF 而不是所需 CR+LF 的系统的消息。
所以坚持下去,\r\n
你会没事的...