一、tftp介绍

  TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69.

二、目的

  TFTP是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中有三种模式:

  • netascii,这是8位的ASCII码形式,
  • 另一种是octet,这是8位源数据类型;
  • 最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。

三、概况

  任何传输起自一个读取或写入文件的请求,这个请求也是连接请求。如果服务器批准此请求,则服务器打开连接,数据以定长512字节传输。每个数据包包括一块数据,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。如果一个数据包的大小小于512字节,则表示传输结束。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。通信的双方都是数据的发出者与接收者,一方传输数据接收应答,另一方发出应答接收数据。大部分的错误会导致连接中断,错误由一个错误的数据包引起。这个包不会被确认,也不会被重新发送,因此另一方无法接收到。如果错误包丢失,则使用超时机制。错误主要是由下面三种情况引起的:不能满足请求,收到的数据包内容错误,而这种错误不能由延时或重发解释,对需要资源的访问丢失(如硬盘满)。TFTP只在一种情况下不中断连接,这种情况是源端口不正确,在这种情况下,指示错误的包会被发送到源机。这个协议限制很多,这些都是为了实现起来比较方便而进行的。

四、应用

在开发板上调试代码,使用的是交叉编译环境,即在电脑上编译,在开发板上运行,在前面电脑上编译后的可执行,通过存储介质(U盘、TF卡)拷贝,然后挂载到开发板上,再进行运行。为减少中间拷贝、挂载操作,现提供一种更为便捷的方式,即tftp功能,此功能将电脑设置为tftp服务器,开发板通过网络直接在电脑上获取文件。

  1. tftp服务器的搭建和测试
  • 搭建服务器
– 安装xinetd,sudo apt-get install xinetd
– 安装tftp 和tftpd,sudo apt-get install tftp tftpd
– 配置/etc/xinetd.d/tftp文件(一定要对齐,严格按照以下格式输入!) service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
} 注意:server_args 配置了路径,是tftp获取文件的路径,如果客户端想要获取服务器的文件,只会在这里面找,因此需要将文件放到该目录下。
  • tftp文件中的/var/tftpboot是服务器的目录
– 新建tftp服务器目录mkdir /var/tftpboot
– 修改权限为777 : chmod 777 /var/tftpboot
– 重启xinetd服务sudo /etc/init.d/xinetd restart
  • 本机测试
– 在/var/tftpboot 下面建立一个文件test,输入任意内容
– 启动另一个终端
– 输入命令tftp 127.0.0.1
– 输入get test
– 输入q可以退出
– 退出后,使用ls命令可以发现当前目录下有test文件,如果这个文件和服务器中的test文件内容一模一样,表明服务器搭建成功
  1. 同一网段的概念

“同一网段” – IP和子网掩码做与运算得到网络标识,如果两个网络的网络标示一样,则在同一网段.

网线接到交换机
– 一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:
给内部网络或网络服务供应商自动分配IP地址;
演示计算网络标识,确认IP在同一网段.

  1. 开发板与tftp服务器的文件传输
需要具备的3个条件:
1、开发板与tftp服务器在同一网段,且没有IP冲突。
2、文件放在指定的目录下,具体的路径在配置服务器时已经写入。
3、客户端想要获取文件,需要知道文件名。 具备以上条件,通过 tftp 命令进行操作:
ftfp命令介绍:
在迅为4412提供的最小系统里面输入tftp有相应的介绍:
[root@iTOP-4412]# tftp
BusyBox v1.21.1 (2014-10-17 01:48:59 PDT) multi-call binary. Usage: tftp [OPTIONS] HOST [PORT] Transfer a file from/to tftp server -l FILE Local FILE
-r FILE Remote FILE
-g Get file
-p Put file
-b SIZE Transfer blocks of SIZE octets 例:在tftp服务器的 /var/tftpboot 目录下有 test.txt文件,内容为 hello world! 在开发板上使用:
1、不更名获取
tftp -g -l/-r test 192.168.1.106
解释:
-g :下载
-l/-r:在不更改获取文件名的情况下,两者都可以
test:获取的文件名
192.168.1.106:tftp服务器的IP
获取的文件存放在当前路径下。 [root@iTOP-4412]# tftp -g -l test 192.168.1.106
[ 835.761330] [dm96-TxRound].2 for LEN_ODD tail_room +1, rslt add 1
[root@iTOP-4412]# ls
test
[root@iTOP-4412]# cat test
hello world! 2、更名获取
tftp -g -l hello -r test 192.168.1.106
解释:
-g :下载
-l :存放到本地的文件
hello:存放到本地的文件名
-r :获取的文件
test :获取的文件名
192.168.1.106 :tftp服务器的IP [root@iTOP-4412]# tftp -g -l hello -r test 192.168.1.106
[ 1190.843793] [dm96-TxRound].3 for LEN_ODD tail_room +1, rslt add 1
[root@iTOP-4412]# ls
hello
[root@iTOP-4412]# cat hello
hello world!

