首页/网络/协议速查/文件传输故障速查

文件传输故障速查

传输问题九成出在「数据连接」而不是登录:先确认控制连接可登录、再看数据端口方向、最后查权限与传输模式。

协议速查网络更新于 2026-10-13

为什么先怀疑数据连接

文件传输的登录与传输走两套连接:能登录只证明控制通道与认证没问题,真正的卡点通常发生在数据连接的方向、端口与模式上。按控制连接可用、数据端口可达、权限与传输模式正确这三步推进,比在客户端反复改设置快得多。

基本信息

排查顺序连通性 → 认证 → 数据通道 → 权限 → 传输模式
证据来源客户端报错文本、服务端日志、两端抓包
关键命令nc、lftp、sftp、rsync 对照测试
常见协议FTP/FTPS(20/21、被动端口范围)、SFTP/SCP(22)、TFTP(69/UDP)
注意FTP 被动端口范围由服务端配置,不是固定值

典型使用场景

  • 登录成功但目录列不出来,判断是否为被动端口未放行
  • 上传后文件变大或损坏,确认是否误用 ASCII 模式
  • 断点续传失效,核查是否缺少续传指令或版本条件
  • 跨网段传输慢或中断,区分丢包、MTU 与中间设备超时

现象与快速验证

现象可能原因快速验证
登录成功,LIST/RETR 卡死被动端口未放行或 NAT 改写抓包看客户端连的目标端口是否可达
227 里的地址连不上PASV 返回私网地址服务端配置对外通告地址后重试
主动模式失败服务端出站 20 被防火墙拦截切换被动模式对照验证
认证通过但 550 拒绝路径不存在或文件权限不足比对服务端日志中的实际路径
上传后文件损坏变大ASCII 模式做了换行转换改用 TYPE I 重传并比对校验和
SFTP 连不上端口或协议搞混,误当 FTPS先用 ssh 连同一端口验证

分层定位

分层定位
nc -zv host 21                 # ① 控制端口是否可达
lftp -u u,p host -e 'ls; bye'   # ② 认证与数据通道是否可用
lftp -u u,p host -e 'set ftp:passive-mode off; ls; bye'  # ③ 换主动模式对照
sftp user@host <<< 'ls'         # ④ 用 SFTP 排除 FTP 专属问题
rsync -av --partial ./dir/ user@host:/data/dir/  # ⑤ 大批量同步改用 rsync
FTP 排障黄金法则:能用被动就用被动;两端同时抓包,控制连接与数据连接一起看,连接建立方向一目了然,比猜快十倍。
只测了 21 端口就宣布网络没问题是最常见的误判:FTP 数据连接走完全不同的端口与方向,TFTP 更是全程 UDP。

易错点

  • 把登录成功等同于网络没问题,忽略数据连接是独立建立的第二条连接
  • 续传时只看 Range 不看资源是否变化,版本更新后拼出损坏文件
  • 跨广域网用 TFTP 传大文件,靠超时重传几乎必然失败
  • 关闭 FTP 服务却忘了回收被动端口范围的防火墙策略,长期留下攻击面

数据来源与参考

  • RFC 959(数据连接)
  • RFC 2428(EPSV)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