第38章      TFTP简单文件传输基础知识

本章节为大家讲解TFTP(Trivial File Transfer Protocol,简单文件传输协议)的基础知识,方便后面章节的实战操作。

(本章的知识点主要整理自网络)

38.1  初学者重要提示

38.2  TFTP基础知识参考资料

38.3  TFTP基础知识点

38.4  总结

38.1  初学者重要提示

  • TFTP简单文件传输协议在实际项目中有比较重要的实用价值,需要初学者对TFTP的基础知识也有个认识。

38.2  TFTP基础知识参考资料

大家可以从以下地址获得TFTP基础知识参考资料:

  • wiki百科中文版TFTP:地址链接(这个是超链接)
  • wiki百科英文版TFTP:地址链接(这个是超链接)
  • 百度百科TFTP:地址链接(这个是超链接)

对于初学者来说,学习上面三个参考资料就够了。如果大家有网络方面的书籍,比如《TCP/IP详解》,也可以直接看书籍中这方面的内容。

38.3  TFTP基础知识点

(这里的知识点整理自上面的参考资料地址)

教程这里也对TFTP的基础知识做个介绍,方便大家先有个大概的认识。

38.3.1 TFTP简要说明

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

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

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

38.3.2 TFTP通信机制简介

TFTP通信由一个读取或写入文件的请求发起,这个请求也是连接请求。如果服务器批准此请求,则服务器打开连接,数据以定长512字节传输。每个数据包包括一块数据,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。如果一个数据包的大小小于512字节,则表示传输结束。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。通信的双方都是数据的发出者与接收者,一方传输数据接收应答,另一方发出应答接收数据。大部分的错误会导致连接中断,错误由一个错误的数据包引起。这个包不会被确认,也不会被重新发送,因此另一方无法接收到。如果错误包丢失,则使用超时机制。

错误主要是由下面三种情况引起的:

  • 不能满足请求。
  • 收到的数据包内容错误,而这种错误不能由延时或重发解决。
  • 对需要资源的访问丢失(如硬盘满)。

TFTP只在一种情况下不中断连接,这种情况是源端口不正确,在这种情况下,指示错误的包会被发送到源机。这个协议限制很多,这些都是为了实现起来方便而进行的。

38.3.3 TFTP特点

因为TFTP使用UDP,而UDP使用IP,IP可以还使用其它本地通信方法。因此一个TFTP包中会有以下几段:本地媒介头,IP头,数据报头,TFTP头,剩下的就是TFTP数据了。TFTP在IP头中不指定任何数据,但是它使用UDP中的源和目标端口以及包长度域。由TFTP使用的包标记(TID)在这里被用做端口,因此TID必须介于0到65535之间。TFTP头中包括两个字节的操作码,这个码指出了包的类型,大体上的TFTP包格式如下:

TFTP的局限:

  • TFTP不具备FTP的许多功能,它只能从文件服务器上获得或写入文件,没有列出目录的功能,也不能对用户进行身份鉴别,它传输8位数据。
  • 因为小型文件传输协议使用UDP协议,就必须自己支持传输和会话的控制。
  • 由于小型文件传输协议缺少安全性,在开放式因特网上传输非常危险,所以一般仅用于私人本地网络。目前TFTP常用于PXE无盘启动、网络设备的设置等。

TFTP的优点:

  • TFTP可用于UDP环境,比如同时向许多机器下载程序或者文件时就往往需要使用到TFTP协议。
  • TFTP代码所占的内存较小,这对于较小的计算机或者某些特殊用途的设备来说是很重要的,这些设备不需要硬盘,只需要固化了TFTP、UDP和IP的小容量只读存储器即可。当电源接通后,设备执行只读存储器中的代码,在网络上广播一个TFTP请求。网络上的TFTP服务器就发送响应,其中包括可执行二进制程序。设备收到此文件后将其放入内存,然后开始运行程序。这种方式增加了灵活性,也减少了开销。

38.3.4 TFTP简单执行流程

下面是简单的执行流程,更详细的可以看wiki百科英文版上的说明:地址链接(这个是超链接)。

  1. 初始化主机A发送一个读请求(RRQ)或写请求(WRQ)包给主机B,包含了文件名和传输模式。
  2. B向A发一个ACK包应答,同时也通知了A其余送往B包应该发送的端口号。
  3. 源主机向目的主机发送编过号的数据包,除了最后一个都应该包含一个全尺寸的数据块。目的主机用编号的ACK包应答所有的数据包。
  4. 最终的数据包必须包含少于最大尺寸的数据块以表明这是最后一个包。如果被传输文件正好是尺寸块的整数倍,源主机最后送的数据包就是0字节的。

38.3.5 FTP和TFTP的区别

