传输协议 - ftp
这里只讨论一下我们编码过程中需要注意的部分。
连接上限
FTP 是有连接上限的,开发过程中需要注意到这一点,高并发情况下要考虑复用连接。
4种文件类型
这与文件编码有关,使用 CRT、MobaXterm 等工具传输文件时,经常会让我们选择文件编码,如果选的不对,就会出现文件损坏、中文乱码等问题。
- ASCII:也就是文本为字符形式,以换行符为例,在Unix下是/n,Windows下是/r/n,Mac下是/r,ASCII模式下,文件会被处理成当前系统兼容的数据格式,数据内容挥发生一定的变化。
- EBCDIC:这类文件也是字符形式,只不过字符来自IBM的EBCDIC字符集;
- 二进制文件(Binary):文件传输之后,不会发生任何变化,用于传输图片、压缩包等文件;
- 本地数据:大部分的计算机,都是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去连接服务器的某一高位端口;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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(二)——拦截器、角色和权限