传输协议 - ftp

这里只讨论一下我们编码过程中需要注意的部分。

连接上限

FTP 是有连接上限的,开发过程中需要注意到这一点,高并发情况下要考虑复用连接。

4种文件类型

这与文件编码有关,使用 CRT、MobaXterm 等工具传输文件时,经常会让我们选择文件编码,如果选的不对,就会出现文件损坏、中文乱码等问题。

  1. ASCII:也就是文本为字符形式,以换行符为例,在Unix下是/n,Windows下是/r/n,Mac下是/r,ASCII模式下,文件会被处理成当前系统兼容的数据格式,数据内容挥发生一定的变化。
  2. EBCDIC:这类文件也是字符形式,只不过字符来自IBM的EBCDIC字符集;
  3. 二进制文件(Binary):文件传输之后,不会发生任何变化,用于传输图片、压缩包等文件;
  4. 本地数据:大部分的计算机,都是8位1个字节,本地数据的特点就是,一个字节长度不是由8个比特组成,某些特殊操作系统就有这种特性,接收方根据逻辑字节大小进行和本机的存储特点进行转换。

传输模式(主动模式和被动模式)

FTP的工作方式分为,主动模式和被动模式,主动和被动是针对服务端说的,

  • 主动模式,服务端通过20端口,主动访问客户端的端口,然后开始传输数据;
  • 被动模式,服务端开放一个端口,把端口告诉客户端,由客户端发起连接,被动地接受客户端的访问。

在主动模式情况下,因为是服务端主动访问客户端,能否成功建立数据连接,取决于客户端的配置。

这个过程有非常大的概率,被客户端的防火墙拦截;如果客户端没有公网IP,根本无法建立连接。

以下内容来自于百度:

21端口用于发生命令,20端口用于传输数据;

FTP客户端随机开启一个大于1024的端口N,向服务端的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT 命令,将开放的N+1端口告诉服务端。
服务端接收到命令后,会用其本地的数据端口(20端口),连接客户端指定的端口N+1,进行数据传输。

FTP客户端随机开启一个大于1024的端口N,向服务端的21号端口发起连接,然后开放N+1号端口进行监听,向服务器发送PASV命令,通知服务器自己处于被动模式。
服务器收到命令后,开放一个大于1024的端口P进行监听,然后用PORT命令通知客户端,自己的数据端口是P。
客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

二者的区别主要在于建立数据传输连接的时候,
主模式的连接发起方为服务器端,使用20号端口连接客户端的N+1端口建立数据连接;
被动模式连接发起方为客户端,客户端使用端口号+1去连接服务器的某一高位端口;

源码参考

https://gitee.com/seaboot/commons-net

posted on   疯狂的妞妞  阅读(1029)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2018-04-18 Shiro(二)——拦截器、角色和权限
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示