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. 连接成功,建立数据连接,传输数据

        工作流程图

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

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

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

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

        工作流程图

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

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

posted @ 2024-05-16 11:22  勤匠  阅读(61)  评论(0编辑  收藏  举报