协议介绍

TFTP有如下特征:

1、UDP承载,请求端口固定为69;

2、没有列出目录内容功能;

3、无验证和加密机制;

4、仅有读取或写入文件功能;

5、支持三种不同的传输模式:"netascii","octet"和"mail",其中第三种已废弃。

TFTP会话流程如下:

1、客户机A送一个读请求(RRQ)或写请求(WRQ)包给服务器B,包含了文件名和传输模式;

2、B向A发一个ACK包应答,同时也通知了A其余送往B包应该发送的端口号;

3、源主机向目的主机送编过号的数据包,除了最后一个都应该包含一个全尺寸的数据块。目的主机用编号的ACK包应答所有的数据包;

4、最终的数据包必须包含少于最大尺寸的数据块以表明这是最后一个包。如果被传输文件正好是尺寸块的整数倍,源主机最后送的数据包就是0字节。

很多软件都内嵌了TFTP功能。

(上图来自网络)

TFTP数据包的前两个字节为

协议解析

TFTP按数据包类型进行解析,不同类型格式不同。

读文件和写文件请求格式如下:

一个读文件请求例子如下:

一个写文件请求例子如下:

文件数据格式:

一段文件数据报文例子如下:

回应格式:

一个回应报文如下:

错误信息格式:

对还原TFTP传输的文件内容,关键点是:

1、文件数据与文件请求不在一条链内,它们通过客户机所用的端口建立关联,文件名在文件请求报文内。

2、文件数据需要根据Block值进行拼接,才能构成一个完整的文件。

3、文件数据块的Block值从1开始,由于UDP的不可靠性,需要在内容拼接时根据Block值去除重传内容以及进行排序。

对TFTP协议的介绍就到这里了,在Wireshark官网,有TFTP的pcap供下载学习,如果有疑问,可以联系我共同探讨。

长按进行关注。

最新文章

  1. webserver[实时查询当天的天气情况]
  2. DB2常用命令
  3. ae柱状图
  4. Java Servlet(六):HttpServlet实现原理(jdk7+tomcat7+eclipse)
  5. Java设计模式——装饰者模式
  6. css获取实时样式
  7. IAP Store Kit Guide(中文)
  8. eclipse中show whitespace characters显示代码空格,TAB,回车 导致代码乱恶心
  9. TensorFlow之DNN(一):构建“裸机版”全连接神经网络
  10. 【我们一起写框架】MVVM的WPF框架(三)—数据控件
  11. Union 与 Union all 的区别【坑】
  12. 基本排序算法(Java)
  13. 基于maven的spring-boot的pom文件详解
  14. Python基础_列表 list
  15. 闪电侠第四季/全集The Flash迅雷下载
  16. PHP 使用PHPExcel删除Excel单元格指定列
  17. 对于android浏览器的一些看法
  18. express应用中常用中间件介绍
  19. python中的logger模块详细讲解
  20. SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片

热门文章

  1. 汇总:ASP.NET Core中HttpContext获取传参数据,有哪些方式
  2. css基础,css选择器
  3. 剑指offer笔记面试题12----矩阵中的路径
  4. PHP intdiv 数学函数
  5. 【转载】Android N 完全不同以往的四个新特性
  6. 一文解读HTTP2 (转)
  7. 【一】Gradle 初识
  8. Saltstack_使用指南17_salt-ssh
  9. Golang防止多个进程重复执行
  10. 如何查找jdk安装路径也就是JAVA_HOME配置的环境变量