FTP (File Transfer Protocol) / TFTP (Trivial File Transfer Protocol) / NFS (Network File System)
三个协议在回答三个问题
★★★ 它们的差别不是快慢,是模型不一样:
· FTP 怎么把文件从 A 搬到 B —— 用两条连接,麻烦全从这来;
· TFTP 怎么在什么都还没有的时候搬一个文件(交换机装机、PXE);
· NFS 怎么让远端目录看起来就是本地目录 —— 它根本不叫传输。
★★ 所以选哪个不看性能,看你要的是哪个模型。
★★★ FTP 的两条连接
★★★★ 这是这一页最要紧的一件事:FTP 用一条控制连接 + 一条数据连接。
· 主动模式:服务器反过来连客户端 → 客户端有 NAT 或防火墙就必然失败;
· 被动模式:客户端连服务器的一个随机高端口 → 所以能过 NAT,但服务器侧防火墙得开一整段端口。
★★★ 「FTP 老是连上了却传不动」,九成是这一条在作怪。
★ 常见误解
★★★ 「SFTP 是加密版的 FTP」 —— 不是。SFTP 是 SSH 的子系统,和 FTP 毫无关系(加密版 FTP 叫 FTPS)。
★★★ 「TFTP 是 FTP 的简化版」 —— 也不是。它走 UDP、自己做重传、没有认证,是为「设备什么都没有的时候」设计的。
★★ 「NFS 就是网络版的 FTP」 —— NFS 不搬文件,它把远端目录挂成本地目录。