简介
FTP是用于两台计算机之间进行文件传输的协议。
本地主机的FTP客户进程建立一个到远程主机FTP服务器进程的TCP连接,并提供用户标识和口令,作为FTP命令的一部分,在该TCP连接上传送,一旦服务器向该用户授权,用户可以将存放在本地文件系统中的一个或者多个文件复制到远程文件系统。
FTP协议与HTTP协议都是文本传输协议,有着相同点如都运行在TCP纸上,也有很多区别:
- FTP使用了两个并行的TCP连接来传输文件。
- 控制连接:用于在两个主机之间传输控制信息。 21号端口
- 如用户标识、口令、改变远程目录的命令,存放,获取等命令
- 数据连接 20号端口
- 用于实际发送一个文件
- 控制连接:用于在两个主机之间传输控制信息。 21号端口
由于FTP独立使用一个控制连接用于发送信息,也称FTP的控制信息是带外传送的,而HTTP协议时在传输文件的同一个TCP连接中发送请求和响应首部行,所以HTTP也称为带内发送控制信息。
FTP传输文件
当用户主机和远程主机开始一个FTP会话时:
- FTP的客户端首先在服务器的21号端口与服务器端发起一个用于控制的TCP连接
- FTP客户端也通过此控制连接发送用户的标识和口令,发送改变远程目录的命令
- 当FTP的服务器端从该连接上收到一个文件传输的命令后,就发起一个到客户端的TCP数据连接。
- FTP在该数据连接上准确的传送一个文件,然后关闭该数据连接。
- 在同一会话器件,如果用户还需要传输另一个文件,FTP则打开另一个数据连接。
对FTP传输而言,控制连接贯穿了整个用户会话期间,但是对会话中的每一次文件传输都需要建立一个新的数据连接(即数据连接时非持续的)
FTP命令
FTP中客户与服务器之间的命令与应答都是以7biteASCII格式在控制连接上传送的。
每个命令由4个大写ASCII字符组成,有些还具有可选参数。一些常见的命令:
- USER username:用于向服务器传送用户标识
- PASS password:向服务器发送用户口了
- LIST:请求服务器回送当前远程目录中的所有文件列表。 注意,该文件列表是通过一个数据连接传送的,而不是在控制连接上传输
- RETR filename:用于从远程主机当前目录检索(即get)文件。 该命令引起远程主机发起一个数据连接,从此数据连接发送所请求的文件
- STOR filename:用于在远程目录上存放(即put)文件
常见回答都是一个3位的数字,后跟一个可选信息:
- 331 Username OK, Password required(用户名OK,需要密码)
- 125 Data connection already open; transfer starting(数据连接已打开,开始传送)
- 425 Can’t open data connection(无法打开数据连接)
- 425 Error writing file(写文件差错)
参考
- 本文作者: xczll
- 本文链接: https://xczllgit.github.io/2020/03/24/computerscience/2020-03-24-applicationFTP/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!