您的位置:首页 > 编程语言 > PHP开发

FTP标准协议整理笔记(一)

2006-12-16 11:53 337 查看
前段时间工作所需,需要实现一个比较复杂的FTP应用,因此专门花了一点时间来熟悉FTP的标准协议 ,并结合实际的编码测试情况对FTP标准协议进行了简单整理。

一、 基本概念
FTP即文件传输协议,它是TCP/IP提供的一种标准机制,用来从一个主机把文件复制到另一个主机。FTP的客户端和服务器端是通过双连接进行通信的,一条是连接用于数据传输,另一条则用于传输控制信息(命令和响应请求)。这样来把命令和数据的传输分开使得传输的效率更高。FTP的双连接在实际的通信过程中,使用了不同的策略和端口号。在控制连接进行指令交互的过程中使用了NVT ASCII字符集,每一条命令和对应的响应都是一个短行,即每行结束处为回车和换行符号。而客户端在进行数据传输之前需要通过控制连接来定义要传输的文件类型、数据结构以及传输方式。
1) 控制连接
a. 服务器端在熟知的端口21(当然也有的情况为自定义)发出被动打开,然后等待客户端建立通信连接请求。这里所谓的被动打开是指服务器端在端口21处于监听状态。
b. 客户端向FTP服务器指定的端口发出主动打开。
在整个过程中控制连接始终处于连接状态,IP协议使用的服务类型是最小延时,因为在实际的通信过程过程,经常是人机交互的,键入的命令并希望得到的响应时间不能太长。
2) 数据连接
数据连接在建立通信的过程分两种模式,一种是PORT模式,另一种则为PASV模式。
a. PORT模式时:客户端选择一个短暂端口号,并使用被动打开通过控制连接将该端口号发送给服务器,服务器收到该端口号后,使用该端口主动创建打开连接请求,数据连接成功后,在该数据连接上传输数据信息。
b. PASV模式时:客户端通过控制连接向FTP服务器发送一条PASV指令,服务器端收到该指令后,选择一个短暂端口,并在控制连接上进行响应,响应中包含返回的端口号,然后客户端利用服务器端返回的端口主动建立到服务器的数据连接,数据连接成功后,在该数据连接上进行数据信息交互。
3) 文件类型
FTP能够在数据连接上传输如下文件类型
a. ASCII文件:传送文本文件的默认格式,每一字符都使用了NVT ASCII进行了编码,发送端把文件从它自己的表示转换成NVT ASCII字符,而接收端则从NVT ASCII字符转换成自己的目标表示
b. EBCDIC文件:连接的一端或两端使用EBCDID编码,就可使用该编码传输文件了。
c. 图象文件:传输二进制文件的默认格式,它是采用连续的位流进行传输的,没有任何的解析和编码。
4) 数据结构
a. 文件结构:连续的字节流
b. 记录结构:将文件划分为一条条的记录,只能用于文本文件
c. 页面结构:将文件划分为页面,每页面有页号好页面首部,可随机和顺序存取
5) 传输方式
a. 流方式:在数据传输的过程中,数据是被作为连续的字节流交付给TCP层进行传输的
b. 快方式:数据是按块交付给TCP进行传输的
c. 压缩方式:数据先进行压缩,然后交付给TCP层进行传输。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: