TFTP
TFTP比较简单,简单介绍一下。
TFTP(Trivial File Transfer Protocol,简单文件传送协议),它是一个很小且易于实现的文件传送协议。TFTP使用客户/服务器方式,但它使用UDP数据报,因此TFTP需要有自己的差错改正措施。TFTP只支持文件传输而不支持交互。TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
TFTP的主要特点是:
(1)每次传送的数据报文中有512字节的数据,但最后一次可不足512字节。
(2)数据报文按序编号,从1开始。
(3)支持ASCII码或二进制传送。
(4)可对文件进行读或写。
(5)使用很简单的首部。
FTP
简介
FTP(File Transfer Protocol,文件传送协议)是互联网上使用得最广泛的文件传送协议。FTP提供交互式的访问,使用TCP实现可靠传输,采用客户/服务器模式,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令),FTP屏蔽了计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
文件传输协议的目标是:
- 促进文件(计算机程序和/或数据)的共享
- 鼓励间接或通过程序使用远程计算机
- 保护用户免受主机之间文件存储系统的变化
- 可靠有效地传输数据
一般我们熟知的都是21端口,还有以下分类:
主动FTP(PORT):
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 <- 服务器 20端口
被动FTP(PASV):
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 -> 服务器 >1023端口
工作原理
登录
使用用户名&密码进行登录
匿名FTP:对于一些提供公众文件拷贝服务的FTP服务器,使用匿名方式,即不需要登录。
传输
一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
主进程的工作步骤如下:
- 打开熟知端口(端口号为21),使客户进程能够连接上。
- 等待客户进程发出连接请求。
- 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
4.回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。
FTP使用的两个TCP连接
在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:控制连接和数据连接。控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是数据连接(一般使用端口20)。服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建数据传送进程和数据连接,用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。由于FTP使用了一个分离的控制连接,因此FTP的控制信息是带外(out of band)传送的。
NFS:FTP协议中,如果客户端A想要修改服务器端B中的某个文件,需要下载B中的文件,修改后再进行上传,传输过程浪费了很多时间。而NFS则采用另一种思路,NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。这样,NFS可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。对于上述例子,计算机A中的NFS客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机B中的NFS服务器,NFS服务器更新文件后返回应答信息,在网络上传送的只是少量的修改数据。
数据传输模式
ASClI模式
假定正在传输的文件为简单的ASClI码文本,此时ftp通常会自动地调整文件内容以便于把文件解释成另外一台计算机存储文本文件的格式(例如,互换WINDOWS和UNIX的行结束符)。
二进制模式
在二进制传输中,保存文件的位序,以便拷贝和原始文件是逐位一一对应的。
更多模式可参考RFC959-DataTransfer。
参考
《TCP/IP详解I》第27章
《计算机网络第7版 谢希仁》6.2