tftp的特点:

1)基于UDP

2)适合小文件传输

3)基本的文件获取和写入功能


搭建服务器的步骤

  1. 安装软件 xinetd,tftp ,tftpd

    1)xinetd 服务器守护进程( the extended  Internet services daemon)。inetd的升级版

    2)tftp 简单文件传输协议(Trivial File Transfer Protocol)。ftp的简化版

    3)tftpd tftp服务器(DARPA Trivial File Transfer Protocol server)。DARPA: 美国国防高级研究计划局

    语法:apt-get install

  2. 配置服务器

    1)在路径:/etc/xinetd.d/下用vi新建一个名为“tftp”的文件

    2)“tftp”文件内输入以下内容,并保存退出(需要root权限)

    学习手记-基于iTOP4412 tftp服务器的搭建与测试_第1张图片

    * 注意 格式严格如图,“=”用“tab”键对齐。

  3. 在路径:/var/下新建目录“tftpboot”,赋最高权限777。该目录即是服务器的主目录【还是那句话:一切皆文件!服务器也是文件哦。】

    注:目录名及路径取决于配置文件中的参数“server_args”

    image.png

  4. 重启tftp服务器

    /etc/init.d/xinetd restart

  5. 搭建完成。



测试服务器的步骤:


  1. 在tftp服务器目录(/var/tftpboot)下,新建一个文件,并输入一些便于识别的内容。比如:test

  2. 另开一个终端(ctrl+alt+t),定向访问服务器。

    输入:tftp 127.0.0.1    

    * 为什么是127.0.0.1,而不是其它IP呢?试着在终端里输入ifconfig查看网络信息,除了网卡eth0之外,还有一个lo的虚拟网卡,类型是local loopback(本地环回接口(或地址)),地址:127.0.0.1 。至于什么是本地环回地址,又是一堆乱七八糟的东西,详见百度。

    学习手记-基于iTOP4412 tftp服务器的搭建与测试_第2张图片

  3. 向服务器请求获得刚才新建的文件test(需在tftp提示符下操作)

    get test

    【如果是以普通用户登录,无法在较上级的目录下使用get命令,会提示权限不够。所以,测试get的路径是在/home/topeet下完成的。topeet即用户名】

  4. 成功后,输入q退出tftp控制台。

  5. 在当前目录下ls一下,并用vim打开该test文件,确认是不是用于测试的文件。



在开发板上测试服务器的步骤


  1. 设置虚拟机相关网络配置,使开发板的IP地址与虚拟机的IP地址在同一网段并能ping通。(我在这里将虚拟机网络设置为桥接)


    *开发板上的网络适配器文件位于/etc/eth0-setting,通过vi打开并修改IP地址。

  2. 在开发板超级终端上输入“tftp -g -l testlocal -r test 192.168.15.134”

    【命令含义如下:

    tftp: 传输命令

    -g: 获取 get(写入 put)

    -l: 本地 local

    testlocal:存放在本地的文件名

    -r:远端 remote

    test:远端服务器目录(/var/tftpboot)上的文件名

    192.168.15.134:服务器IP地址】

    注意:-g -l的输入次序有要求,换成-l -g时终端会提示语法错误。

  3. 完成后,即在当前目录下生成文件testlocal。实际操作时,发现主机文件权限在传输过程中发生了改变:

    下图是主机上文件exectest的权限:-rwxr-xr-x

    学习手记-基于iTOP4412 tftp服务器的搭建与测试_第3张图片

    但是到了终端,该文件的权限就成了:-rw-r--r--

    学习手记-基于iTOP4412 tftp服务器的搭建与测试_第4张图片

    对比可以发现,所有级别的操作权限被复位了,也就是不可操作。这是出于系统安全的一种设计吗?