TFTP服务器简介
TFTP是TCP/IP协议族中被用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为69。
TFTP文件传输的特点
- TFTP使用客户服务器方式和使用UDP数据报,因此TFTP需要有自己的差错改正措施。
- TFTP支持小文件传输。
- TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
TFTP服务器的适用场景
- 需要频繁修改内容,比如在开发板上要实现某个共功能,需要从服务器下载文件,但需要对这个功能进行不断调试,需要不断修改服务器中的代码,且开发板需要不断从服务器中下载这些文件,这个时候TFTP文件传输就会比较方便。
TFTP环境搭建
-
在线安装TFTP服务器和客户端
ping www.baidu.com //检测网络是否有问题
sudo apt-get install tftpd-hpa tftp-hpa //安装服务器和客户端
-
修改配置文件
首先输入命令打开配置文件
sudo vi /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
设定TFTP根目录:利用Ctrl+Alt+T重新打开一个终端,并且cd到一个你想存放服务器文件的文件夹。我这里是在我的共享文件夹share下面新建了一个tftpboot文件夹:
cd /mnt/hgfs/share/study
mkdir tftpboot
修改根目录tftpboot/的权限:
chmod a+w tftpboot
接着回到刚才打开的配置文件,修改TFTP的根目录:
TFTP_DIRECTORY="/mnt/hgfs/share/study/tftpboot" //修改TFTP根目录
修改TFTP网关:0.0.0.0表示任意的IP均可下载服务器文件,69为TFTP服务器端口。
TFTP_ADDRESS="0.0.0.0:69" //0.0.0.0表示任意的IP均可下载服务器文件,69为TFTP服务器端口
修改TFTP启动参数:
TFTP_OPTIONS="-c -l -s" //修改TFTP启动参数
修改TFTP启动参数:
-l:以standalone/listen模式启动TFTP服务,而不是从xinetd启动;
-c:可创建新文件,默认情况下,TFTP只允许覆盖原有文件,不能创建新文件;
-s:改变TFTP启动的根目录,不用手动指定目录,默认使用配置文件中的目录。
-
重启TFTP服务器
sudo service tftpd-hpa restart
-
在TFTP根目录下创建一个新文件file
touch file
-
从TFTP根目录下载文件file,以测试TFTP服务器是否成功
~$ tftp localhost
tftp> get file
tftp> q
从TFTP服务下载file文件,并输入q推出,再输入ls,查看文件列表:
如果能看到file文件,则说明TFTP环境搭建成功。
-
卸载TFTP服务的命令
sudo apt-get remove --purge tftpd-hpa tftp-hpa
如遇到TFTP服务搭建不成功,可以执行上述命令卸载(包括配置文件),再执行以下命令重新搭建:
sudo apt-get install tftpd-hpa tftp-hpa
sudo service tftpd-hpa restart
常见错误
-
错误现象:Transfer timed out
可能的原因是tftpd服务没有启动或者网络出现文件,解决办法就是检查网络或者启动服务。
-
错误现象:Error code 2: Only absolute filenames allowed
可能的原因是/etc/default/tftpd-hpa中配置出错,解决办法就是重新配置。
-
错误现象:Error code 1:File not found
可能的原因有三个:
一是文件确实不存在;
二是修改配置文件后,没有重新启动,这时执行下面代码重新启动即可:
sudo service tftpd-hpa restart
三是TFTP启动参数中没有指定-c选项,允许上传文件,上传的时候一定要确保文件先存在于上传目录下。