我正在使用某种形式的FTP服务器,我注意到SYST命令的响应是“Unix Type:L8”。我想知道这究竟是什么意思,并发现在RFC 959中,SYST命令被定义为返回服务器操作系统的类型作为其响应的第一个字。那仍然没有告诉我“Type:L8”是什么意思。我真的想知道它意味着什么,因为那里有很多FTP服务器似乎给出了同样的响应。
我不知道它在哪里指定,但它表明服务器接受带有参数TYPE L
的8
命令。
TYPE L
就像TYPE I
(二进制),但带有一个参数,表示一个字节中有多少位。设计FTP时,8位字节不像现在那样通用。同一RFC的3.1.1.4节涵盖了TYPE L
并给出了一些例子。 (尽管如此,还是有很多未说明的。)
不再需要TYPE L
了。如果您在客户端中实现TYPE I
,那么您已经完成了所有您需要做的事情。服务器需要实现TYPE A
作为默认模式,但不要在该服务器上投入太多工作,因为合理的客户端不会使用它。 (只需在发送时执行\n
- > \r\n
,在接收时执行反向操作)。
在djb的"FTP in practice" documentation中,他写道:
许多客户滥用SYST作为服务器功能的声明。当一些客户端在SYST响应中看到特定字符串时,它们会以相当奇怪的方式运行。某些客户端在SYST响应中看不到特定字符串时会禁用基本功能;这给服务器带来了严重的问题。我建议所有新服务器使用无意义的字符串响应SYST
215 UNIX Type: L8
与大多数当前服务器完全一样。
对我来说听起来不错。如果你是服务器,你应该说UNIX Type: L8
,这意味着“是的,我是一个FTP服务器”,如果你是一个客户端,你不应该打扰SYST
命令,因为响应没有告诉你什么。