FTP服务原理及使用

一、配置FTP服务

配置FTP服务,内容不难,本地虚拟机上自带FTP服务程序,自己下载即可。

二、理解FTP的主动模式和被动模式原理

1 主动模式

客户端先开启一个大于1024的随机端口,用来与服务器的21号端口建立控制连接;当用户需要传输数据时,在控制通道中通过使用PORT命令向服务器发送本地IP地址以及端口号,服务器会主动用20号端口去连接客户端发送过来的指定端口,实现数据传输,然后再这条连接上面进行文件的上传或下载。

FTP主动传输方式具体步骤如下:

  1. 客户端与服务器的21号端口建立TCP连接,即控制连接

  2. 当用户需要获取目录列表或传输文件的时候,客户端通过使用PORT命令向服务器发送本地IP之地以及端口号,期望服务器与该端口建立数据连接。

  3. 服务器(20号端口)与客户端该端口建立第二条TCP连接,即数据连接

  4. 客户端与服务器通过该数据连接进行文件的发送和接收。

在主动模式下,ftp请求是由客户端TCP连接的;传输数据的时候,TCP连接却是由服务端发起的。主动模式只能用于内网,客户端服务端互相访问;如果不在同一网络中,如客户端是本地虚拟机,服务端是云服务器,本地虚拟机可以访问云服务器21端口,但是云服务器访问不了本地虚拟机(由于防火墙或者是网络路由原因导致无法访问)。

2 被动模式

建立控制连接的过程与主动方式基本一致(向服务器21号端口建立控制连接);但是在建立数据连接的过程中,客户端通过控制连接发送PASV命令,随后服务器开启一个大于1024的随机端口,将IP地址和此端口号发送给客户端,然后客户端去连接服务器的该端口,从而建立数据传输链路。

FTP被动传输方式具体步骤如下:

  1. 客户端与服务器的21号端口建立TCP连接,即控制连接

  2. 当用户需要获取目录列表或传输文件的时候,客户端通过控制连接向服务器发送PASV命令通知服务器采用被动传输方式。服务器收到PASC命令后随机开启一个大于1024的端口,然后将该端口号和IP地址通过控制连接发给客户端。

  3. 客户端与服务器该端口建立第二条TCP连接,即数据连接

  4. 客户端与服务器通过该数据连接进行文件的发送和接收。

在被动模式下,不管是执行ftp命令,还是传输数据,都是由客户端向服务端发起TCP连接的。

3 从主动模式到被动模式

在很久以前每台电脑都有一个ip地址,ftp只有主动模式,后来出现了共享上网技术,所以也就有了下面的问题。

共享上网就是多台电脑共享一个公网ip去使用internet,例如某个局域网出口的公网ip是210.33.25.108,当内网用户(192.168.1.100)访问外网的ftp服务器时,如果采用主动模式,192.168.1.100告诉了ftp服务器我需要某个文件和我打开了20端口之后,由于共享上网的原因,192.168.1.100在出网关的时候ip已经被转换成了210.33.25.108,所以ftp服务器端收到的消息是210.33.25.108需要某个文件并打开了20端口,ftp服务器就会尝试连接210.33.25.108的20端口,这样当然不会成功。

在主动模式中,ftp的两个端口是相对固定的,如果命令端口是n的话,那数据端口就是n-1,也就是说默认情况下,命令端口是21,数据端口就是20,如果你把ftp服务的端口改成了521,那么数据端口就是520,这样配置防火墙很方便,只需要开通两个端口就可以了。但是,在共享上网的环境中无法使用主动模式。

在被动模式中,默认情况下命令端口是21,数据端口是随机分配的。但是,被动模式中数据端口的范围可以配置,防火墙也可以配置端口范围。

注意:FTP底层是TCP协议,SFTP底层是SSH协议。

三、手工执行FTP的一些命令(客户端的使用)

1 登录服务器:ftp 192.168.192.136:21

2 切换工作目录

  • 查看服务器工作目录:pwd

  • 切换服务器工作目录:cd 目录名

  • 切换本地工作目录:lcd 目录名

3 查看服务器上的目录和文件

  • 列出目录或文件名的详细信息

    • ls 目录或文件名

    • dir 目录或文件名

  • 仅列出目录和文件名

🔴nlist 目录或文件名 [本地文件名]

1)列出/project/public目录下的匹配*.h的文件名信息。

nlist /project/public/*.h

2)列出/freecplus目录下的匹配*.h的文件名信息,结果输出到本地的/tmp/public.list文件中。(一般程序中用)

nlist /project/public/*.h /tmp/public.list

4 下载/上传文件

🔴1、文件传输的模式

ftp传输文件的模式分二进制和ASCII码两种模式,二进制模式可以传输任何文件,包括压缩包、可执行程序、图片、视频、音频等,而ASCII模式只能传输.txt、.htm等ascii码文件(文本文件)。在实际开发中,不管什么文件,都用二进制方式传输。

1)查看当前的传输模式。

type

2)设定传输模式为二进制。

bin

3)设定传输模式为ASCII。

ascii

🔴2、下载文件

1下载单个文件

get 服务端文件名 [本地文件名]

2下载多个文件

mget 服务端文件1 服务端文件2 服务端文件3 …… 服务端文件n

  • 下载文件时,会一一提示,如果想关闭提示信息,先输入prompt命令。

prompt

🔴3、上传文件

1上传单个文件

put本地文件名 [服务端文件名]

2上传多个文件

mput 本地文件1 本地文件2 本地文件3 …… 本地文件n

  • 上传文件时,会一一提示,如果想关闭都显示信息,先输入prompt命令。

prompt

5 其它ftp命令

1)重命名ftp服务端的文件

rename 旧文件名 新文件名

2删除ftp服务端上单个文件

delete 文件名

3)删除ftp服务端的多个文件。

mdelete 文件名1 文件名2 文件名3 …… 文件名n

4在ftp服务端上创建目录。

mkdir pathname

5)删除ftp服务端上的目录。

rmdir pathname

6)切换传输模式。

passive

7)显示帮助信息。

help [命令名]

显示ftp命令的帮助信息,如果不输入命令名,则显示全ftp命令的帮助信息。

8)退出ftp。

bye

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值