引言
域名保证了在因特网中标识唯一的用户,而我们用户上网需求自然是发送信息以及共享文件,我们使用的很多传输工具,比如微信、QQ、百度等软件,在上传和下载文件时就会有FTP的参与。那么如何为文件提供收发渠道以完成的共享呢?
FTP应用
FTP的文件传输具有灵活性和通用性。FTP可传输任意文件;具备容纳多种文件类型;能够容纳计算机系统存储文件的不同方式;可用容纳在文件表现,类型信息和文件保护模式上的不同等优点。
FTP允许用户对文件进行增删改查发送这几种方式,也可与另外一台主机通信。然而, 用户并不是真正登录到自己想要存取的计算机上面成为该计算机的用户,而是用FTP程序访问远程资源, 实现用户往返传输文件、文件管理以及电子邮件处理等等功能。虽然双方的计算机可能配有不同的操作系统和文件存储方式,但是在FTP面前,这些都不是影响你使用FTP的问题。
上图是抓包软件对FTP相关流量的抓取
FTP原理
如上图,FTP以C/S架构模式工作,它由FTP服务程序、客户端、FTP通信协议三者构成
我们常说下载和上传,因此自然知道其代表的实际意义和操作。下载的专业术语指:从远程主机拷贝文件到自己的计算机上;而上传自然是将文件从自己的计算机拷贝到远程主机上。所以说,理论和实际相结合我们才能更加清晰它是什么?
那么?FTP在这个过程中如何进行运作的呢?
FTP传输
在我们进行文件传输时,首先客户与服务器会建立两条TCP连接。这两条连接分别是:
(1)控制连接(Port 21):主进程中,在客户服务器的整个会话过程中会一直保持
(2)数据连接(Port 22):附属于主进程,它会频繁的消失或出现
注:也正是因为如此FTP端口号为21和22
FTP开始运作时,控制连接的作用让用户与服务器处于长时间不间断的连接状态,此时,数据连接的建立会提供文件的传输,它依赖于控制连接,如果传输完毕那么该连接就会关闭,等有需要文件传输时再次开启。
计算机的FTP的传输界面
FTP命令解释器
FTP通过C/S架构完成传输,但是如果没有FTP软件工具该怎么办呢?设计者很贴心的添加了一个FTP命令解释器,就是为了应对这个情况。用户可以在网络操作系统环境中直接使用FTP命令来传送文件。而且还可以在FTP命令中进行各种指令操作。 其FTP的语法为:
ftp [ -d] [ -g ] [ -i ] [ -n ] [ -v] [ -f ] [ -k realm] [-q[-C]][ HostName [ Port ] ]
语法中个字段意义如下:
-d 将有关 ftp 命令操作的调试信息发送给 syslogd 守护进程。如果指定-d 标志,则必须编辑/etc/syslog.conf 文件并添加下列中的一项:user.debug FileName如果不编辑/etc/syslog.conf 文件,则不会产生消息。变更了/etc/syslog.conf 文件之后,需要运行 refresh -s syslogd 或 kill -1 SyslogdPID 命令,以通知 syslogd 守护进程其配置文件的变更。
-g 禁用文件名中的元字符拓展。元字符是一个或一组代替一个或多个字符的字符。一个例字:元字符“*”用来匹配0个或多个前一字符。
-i 关闭多文件传送中的交互式提示。
-n 防止在起始连接中的自动登录。
-v 显示远程服务器的全部响应,并提供数据传输的统计信息。如果 stdin 不是终端,除非用户调用带有-v 标志的 ftp 命令,或发送 verbose 子命令,否则 ftp 详细方式将禁用。
-f 导致转发凭证。
-k realm 如果远程站的域不同于本地系统的域,系统将允许用户指定远程站的域。因此,域和DCE 单元是同义的。
-q 允许用户指定: send_file 子例程必须用于在网络上发送文件。只有当文件在无保护的情况下以二进制方式发送时此标志才适用。
-C 允许用户指定:通过 send_file 命令发出的文件必须在网络高速缓冲区(NBC)中经过缓存处理。此标志必须在指定了-q 标志的情况下使用。只有当文件在无保护的情况下以二进制方式发送时此标志才适用。
上图为计算机的FTP命令解释器页面
注:以上这些参数,只是说个大概,如果要细致研究,这就是计算机操作系统方面的知识了,后续我在操作系统命令中会再次提到FTP相关信息。而且,FTP这种命令行方式也有点不常用了,现在基本都是用客户端的FTP完成文件传输。
TFTP
TFTP是FTP的一种分类,它全称为简单文件传输协议。TFTP使用UDP作为传输手段,提供非交互式传输服务。介于FTP的TCP稳定传输,TFTP功能单调的多:它仅支持文件传输;不支持交互;没有太多命令集;没有认证机制;不允许用户列出目录内容或者与服务器协商来决定那些可得到的文件名。TFTP协议一般多用于局域网以及远程UNIX计算机中,而常见的FTP协议则多用于互联网中;
TFTP协议的优势
尽管与FTP相比TFTP的功能要弱得多,但是TFTP具有两个优点:
1)TFTP能够用于那些有UDP而无TCP的环境;
2)TFTP代码所占的内存要比FTP小。
尽管这两个优点对于普通计算机来说并不重要,但是对于那些不具备磁盘来存储系统软件的自举硬件设备来说TFTP特别有用。
TFTP协议与FTP协议的相同点
TFTP协议的作用和我们经常使用的FTP大致相同,都是用于文件传输,可以实现网络中两台计算机之间的文件上传与下载。可以将TFTP协议看作是FTP协议的简化版本。
有关FTP和TFTP的就是这些,不过这些内容还没有完。主要是写通信的,应用层涉及更多的是操作系统和命令等内容。我不想在这里提太多,会有相应的章节整理相关命令。