FTP(文件传输协议):File Transfer Protocol 早期的三个应用级协议之一,基于C/S结构
数据传输格式:二进制(默认)和文本
双通道协议:命令和数据连接
两种模式:从服务器角度
主动(PORT style):服务器主动连接
命令(控制):客户端:随机port ---> 服务器:21/tcp
数据:客户端:随机port <---服务器:20/tcp
被动(PASV style):客户端主动连接
命令(控制):客户端:随机port ---> 服务器:21/tcp
数据:客户端:随机port ---> 服务器:随机port /tcp
命令通道:走TCP的21端口,用来传输指令的。
命令通道永远是客户端主动向服务端发起请求:命令通道走的是TCP/21端口
数据通道:用来传输数据的
数据通道走的是两个端口,通过工作模式来确定走的端口:
主动模式(post)为TCP的20端口。
主动模式(post):服务器端主动连接客户端
被动模式走的是随机端口,所谓主动和被动都是以服务器的角色来看。
被动模式(pasv):客户端主动连接服务器端(会通过命令通道相互交换信息,客户端就会知道服务端的随机端口号)
范例:服务器被动模式数据端口
227 Entering Passive Mode (172,16,0,1,224,59)
服务器数据端口为:224*256+59
FTP服务状态码:
125:数据连接打开
200:命令OK
230:登录成功
331:用户名OK
425:客户端不能打开数据连接
530:服务器不能登录
用户认证:
匿名用户:ftp,anonymous,对应Linux用户ftp
系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
虚拟用户:特定服务的专用用户,独立的用户/密码文件