TFTP是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。用tftp服务实现服务器和实验板(客户端)之间小文件传输是非常方便的。tftp使用的是cs模式,客户端上传和下载不需要账户,和ftp相比,实现起来比较简单。
要开启tftp服务必须要正确配置,网上给的配置方法乱七八糟的,我自己试了很多种都没有成功。下面我写出我自己的配置方法,如果能按照我说的配置,一定可以成功的。
linux版本:ubuntu10.10
1.安装相关软件包:Ubuntu tftp(服务端),tftp(客户端),xinetd
开启终端(terminal),输入命令:
sudo apt-get install tftpd tftp xinetd
2、建立配置文件
在/etc/xinetd.d/下新建一个配置文件tftp
sudo vi /etc/xinetd.d/tftp
在里面输入
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/tftpboot /*这个是设置文件目录,我把它设置在/home/tftpboot/*/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
保存退出。关键就在此步骤,等号两边都加空格,有时候一个空格不注意就导致配置失败。细心多检查几遍。
3.在home路径下新建一个tftpboot 文件夹(这个就是配置文件里设置的服务器目录),并设置权限
sudo mkdir /home/tftpboot sudo chmod 777 tftpboot -R
4.重启服务
sudo /etc/init.d/xinted restart
至此,tftp服务已经安装成功
5.测试一下服务
在/home/tftpboot下新建一个测试文件
sudo vim /home/tftpboot/test.txt
在里面随便输入点东西,保存退出,注意一定要输入内容,不能空着,不然会失败。
然后转到其他目录,不要在tftpboot目录下操作。
sudo tftp 127.0.0.1 (tftp后面加目标主机的IP,在本地测试我就用127.0.0.1)
测试get命令下载文件:
get test.txt
成功下载文件,test.txt文件被下载到当前目录
测试put命令上传文件:
(1)在当前目录新建一个文件 hello.c,并输入内容(注意不要空着)
sudo vim hello.c
(2)在/home/tftpboot/目录下也要建一个同名文件hello.c,权限设置 777
sudo vim /home/tftpboot/hello.c sudo chmod 777 /home/tftpboot/hello.c
这一步是必须的,tftp上传文件可以理解为是覆盖文件操作,所以tftpboot目录下必须要有一个同名文件,而且权限开放。
put hello.c
下载和上传测试都成功了,q 退出 tftp模式。
tftp错误代码分析:
1. file not found 如果get一个文件时这样报错,可能是/tftpboot下没有此文件.还有就是/etc/xinetd.d/tftp文件配置错误。
2.Access violation 如果put文件时这样报错,可能是/tftpboot/文件下没有同名文件,不能进行覆盖操作。或者有同名文件,但是权限未开。
3.transfer timed out 如果超时报错,就是/etc/xinetd.d/tftp文件配置错误。
4.permission denied 这是无权操作, 使用sudo tftp 127.0.0.1
技术帖子了,转载去空间保存。
[回复]