计算机网络--应用层(3)FTP
文件传输协议FTP
1. 经典场景
在典型的FTP会话中,向一台远程主机传文件或从远程主机下载文件。
为使用户能够访问远程主机的账户,用户必须提供一个用户标识和口令。验证授权信息后,用户就能从本地文件系统向远程主机文件系统传送文件。
2.工作过程
用户通过一个FTP用户代理,与FTP交互。该户首先提供远程主机的主机名,建立一个TCP的连接,然后该用户提供用户标识和口令,作为FTP命令这一部分在该TCP连接上传送,该控制信息的传输使用的是21号端口。一旦服务器授权,用户就可以向远程文件系统拷贝存放在本地文件系统的文件。使用的是另一个TCP的数据连接,端口号20。当数据传输完毕后会关闭该连接。如果用户还想再发送一个文件,那么该数据连接的TCP需要再次建立。也就是说每一个连接只传送一个文件。
同时FTP服务器必须在整个会话期间,保留用户的状态信息。但是HTTP是无状态的,也就是不会对用户的状态进行追踪
如图:
2.1 两种连接方式
FTP使用的是两个 并行的TCP连接:控制连接(端口21)。数据连接(端口20)。
控制连接用于两个主机之间传输控制信息:比如用户标识、口令。
数据连接用于实际传输一个文件。
2.2 带外 和 带内
FTP协议使用一个分离的控制连接,因此称之为带外传送。
但是HTTP协议是在传输文件的TCP连接中发送请求和响应的首部行,因此称之为带内发送控制信息。
NB:其区分的核心为控制信息或者请求 是否和传输文件使用同一个TCP连接。 同一个则为带内,否则为带外。
3.FTP的命令和回答
组成:7位ASCII格式进行传输,也是人为可以阅读的。
每个命令由4个大写字母组成
USER username:用于向服务器传送用户标识。
PASS password: 用于向服务器传送用户口令。
LIST 用于请求服务器返回远程主机当前目录的所有文件列表。
RETR filename get 文件
STOR filename put文件
FTP的回答是3位数
331 Username OK, Password required
125 data connection already open; transfer starting
425 can not open data connection
452 error writing file