FTP协议详解.docx
《FTP协议详解.docx》由会员分享,可在线阅读,更多相关《FTP协议详解.docx(10页珍藏版)》请在冰豆网上搜索。
![FTP协议详解.docx](https://file1.bdocx.com/fileroot1/2023-7/26/026dd21d-e20c-4cc4-9307-53ebc0c75b71/026dd21d-e20c-4cc4-9307-53ebc0c75b711.gif)
FTP协议详解
1.使用ftp的目标
(1)提高文件的共享性(计算机程序或数据)
(2)鼓励间接地(通过程序)使用远程计算机
(3)保护用户因主机之间的文件存储系统导致的变化
(4)为了可靠和高效地传输,虽然用户可以在终端直接地使用它,但是它的主要作用是供程序使用的
2.ftp相关的术语
名词
解释
ASCII
在ftp中,ASCII字符被定义为8位的编码集
权限控制
权限控制定义了用户在一个系统中可使用的权限和对系统中文件操作的权限,权限控制在防止未被授权或意外使用文件时是必需的。
Server-Ftp过程有调用权限控制的特权
字节大小
ftp中有两种类型的字节大小:
文件的逻辑字节大小和用于数据传输的传输字节大小。
传输字节大小通常是8位。
传输字节不必等于系统中存储数据的字节大小,也不必对数据结构进行解释
控制连接
控制连接是建立的USER-PI和SERVER-PI之间用于交换命令与应答的通信链路。
该连接遵从Telnet协议
数据连接
数据连接是在特定的模式和类型下,传输数据的全双工连接。
链路可以建立在服务器DTP和用户DTP之间,也可以建立在两个服务器DTP之间
数据端口
为了建立数据连接,被动数据传输过程需要在一个端口”监听”主动传输过程的消息
DTP
数据传输过程,建立和管理数据连接,DTP可以是主动的也可以是被动的
End-of-Line
定义了打印行时的分隔符。
即”回车符”
Eof
Endoffile传输的文件的结尾标志
EOR
end-of-record传输的记录的结尾标志
错误恢复
一个允许用户在主机系统或文件传输失败时可以从特定的错误中恢复的程序。
ftp中,错误恢复包括在给定的一个检查点时重新开始文件传输
FTP指令
包含从user-ftp到sever-ftp的过程的控制信息的指令集
文件
计算机数据的有序集合(包括程序),由路径名标识
模式
数据的模式通过数据连接传输。
模式定义了传输期间包含EOR和EOF的格式
NVT
在telnet协议中定义的网络虚拟终端
NVFS
网络虚拟文件系统。
定义了拥有标准指令和路径名约定的标准的网络文件系统
页
一个文件独立的部分的集合。
FTP支持由独立的索引页组成的不连续文件的传送
PI
协议解释器。
用户和服务器各拥有明确的任务use-PI和server-PI
记录
一个顺序文件可以由数个称为记录的连续部分组成。
FTP支持记录结构,除非文件不需要文件结构
回应
是对FTP指令作出的应答,经由控制连接从服务器发送到客户端
Server-DTP
数据传输过程,一般是”主动的”状态,建立一个含有”监听”端口的数据连接。
为传输和存储设置参数,从它的PI通过指令传输数据。
DTP被设置为”被动的”状态收听消息,比开按就连接到数据端口的效果更好
Server-FTP过程
和user-FTP过程或者可能是其他服务器合作,完成文件传输过程。
是一个由多个处理(协议解释器PI和一个数据传输过程DTP)组成的集合
Server-PI
服务器协议解释器在端口”监听”,与user-PI连接,建立一个控制通信连接。
它从user-PI收到标准的FTP指令,然后发出回应,接着管理server-DTP
类型
在数据存储和数据传输的时间内特定的转换
User-ftp
为了与server-ftp过程的数据连接,数据传输过程”监听”数据端口。
若两个服务器之间传输数据,user-DTP就停止不工作
User-DTP过程
与一个或多个server-FTP过程合作,为了完成文件传输功能的功能集合。
包括一个协议解释器,一个数据传输过程和一个用户界面,用户界面允许使用本地语言显示指令回应的对话
User-PI
用户协议器开始控制连接从它的端口到server-ftp过程,如果这个过程是文件传输的一部分,接着初始化ftp指令,然后管理user-ftp
3.ftp模型
(1)客户端与服务器之间传送数据
UserPI创建控制连接。
控制连接遵从Telnet协议。
在用户初始化阶段,标准FTP命令被UserPI生成并通过控制连接传到服务器处理。
ServerPI将相应的标准FTP应答通过控制连接回传给UserPI。
数据传输由数据连接完成。
UserDTP在特定端口监听,由ServerDTP用指定参数初始化连接。
实际处理过程有两种模式:
PORT模式和PASV模式
PORT模式:
a.客户端动态选择一个端口(1024以上)连接服务器的21号端口,经过tcp的三次握手之后,控制连接被建立
b.用户想要列出目录结构,客户端发送port指令告诉服务器连接自己的什么端口来建立一条数据通道
c.服务器接到上面的指令时,使用20号端口连接用户在PORT指令中指定的端口号,然后发送目录的列表
d.客户端发送下载文件等指令,此时客户端还将再次发送PORT指令,告诉服务器连接它的哪个新端口,新的数据通道建立后,再开始文件传输的工作
PASV模式:
a.客户端动态选择一个端口(1024以上)连接服务器的21号端口,经过tcp的三次握手之后,控制连接被建立
b.用户想要列出文件目录,客户端发送pasv指令,告诉服务器自己要连接服务器的某一个端口
c.若服务器上这个端口可用,服务器返回ACK确认信息,之后数据传输通道被建立并返回用户想要的信息;若服务器这个端口不可用,服务器返回UNACK信息,客户端会再次发送PASV命令。
这个过程就是所谓的连接建立的协商过程
(2)服务器与服务器之间传送数据
这种方式的专业术语是FXP。
FXP说简单点就是一个FTP客户端控制两个FTP服务器,在两个FTP服务器之间传送文件。
FXP的全称为Protocol――文件交换协议,可以认为FXP本身其实就是FTP的一个子集,因为FXP方式实际上就是利用了FTP服务器的Proxy命令,不过它的前提条件是FTP服务器要支持PASV,且支持FXP方式。
FXP传送时,文件并不下载至本地,本地只是发送控制命令,故FXP传送时的速度只与两个FTP服务器之间的网络速度有关,与本地速度无关。
因FXP方式本地只发送命令,故在开始传送后,只要本地不发送停止的命令,就算是本地关机了,FXP仍在传送,直至一个文件传送完成或文件传送出错后,FTP服务器等待本地发送命令时,才会因不能接收到命令而终止FXP传送。
因为上述的原因,FXP传送出错时,本地的用户进程还留在FTP服务器中,并没有退出,如此时再次连接FTP服务器,可能会因用户线程,超过允许,FTP服务器提示客户已登陆并拒绝客户端的连接,直至服务器中的傀儡进程因超时或其他原因被FTP服务器杀死后,才能再次连接FTP服务器。
成功FXP有两个必要条件:
①两个FTP服务器均支持FXP;②两个FTP服务器均支持PASV方式。
4.FTP数据表示和存储
数据从发送主机的一个存储设备传输到接收主机的一个存储设备,因为通常两个系统的数据表示是不同的,所以需要对数据进行特定的转换。
(1)ASCII类型:
ftp默认类型,用于传输文本文件,发送方把内部字符表示的数据转换成标准的8位NVT-ASCII表示,接收方把数据从标准的格式转换成自己内部的表示形式。
(2)EBCDIC类型:
数据被表示为8位的EBCDIC字符
(3)IMAGE类型:
数据以连续的位传输,并打包成8位的传输字节。
接收站点必须以连续的位存储数据。
存储系统的文件结构(或者对于记录结构文件的每个记录)必须填充适当的分隔符,分隔符必须全部为零,填充在文件末尾(或每个记录的末尾),而且必须有识别出填充位的办法,以便接收方把它们分离出去。
填充的传输方法应该充分地宣传,使得用户可以在存储站点处理文件。
IMAGE格式用于有效地传送和存储文件和传送二进制数据。
(4)本地类型
以逻辑字节传输的数据必须在第二个参数中指定字节的大小。
字节大小的值必须是十进制整数,它没有缺省值。
逻辑字节大小不必和传输字节大小一样。
如果使用不同的字节大小,那么逻辑字节应使用连续的方式打包,忽略传输字节的分隔符,并且无须在末尾进行任何填充。
当数据到达接收方主机,它的转换方式依赖于逻辑字节大小和主机的特性。
该转换必须是可逆的
5.FTP指令
访问控制指令:
USER
用户名
PASS
口令
ACCT
账户
CWD
改变工作路径
CDUP
回到父目录
SMNT
结构加载
REIN
重新初始化
QUIT
退出登录
传输参数指令:
PORT
数据端口
PASV
被动
TYPE
数据表示类型
STRU
文件结构
MODE
传输模式
FTP服务指令:
RETR
获得文件
STOR
保存
STOU
唯一保存
APPE
追加(新建)
ALLO
分配
REST
重新开始
RNFR
重命名
RNTO
重命名为
ABOR
放弃
DELE
删除
RMD
删除目录
MKD
创建目录
PWD
打印工作目录
LIST
列表
MLST
名字列表
SITE
站点参数
SYST
系统
STAT
状态
HELP
帮助
NOOP
等待
6.FTP回应
一个FTP回应包含三个数字,并跟随一些文本。
数字用来自动检测下一步要进入的状态,文本给用户使用
第一个数字有五个值:
1yx:
确定预备应答
2yz:
确定完成回应
3yz:
确定中间回应
4yz:
暂时拒绝完成回应
5yz:
永久拒绝完成应答
第二个数字的功能编码:
0:
语法
1:
回应请求信息
2:
回应关于控制连接和数值连接
3:
回应关于登陆过程和账户程序
4:
保留
5:
回应指出服务器文件系统的状态,与请求的传输或其他文件系统操作有关
第三个数字给出了第二个数字指出的功能类别更详细的信息
7.实际分析从ftp服务器上下载文件过程
抓包如下:
218.249.81.196是ftp服务器ip地址,192.168.0.102是ftp客户端ip地址
1.首先ftp客户端创建控制连接,使用客户端59801端口向服务器21号端口发起tcp三次握手连接,成功后收到服务器回应的220serv—u信息。
表明成功建立控制连接。
连接模式在是PASV模式
2.客户端发送user信息,得到服务器正确回应
3.客户端发送pass信息,登陆服务器,并且得到正确登陆回应
4.客户端请求服务器的系统类型,得到反馈是UNIXL8平台系统
5.客户端请求文件系统,获知服务器支持扩展
6.客户端请求改变工作路径到根路径,收到正确回应后请求打印当前目录,收到正确回应
7.客户端请求设置文件类型为image
8.客户端发起PASV命令,服务器模式设为passive
9.客户端请求获得文件,服务器才去字节传输模式发送文件
10.客户端收到文件传输完成回应,至此文件传输过程完结