FTP协议

FTP 协议

介绍

FTP支持将计算机中的本地文件通过网络传送到另一台计算机中——即文件传送。FTP协议是有状态的基于TCP的网络协议。

  • FTP屏蔽了各计算机系统的差异(Linux,Windows,MacOS,IOS,unix均可用FTP),因而FTP协议适合于在异构网络中的设备之间传送文件。
  • FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码);允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)

FTP的应用场景:计算机之间传输文件,尤其是用于批量传输文件

格式

格式:ftp://账号:密码@IP地址:端口号

例如:ftp://admin:123456@192.108.11.87:21

如果对方的ftp服务并没有启动密码,格式:ftp://IP地址:端口号

概念

FTP协议工作时需要2种TCP连接:控制连接数据连接

  • 控制连接:传输FTP命令和响应,默认使用TCP端口21。
  • 数据连接:实际的文件传输。分为两种模式
    • 主动模式(Active Mode)
      1. FTP客户端通过控制连接告诉FTP服务器使用哪个端口(大于1024的某端口)进行数据传输

      2. FTP服务器使用TCP20端口尝试连接FTP客户端的此端口进行数据传输。

      3. 连接成功,建立数据连接,传输数据

        工作流程图

        ServerClientServerClient打开一个端口(以1028端口举例),并监听此端口监听1028端口收到1028端口号打开本地20端口接受连接请求数据传输开始数据传输完毕四次挥手,关闭数据连接接收到控制指令关闭控制连接[控制连接]发送刚打开的1028端口号尝试以20端口连接客户端1028端口建立数据连接(服务端20端口对客户端1028端口)传输数据[控制连接]发送“QUIT”或“BYE”指令[控制连接]发送响应码
    • 被动模式
      1. FTP客户端发送PASV命令到FTP服务器,要求服务器进入被动模式

      2. FTP服务器随机打开一个端口(大于1024)等待FTP客户端的连接

      3. FTP服务器通过控制连接告诉客户端端口号

      4. FTP客户端连接到这个端口,建立数据连接

        工作流程图

        ServerClientServerClient收到命令随机打开一个本地端口(1028)等待连接收到1028端口号打开本地20端口接受连接请求数据传输开始数据传输完毕四次挥手,关闭数据连接接收到FIN控制指令接收到ACK响应码接收到FIN接收到ACK响应码关闭控制连接[控制连接]发送PASV命令发送刚打开的1028端口号尝试以20端口连接服务端1028端口建立数据连接(服务端20端口对客户端1028端口)传输数据[控制连接]发送FIN指令[控制连接]发送ACK响应码[控制连接]发送FIN控制指令[控制连接]发送ACK响应码

只有操作者主动关闭ftp连接,控制连接才会关闭,而文件传输完毕,数据连接就会关闭。比如用Windows资源管理器连接了远程ftp服务器拷贝文件,文件拷贝完成后,数据连接也就关闭了,控制连接没有关闭,你要拷贝其他文件,数据连接会被重新建立,但是如果你关闭了Windows资源管理器的窗口,那么控制连接就被关闭了。

posted @   勤匠  阅读(104)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示