一、FTP的原理
FTP是用于在网络上进行文件传输的一套标准协议,它工作在OSI模型的第七层,TCP模型的第四层,即应用层。FTP使用TCP传输而不是UDP,客户和服务器建立连接前要经过一个“三次握手”的过程,保证客户与服务器之间的连接是可靠的,而且是面向连接的,为数据传输提供可靠保证。
FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而,用户并不真正登录到自己想要存取的计算机上面而成为完全用户,可用FTP程序访问远程资源,实现用户往返传输文件、目录管理以及访问电子邮件等等,即使双方计算机可能配有不同的操作系统和文件存储方式。
FTP的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。它能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长。
================================
FTP协议

1.1、FTP的两种运行模式
在FTP服务中,有主动模式和被动模式两种模式。两种模式都以FTP的服务器端作为参考点。
主动模式:FTP服务器端主动连接客户端(也就是PORT)。
被动模式:客户端主动连接FTP服务器端(也就是PASV)。


————————————————
二、FTP的架构
FTP是基于客户-服务器(C/S)模型而设计的,在客户端与FTP服务器之间建立两个连接。开发任何基于FTP的客户端软件都必须遵循FTP的工作原理,FTP的独特的优势同时也是与其它客户服务器程序最大的不同点就在于它在两台通信的主机之间使用了两条TCP连接,一条是数据连接,用于数据传送;另一条是控制连接,用于传送控制信息(命令和响应),这种将命令和数据分开传送的思想大大提高了FTP的效率,而其它客户服务器应用程序一般只有一条TCP连接。
FTP主要由三部分组成:FTP服务器、FTP客户端以及FTP协议。其中,FTP服务器是用来存储文件的,用户可以使用FTP客户端通过FTP协议与服务器进行文件传输。FTP协议包括两个组成部分:一个是FTP服务器,另一个是FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
————————————————
版权声明:本文为博主原创文章,
原文链接:https://blog.csdn.net/weixin_42175752/article/details/139924959
三、FTP服务器主进程工作步骤:
a.打开熟知端口(21),使客户进程能够连接;
b.等待客户进程发送连接请求;
c.启动从属进程处理客户进程发送的连接请求,从属进程处理完成请求后结束,从属进程在运行期间可能根据需要创建其他一些子进程;
d.回到等待状态,继续接受其他客户发起的请求;
主进程与从属进程的处理是并发的。
FTP使用了2个TCP连接,FTP控制连接在整个会话期间都保持打开,只用来发送连接/传送请求。当客户进程向服务器发送连接请求时,寻找连接服务器进程的熟知端口21,同时还要告诉服务器进程自己的另一个端口号码用于建立数据传送连接。接着,服务器进程用自己传送数据的熟知端口20与客户进程所提供的端口号码建立数据传送连接,FTP使用了2个不同的端口号,所以数据连接和控制连接不会混乱。
四、用户授权
要连上 FTP 服务器(即“登陆”),必须要有该 FTP 服务器授权的账号,也就是说你只有在有了一个用户标识和一个口令后才能登陆FTP服务器,享受FTP服务器提供的服务。
地址格式:
地址格式FTP地址如下:ftp://用户名:密码@FTP服务器IP或域名:FTP命令端口/路径/文件名上面的参数除FTP服务器IP或域名为必要项外,其他都不是必须的。如以下地址都是有效FTP地址:ftp://foolish.6600.orgftp://list:list@foolish.6600.orgftp://list:list@foolish.6600.org:2003ftp://list:list@foolish.6600.org:2003/soft/list.txt
匿名:
互联网中有很大一部分 FTP 服务器被称为“匿名”(Anonymous)FTP 服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。Anonymous(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”登陆FTP服务,就可访问远程主机上公开的文件。许多系统要求用户将Email地址作为口令,以便更好地对访问进行跟综。匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息,数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登录获取所需的信息资料。虽然使用WWW环境已取代匿名FTP成为最主要的信息查询方式,但是匿名FTP仍是 Internet上传输分发软件的一种基本方法。如red hat 、autodesk等公司的匿名站点。
五、相关命令与处理
FTP的命令分为6组:
5.1 接入命令
接入命令使用户能够访问远程系统。

5.2 文件管理命令
文件管理命令使用户能访问到远程计算机的文件系统

5.3 数据格式化命令
数据格式化命令让用户定义数据结构、文件类型以及传输方式。

5.4 端口定义命令
端口定义命令定义客户端的数据连接使用的端口号

5.5 文件传输命令
文件传输命令用于控制传输文件。

5.6 杂项命令
杂项命令用于将用户要求的信息返回客户端。

5.7 命令处理——响应
响应分为两个部分:
3位数字的代码:定义代码
跟随在代码后的文本:定义所需的参数或额外的解释说明
将3位数字记为xyz,下面展示每一个数字的意义。
第一个数字定义命令的状态。该位置上可以使用下列5个数字:
1yz(正面初步回答) 表示动作已经开始。服务器在接受命令之前将发送回答。
2yz(正面完成回答) 表示动作己经完成。服务器将接受命令。
3yz(正面中间回答) 表示命令已经接受,但需要进一步的信息。
4yz(过渡负面完成回答) 表示动作没有发生,但差错是暂时的。同样的命令其后可继续发送。
5yz(永久负面完成回答) 表示命令没有接受,不能再次发送。
第二个数字定义命令的状态。该位置上可以使用下列6个数字:
- x0z(语法)
- x1z(信息)
- x2z(连接)
- x3z(鉴别和账号)
- x4z(未指明)
- x5z(文件系统)
响应简短列表:


六、FTP常见命令详情
1 在window下按window + r可打开DOS命令窗口,然后就可以输入FTP命令了。 2 3 1. 登录FTP服务器 4 方法一:直接输入ftp加ip地址ftp 192.168.10.xxx 5 方法二:直接输入ftp,进入ftp服务后输入open加ip地址open 192.168.10.xxx 6 当连接成功后会让你进行身份验证,在输入密码时屏幕上没有任何显示,不用管,直接输完密码敲回车键即可。 7 ———————————————— 8 2. 查看FTP服务器上的文件 9 (一般情况下用户都会被限制目录的访问权限,只可在当前目录下进行操作) 10 dir:显示服务器目录和文件列表 11 ls:显示服务器简易的文件列表 12 cd:进入服务器指定的目录 13 14 dir命令可以使用通配符“”和“?”,比如,显示当前目录中所有扩展名为jpg的文件,可使用命令 dir .jpg。 15 16 cd命令中必须带目录名。比如 cd main 表示进入当前目录下的main子目录 17 ———————————————— 18 3. 下载文件 19 上传和下载文件时应该使用正确的传输类型,FTP的传输类型分为ASCII码方式和二进制方式两种,对.txt、.htm等文件应采用ASCII码方式传输,对.exe或图片、视频、音频等文件应采用二进制方式传输。在默认情况下,FTP为ASCII码传输方式。 20 type:查看当前的传输方式 21 ascii:设定传输方式为ASCII码方式 22 binary:设定传输方式为二进制方式 23 (以上命令都不带参数) 24 get:下载指定文件get filename [newname](filename为下载的FTP服务器上的文件名,newname为保存在本都计算机上时使用的名字,如果不指定newname,文件将以原名保存。 25 26 get命令下载的文件将保存在本地计算机的工作目录下。该目录是启动FTP时在盘符C:后显示的目录。如果想修改本地计算机的工作目录,可以使用 lcd 命令。比如:lcd d:\ 表示将工作目录设定为D盘的根目录。 27 28 mget:下载多个文件mget filename [filename ....](mget命令支持通配符“”和“?”,比如:mget .mp3 表示下载FTP服务器当前目录下的所有扩展名为mp3的文件。) 29 ———————————————— 30 4. 上传文件 31 put:上传指定文件put filename [newname] 32 send:上传指定文件send filename [newname] 33 (filename为上传的本地文件名,newname为上传至FTP服务器上时使用的名字,如果不指定newname,文件将以原名上传。) 34 35 上传文件前,应该根据文件的类型设置传输方式,本机的工作目录也应该设置为上传文件所在的目录。 36 37 这里的send和put方法用法都基本相同,但是上传速度send却要比put快很多,有兴趣的人可以去研究下。 38 ———————————————— 39 5. 结束并退出FTP 40 close:结束与服务器的FTP会话 41 quit:结束与服务器的FTP会话并退出FTP环境 /bey---也是退出ftp 42 6. 其它FTP命令 43 pwd:查看FTP服务器上的当前工作目录 44 rename filename newfilename:重命名FTP服务器上的文件 45 deletefilename:删除FTP服务器上的文件 46 help[cmd]:显示FTP命令的帮助信息,cmd是命令名,如果不带参数,则显示所有FTP命令 47 ———————————————— 48 49
==================================================
补充
1.执行本地shell命令,如:!dir(显示本机当亲目录内容),如果不加!如:dir(显示服务器当前目录内容)
2、dir
注意:你成功登陆后就可以用dir查看命令查看FTP服务器中的文件及目录,用ls命令只可以查看文件。
3、mkdir qint
注意:在FTP服务器上根目录下建立qint目录
4、cd qint
注意:进入目录qint,用“cd 你的目录名”可以进入当前目录的下一级目录,这跟DOS一样。
5、bin
注意:采用二进制传输。如果你要上传下载,这一步很重要,不先执行这个命令,上传下载会很慢。大多数系统(包括UNIX系统)只有两种模式:文本模式和二进制模式。文本传输器使用ASCII字符,并由回车键和换行符分开,而二进制不用转换或格式化就可传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式。一般来说,我们最好都用binary方式,这样可以保证不出错。
6、lcd d:\qint
注意:定位本地默认文件夹,在前面已事先在D:盘创建
浙公网安备 33010602011771号