TFTP协议的优势:

尽管与FTP相比TFTP的功能要弱得多,但是TFTP具有两个优点:

  • TFTP能够用于那些有UDP而无TCP的环境。
  • TFTP代码所占的内存要比FTP小。

尽管这两个优点对于普通计算机来说并不重要,但是对于那些不具备磁盘来存储系统软件的自举硬件设备来说TFTP特别有用。

TFTP协议与FTP协议的相同点:

TFTP协议的作用和我们经常使用的FTP大致相同,都是用于文件传输,可以实现网络中两台计算机之间的文件上传与下载。可以将TFTP协议看作是FTP协议的简化版本。

TFTP协议与FTP协议的不同点:

  • TFTP协议不需要验证客户端的权限,FTP需要进行客户端验证。
  • TFTP协议一般多用于局域网以及远程UNIX计算机中,而常见的FTP协议则多用于互联网中。
  • TFTP客户与服务器间的通信使用TCP,而TFTP客户与服务器间的通信使用的是UDP。
  • TFTP只支持文件传输。也就是说,TFTP不支持交互,而且没有一个庞大的命令集。最为重要的是,TFTP不允许用户列出目录内容或者与服务器协商来决定哪些是可得到的文件。

38.4 总结

本章节就为大家讲解这么多,更多TFTP的相关知识需要大家查阅相关书籍进行学习,或者网上搜索相关资料进行学习。

【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识的更多相关文章

  1. tftp简单文件传输协议搭建

    TFTP 简单文件传输协议     安装     sudo apt-get install tftp  tftpd openbsd-inetd     需要tftp tftpd openbsd-ine ...

  2. 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识

    第16章      UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...

  3. 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识

    第33章      SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...

  4. 【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第32章       STM32H7的TIM定时器基础知识和H ...

  5. 【STM32H7教程】第29章 STM32H7的USART串口基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第29章       STM32H7的USART串口基础知识和 ...

  6. 【STM32H7教程】第47章 STM32H7的FMC总线基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第47章       STM32H7的FMC总线基础知识和HA ...

  7. TFTP服务[精简版]:简单文件传输协议

    简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于 UDP 协议在客户端 和服务器之间进行简单文件传输的协议.顾名思义,它提供不复杂.开销不大的文件传 ...

  8. TFTP(Trivial File Transfer Protocol,简单文件传输协议)

    TFTP(Trivial File Transfer Protocol,简单文件传输协议),是 TCP/IP 协议族中用来在客户机和服务器之间进行简单文件传输的协议,开销很小.这时候有人可能会纳闷,既 ...

  9. 【安富莱TCPnet网络教程】HTTP通信实例

    第41章      HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...

随机推荐

  1. nginx cache的玩法

      一.简介 Nginx版本从0.7.48开始,支持了类似Squid的缓存功能.这个缓存是把URL及相关组合当做Key,用Md5算法对Key进行哈希,得到硬盘上对应的哈希目录路径,从而将缓存内容保存在 ...

  2. Java 面试知识点解析(五)——网络协议篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  3. Ames房价预测特征工程

    最近学人工智能,讲到了Kaggle上的一个竞赛任务,Ames房价预测.本文将描述一下数据预处理和特征工程所进行的操作,具体代码Click Me. 原始数据集共有特征81个,数值型特征38个,非数值型特 ...

  4. 五种开源协议(GPL,LGPL,BSD,MIT,Apache)介绍

    商业化的软件应该主要选用MIT或者Apache license的开源系统作为插件. 什么是许可协议? 什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的 ...

  5. jQuery学习之旅 Item6 好用的each()

    1.javascript 函数的调用方式 首先来研究一下jquery的each()方法的源码,在这之前,先要回顾一下javascript函数具体调用样式: 普通函数调用 setName(); 可以作为 ...

  6. 2. Java面向对象之泛型-构造方法中使用

    package generic; class Construtgeneric<T> { private T value; public Construtgeneric(T value) { ...

  7. 关于基线baseline及与inline-block、vertical-aline等属性的关系(完善中.......)

    1. 基本含义 基线(base line):而是英文字母x的下端沿,是a,c,z,x等字母的底边线,并不是汉字文字的下端沿,.下图的红色线即为基线.凡是涉及到垂直方向的排版或者对齐的,都离不开最最基本 ...

  8. cassandra 在window上的demo

    Cassandra   window使用 1.        下载:http://cassandra.apache.org/download/. 2.        解压后,bin目录下,cassan ...

  9. Quartz简单案例

    需求需要开发一个每天定时推送消息给微信用户,第一次接触quartz,简单案例 1. 先编辑要执行的任务 测试类代码 package com.wqq.test.quartz; import org.sp ...

  10. BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划

    BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被 ...