tftp服务器的搭建和使用的更多相关文章

  1. 自学linux——19.TFTP服务器的搭建

    TFTP服务器的搭建 1.TFTP的认识 TFTP(Trivial File Transfer Protocol)简单文件传输协议,是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议,不需 ...

  2. Ubuntu下tftp服务器的搭建

    参考博客:http://blog.chinaunix.net/uid-26495963-id-3206829.html 1. 安装 $ apt-get install tftp-hpa tftpd-h ...

  3. tftp服务器的搭建

    基于 红帽6的tftp搭建,当然其他系统搭建方法也大致一样 #mount /dev/cdrom /mnt/           挂载安装光盘  不同光盘挂载用 fdisk -l  查看光盘 #rpm ...

  4. ubuntu 14.04LTS 环境下搭建tftp服务器

    花费我一整天的时间在 ubuntu 14.04LTS 环境下搭建tftp服务器,网上好多资料参差不齐,简单来说,TFTP(Trivial File Transfer Protocol),是一个基于UD ...

  5. 在Ubuntu12.0.4下搭建TFTP服务器

    一.安装相关安装包 tftpd(服务端),tftp(客户端) sudo apt-get install tftp-hpa tftpd-hpa 安装xinetd sudo apt-get install ...

  6. Ubuntu下搭建tftp服务器最简单方法

    今天开始调试ARM的板子,要通过tftp下载到板子上,所以又要配置tftp服务器,真的烦死了… (本人酷爱装系统,所以经常都要搞配置) 因为之前已经在Ubuntu下搭建过很多次tftp服务器了,但是一 ...

  7. NFS的搭建(sudo apt-get install nfs-kernel-server),TFTP服务器(sudo apt-get install tftpd-hpa tftp-hpa)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Osean_li/article/details/53240705 ***************** ...

  8. 如何在Ubuntu下搭建tftp服务器

    远程桌面连接工具   今天开始调试arm的板子,要通过tftp下载到板子上,所以又要配置tftp服务器,真的烦死了… (本人酷爱装系统,所以经常都要搞配置) 因为之前已经在Ubuntu下搭建过很多次t ...

  9. 4412 搭建tftp服务器

    搭建服务器 --安装xinetd,sudo apt-get install xinetd --安装tftp和tftpd,sudo apt-get install tftp tftpd --配置/etc ...

随机推荐

  1. ansiblle---roles

    使用ansible中的roles来管理主机. 剧本中的roles你现在已经学过 tasks 和 handlers,那怎样组织 playbook 才是最好的方式呢?简单的回答就是:使用 roles ! ...

  2. close connection error java.sql.SQLRecoverableException: IO Error: Broken pipe

    java.sql.SQLRecoverableException: IO Error: Broken pipe Table of Contents 1. 错误信息 2. 分析 2.1. 连接池 2.2 ...

  3. OpenCV、OpenCL、OpenGL、OpenMP的区别

    OpenCV        OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个开源发行的跨平台计算机视觉库,可以运行在Linux.Wind ...

  4. 02 MySQL之数据表的基本操作

    01-创建数据表 # 切换数据库 use test_db; # 创建数据表 语法规则如下: create table 表名 ( 字段名1, 数据类型 [列级别约束条件] [默认值], 字段名2, 数据 ...

  5. tensorflow安装过程-(windows环境下)---详解

    一, 前言:本次安装tensorflow是基于Python的,安装Python的过程不做说明(既然决定按,Python肯定要先了解啊):本次教程是windows下Anaconda安装Tensorflo ...

  6. [转]html里a标签中href调用js的几种方法

    文章转自:https://blog.csdn.net/best_luxi/article/details/45062301 我们常用的在a标签中有点击事件: 1. a href=”javascript ...

  7. VS2012编译php扩展

    注意:用VS2015来做会比较好! 开发前准备工作:cygwinvisual studio 2012php编译后的程序      使用的是 xampp集成安装包,所以编译后的程序路径为D:\xampp ...

  8. Docker save and load镜像保存

    持久化docker的镜像或容器的方法 Docker的镜像和容器可以有两种方式来导出 docker save #ID or #Name docker export #ID or #Name docker ...

  9. flex 遇上white-space:nowrap的2种解决方法

    需求:使用flex布局,超出部分想使用点点点显示 一.方法1使用min-width:0 效果: HTML代码如下: <div class="team-body"> &l ...

  10. Docker踩坑小记

    Docker是一个开放平台用于快速开发.分发和部署应用程序.   Docker是一种容器管理技术.   解决头疼问题原则:回归最简单的方式来.确保最初级的方案没有错误. 安装 docker安装很简单, ...