我最近不得不实现一个FTP客户端(处于活动模式)。我在RFC 959中发现了一个引人注目的地方,那就是对于PORT
命令,端口号应该分成8位。
一个示例:在客户端上使用端口20000时,应拆分二进制文件。 20000以10为基= 0100111000100000以2为基。应分别分为01001110和00100000。 78和32。这些数字应以纯文本形式发送。
该标准为什么选择这种方法?从效率和易于调试的角度来看,这似乎很奇怪。
答案 0 :(得分:2)
该标准选择这种方法有什么理由吗?
这很可能在历史上丢失了。但是,目前可能尚未建立今天使用的IP:Port的典型格式(这是在HTTP和URL语法之前的方式),因此将一个带有4字节IP和2字节端口的sockaddr_in编码为以6个数字分隔的序列用逗号表示可能是有道理的。
从效率和易于调试的角度来看,这似乎很奇怪。
FTP是基于文本的协议。效率显然不是设计标准-否则它将全部以二进制形式完成。如果完成调试的层是C代码,并且使用6字节的序列而不是IP:port进行调试,则可以很好地进行调试,并且您正在以a的形式有效地处理6字节寻址(4字节IP,2字节端口)。 sockaddr_in结构。