目录
- 基本知识
- 搭建
- 命令参数分析
基本知识
TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于UDP 协议实现的用于在客户机和服务器之间进行简单文件传输的协议。
特点:
- 适合于开销不大、不复杂的应用场合
- 专门为小文件传输而设计
- 要么从服务器上获取文件,要么向服务器写入文件
- 不能列出目录,也不能进行认证。即事先你知道服务器里有什么文件。
- 端口号为69,netstat -anp | grep xinetd 或lsof -i:69
搭建
由于讯为老师这里讲的很清晰了,自己简要列下提纲:
过程
- 安装xinetd,sudo apt-get install xinetd。如果你是root,请忽略sudo
- 安装tftp 和tftpd,sudo apt-get install tftp tftpd
- 配置/etc/xinetd.d/tftp文件
新建vim /etc/xinetd.d/tftp, 之后在里面复制如下内容(注意下面的格式哦,要一致)
service tftp
{
socket_type = dgram #数据报
protocol = udp #UDP协议
wait = yes #需要等待
user = root #用户root
server = /usr/sbin/in.tftpd
server_args = -s /var/tftpboot/ #服务器文件夹
disable = no
per_source= 11
cps = 100 2
flags = IPv4
}
- 新建文件夹mkdir /var/tftpboot
- 并修改权限,不如777 chmod 777 /var/tftpboot
- 重启xinetd服务 sudo /etc/init.d/xinetd restart
注:
关闭xinetd服务 sudo /etc/init.d/xinetd stop
开启xinetd服务 sudo /etc/init.d/xinetd start
命令参数分析
测试分两种方式:
(1)在本机另一个终端下载
(2)在开发板中下载
(1)在本机另一个终端下载
过程
(1)新打开一个终端ctrl+alt+t
(2)输入命令连接服务器-----tftp 127.0.0.1
注:为什么是127.0.0.1呢?
简要概述:
- 127.0.0.1真正的名称是环回地址(Loopback Address)。顾名思义,数据报自己发给自己,路由不会转发。。
- 所有网络请求都包含源IP和目标地址IP,在将请求数据发送到网络上之前都会对数据包进行检查,如果发现目的地址包含127.0.0.1,就会直接过滤掉该数据包,并将请求数据重新路由到源IP。这样能保证访问127.0.0.1的请求不会发到网络上。
- IPv4保留127.0.0.0整个网段(127.0.0.0-127.0.0.255)的地址用于环回测试,127.0.0.1只是其中一个哦。
- 最后,127.0.0.1与localhost,绝大部分情况下都是通用的
区别:
localhost分别对应本机的IPv4(127.0.0.1)和IPv6地址(::1),这个文件是可以修改的。
查看本机名 echo $HOSTNAME
ping 127.0.0.1 经常检查网卡是否好的哦,请看:
最后,会发现127.0.0.0-127.0.0.255都可以。127.0.0.0会出现Permission denied–知道了再回来补上。
具体参考下:
https://baijiahao.baidu.com/s?id=1611568260130395973&wfr=spider&for=pc
(3)tftp参数含义
如
get filename 从服务器下载文件(单个文件,不要是文件夹,否则是空的)
put filename 上传文件到服务器
注意:
- 上传的文件在服务器已存在,会替换之前的。若在服务器中不存在,要报错Error code 2: Access violation
- 文件权限也要改大些。
q 退出
注意:
你实在要下载(上传)文件夹,把文件夹打包成压缩包。里面如果有一些符号链接建议后缀名是.tar.bz2,这样会偏离tftp本来的设计的意义。。。
(2)在开发板中下载
开发板与电脑接同一路由器
过程
- 开发板与ubuntu处于同一网段(IP和子网掩码做与运算得到网络标识,如果两个网络的网络标示一样,则在同一网段)
- 相互ping通
- 客户端下载测试 tftp -g -l test -r test +IP地址
命令含义是:
-g:get下载 + 客户端(-l)+ 名字(可以不同)+ 服务器(-r)+服务器的文件名字 + 服务器IP地址 - 客户端上传tftp -p -r -l +IP地址
注:
上传都必须服务器中已存在,且权限要大,不然要报错。
最后,开发板中上、下传命令(包括改或不改名字)