Linux操作系统下进行文件传输有多种方式,像scp、rcp、wget以及rsync等,但是这些文件传输方式都是基于Linux平台的,而做嵌入式系统开发,难免要跨平台操作文件,因此需要借助和平台无关的文件传输协议,那就是FTP。
FTP(File Transfer Protocol,文件传输协议)属于应用层协议,处于OSI模型的最顶层,是基于TCP/IP的应用层协议。因此FTP属于可靠性连接协议,FTP开启的过程,就是套接字(Socket)建立过程,因此也经历了三次握手信号才建立起来。
和其他应用层协议不同的是,FTP会使用传输层的两个端口号,并且做了区分,21端口号是命令端口,20端口号表示数据传输端口。21端口控制Socket用来传送命令,20端口用于传送数据Socket。每一个FTP命令发送之后,FTP服务器都会返回一个字符串,其中包括一个响应代码和一些说明信息。其中的返回码主要用于判断命令是否被成功执行了。对于有数据传输的操作,主要是显示目录列表,而上传和下载文件,需要依靠另一个Socket来完成。
FTP又分主动模式和被动模式。主动模式:服务端通过指定的数据传输端口(默认20),主动连接客户端提交的端口,向客户端发送数据。被动模式:服务端开启数据传输端口的监听,被动等待客户端的连接,然后向客户端发送数据。这里主动和被动是相对于FTP服务器而言的,如果服务端主动连接客户端就是主动模式,服务端被动等待客户端连接(客户端主动连接服务端)就是被动模式。
FTP的优势在于能够跨平台传输文件。用户在Windows平台完成交叉编译后的文件,如何传输给Linux系统运行呢?又或者用户在Linux系统下编辑好的文档怎么传输到Win-dows平台?除了使用USB设备或者借助工具外,可以通过FTP跨平台文件传输。
为了方便读者快速使用FTP服务进行跨平台的文件互传,本小节将介绍虚拟机Linux系统启用FTP服务的过程,具体操作步骤如下。
Step 1 在启用虚拟机里的Linux系统FTP服务时,要确保物理机和虚拟机里的系统能够ping通,如图2-27和图2-28所示。
图2-27 虚拟机ping通物理机
图2-28 物理机ping通虚拟机
物理机和虚拟机里的系统能ping通的实现前提是物理机和虚拟机都在同一个网段内,上一页的操作并没有使用同一网段内的IP地址也能相互通信的原因在于物理机使用无线局域网共享模式,且虚拟机在配置网络时,选择NAT方式连接,这样虚拟机就虚拟出了一台交换机,物理机的共享网络则连接在这台虚拟交互机上,因此物理机可以和虚拟机进行网络通信。
Step 2 安装FTP服务器,如图2-29所示。
Step 3 修改FTP服务器的配置参数,输入sudo vi /etc/vsftpd.conf,进入图2-30的界面。
图2-29 安装FTP服务器
图2-30 FTP参数设置
Step 4 重启FTP服务器,如图2-31所示。
图2-31 重启FTP服务器
Step 5 FTP服务器在虚拟机里搭建起来了,下面我们跨平台访问FTP服务器,如图2-32和图2-33所示。
图2-32 Windows平台下访问FTP服务器
图2-33 访问FTP服务器成功
Step 6 成功访问FTP后,就可以跨平台进行文件操作了,如图2-34所示。
图2-34 文件的跨平台操作