【问题标题】:why does http use CRLF as line delimiter?为什么http使用CRLF作为行分隔符?
【发布时间】:2013-06-20 05:03:01
【问题描述】:

据我所知,使用LF作为行分隔符非常流行,但我想知道为什么许多文本协议如HTTP、FTP使用CRLF作为其行分隔符?

我不认为这些协议是为老式打字机发明的,那么这有什么历史原因吗?我试图通过 google、stackoverflow 和 wikipedia 搜索它,但没有得到任何合理的信息。

谢谢

【问题讨论】:

  • 我想说的只是因为 Microsoft Dos 和 Windows 是最流行的操作系统,因此这些系统的客户端程序使用最多。毕竟家庭使用类 unix 系统比使用任何其他系统要年轻得多。谁可能知道为什么 LF “不好”,所以微软“坚持”在他们的产品中使用 CRLF?
  • 补充@PiotrWadas 所说的内容......规范也是recommends applications be tolerant and accept LF line delimiters,因此CRLF 作为行分隔符的官方地位并没有多大意义。这种容差对于 telnet 等情况特别有用,在这种情况下,您可以在手动撰写原始消息时简单地按 Enter,而不管您使用的操作系统是什么。
  • @PiotrWadas 但是第一台使用 http 的机器是类 Unix (NeXT) 也 CRLF 可能早于使用 CR

标签: http newline history


【解决方案1】:

CR-LF 作为换行符是 Internet 标准,它早于 HTTP;我相信它最初是在 1971 年在 RFC 158 中指定为 TELNET 的一部分。RFC 编辑器有一个页面 explaining some of the history。这是其他 Internet 协议(如 FTP 和 SMTP)使用的约定,因此只有 HTTP 与它们保持一致才有意义。

【讨论】:

  • 即使是像 Redis 这样的新协议也会使用这种 CR-LF 约定。
  • 我相信 RFC 5198 "Unicode Format for Network Interchange" 也是相关的。
  • RFC 编辑器 EOL 历史:“今天许多人使用基于 MS-DOS 的 Windows,后来出现并采用 CR LF 作为其 EOL 约定。”。这很有趣!所以,微软并没有“发明”CR-LF,而是采用了它!
  • @eikuh 是的,微软的 MS-DOS 是从 Digital Research CP/M 那里获得的,而后者很可能是从 DEC 操作系统(尤其是 DEC PDP 的 TOPS-10 操作系统)复制了它-10,Gary Kildall 在编写 CP/M 时使用)。它是 Internet 标准这一事实与 Microsoft 对它的采用无关——Microsoft 直到 4 年后才成立——但 DEC 系统在早期的 Internet 中非常流行,这可能影响了选择 CR-LF 作为互联网标准
猜你喜欢
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多