[软件工程]—TFTP协议简要解析

news2024/11/27 16:28:38

TFTP协议简要解析

1.TFTP基本概念

TFTP(Trivial File Transfer Protocol):是一个很小且易于实现的文件传送协议:

  • TFTP使用客户服务器方式和使用UDP数据包,因此TFTP需要有自己的差错改正机制。
  • TFTP只支持文件传输而不支持交互。
  • TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户身份进行鉴别。

2.TFTP特点

  • 每次传送的数据PDU中有512字节的数据,但最后一次可以不足512字节。
  • 数据PDU也被称为文件块(block),每个块按序编号,从1开始。
  • 支持ASCII码或者二进制传送。
  • 可对文件进行读和写。
  • 使用很简单的首部。

3.停止等待协议

  • 发送完一个文件块就等待对方确认,确认时应指明所确认的块编号。
  • 发完数据后在规定时间收不到确认数据就要重发数据PDU。
  • 发送确认PDU的一方若在规定时间内收不到下一个文件块,也要重发确认PDU。
  • 开始工作时,TFTP客户进程发送一个读请求PDU或者写请求PDU给TFTP服务器进程,其熟知端口号码69.
  • TFTP服务器进程要选择一个新的端口和TFTP客户进程进行通信。
  • 若文件长度恰好为512字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只包含首部而无数据的数据PDU。
  • 若晚间长度不是512字节的整数倍,则最后传送数据PDU的数据字段一定不满512字节,这恰好可作为文件结束的标志。

4.TFTP报文格式

TFTP共有5中报文格式,分别为读请求、写请求、数据、响应、错误:

  • 读写请求

组成如下所示,读写操作根据操作码来区分。

在这里插入图片描述

模式:模式共用两种,

  • netascii:表示数据是以成行的ascii码字符组成,以两个字节\r\n作为行结束符。
  • octet:将数据看做8bit一组的字节流而不作任何解释。
  • 数据

数据报文格式如下,此时在传输文件数据:

在这里插入图片描述

  • 响应

在接收到数据后发送响应,格式如下:

在这里插入图片描述

  • 错误

当数据传输发生错误后发送,格式如下:

在这里插入图片描述

错误码及对应含义如下:

在这里插入图片描述

5.工作流程

  • 初始化连接阶段,客户发送RRQ或WRQ,服务器端口69.
  • 余下的阶段,TFTP将传输标记TID传送给UDP作为源和目标端口。

在这里插入图片描述

6.抓包分析

抓包数据如下:

在这里插入图片描述

行1:客户端写请求

行2:服务器端响应,Block0

行3:客户端发送文件,Block1

行4:服务器端响应,Block1

行5:客户端发送文件,Block2

行6:服务器端响应,Block2

行7:客户端发送文件,不足512Byte,为末尾,Block3

行8:服务器端响应,Block3

行9:客户端读取不存在文件

行10:服务器端响应错误码,显示文件未找到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32 ARM+FPGA+AD的电能质量分析仪方案设计(一)硬件设计

电能质量分析系统硬件设计 3.1 电能质量分析系统设计要求 本系统实现对电能质量的高精度测量,根据国家相关电能质量分析仪器规定 标准以及对市场电能质量分析仪的分析,指定以下设计目标。 ( 1 )电能质量参数测量精度&#xf…

基于 Prometheus+Grafana+Alertmanager 搭建 K8S 云监控告警平台(附配置告警至QQ、钉钉)

文章目录 一、机器规划二、部署安装 node-exporter、prometheus、Grafana、kube-state-metrics1、创建 monitor-sa 命名空间2、安装node-exporter组件2.1、说明2.2、应用资源清单2.3、通过node-exporter采集数据 3、k8s 集群中部署 prometheus3.1、创建一个 sa 账号3.2、将 sa …

智谱开放平台API调用解析

一、什么是智谱AI 智谱AI成立于2019年,由‌清华大学计算机系知识工程实验室的技术成果转化而来,是一家致力于人工智能技术研发和应用的公司。智谱致力于打造新一代认知智能大模型,专注于做大模型的中国创新。 二、智谱开放平台API调用 官方文…

遍历有向图链路(DFS算法)- 优化版

在上一节基础上,去除了节点的pre集合,只保留节点next的结合,对数据模型进行了优化,实现思想做了优化。 有向图示例: 基本思路 构建有向图数据模型校验有向图不能出现回路,即当前节点不能出现在历史链路中首…

Java控制台实现《多线程模拟龟兔赛跑》(实现Runnale接口,重写run()方法)

(温馨提示:本题最重要的是学习思路,代码还有待优化和改进!) 下一篇博客进行优化。实现Callable接口:V call() throws Exception 。可以返回结果,以及可以抛出异常。(启动线程比较麻烦…

spingboot项目打包到docker镜像[保姆级教程]

目录 1. 项目准备 2. 项目打包测试 3. docker配置 3.1 服务器端配置 3.2 开发IDEA配置 3.3 创建dockerfile 写在前面: 这博客一晃鸽了好久了,其实不是没有创作,只是懒得写博客了.日常都记录在自己的语雀小本本上了.好久没有出保姆级教程了,这次忽然想通过ide…

IP地址类型选择指南:动态IP、静态IP还是数据中心IP?

你是否曾经困惑于如何选择最适合业务需求的IP地址类型?面对动态IP、静态IP和数据中心IP这三种选择,你是否了解它们各自对你的跨境在线业务可能产生的深远影响? 在跨境电商领域,选择合适的IP类型对于业务的成功至关重要。动态IP、…

UART在Linux内核启动时突然不打印的问题

国庆前一天收到的任务,在一颗比较成熟的芯片的SDK基础上,移植一个新内核,让它能够在bitfile下跑在FPGA上。 看了芯片设计那边给的文档,对比过去的那颗,感觉也就改改寄存器,中断号,时钟&#xff…

聚焦AI|智享AI直播三代模型的出现,打破传统直播束缚!

聚焦AI|智享AI直播三代模型的出现,打破传统直播束缚! 在数字化浪潮的推动下,直播行业正经历着前所未有的变革与升级。其中,智享AI直播三代模型的出现,无疑成为了业界关注的焦点。这一创新技术不仅引发了关于无人直播未来发展方向的…

18709 魔法

### 思路 为了将所有白色奶牛排在前面,黑色奶牛排在后面,我们可以考虑两种策略: 1. 将所有的奶牛都变成白色。 2. 将所有的奶牛都变成黑色。 我们需要计算这两种策略所需的最少次数,并选择其中较小的一个。 具体步骤如下&#x…

从加载到对话:使用 Llama-cpp-python 本地运行量化 LLM 大模型(GGUF)

(无需显卡)使用 Llama-cpp-python 在本地加载具有 70 亿参数的 LLM 大语言模型,通过这篇文章你将学会用代码创建属于自己的 GPT。 建议阅读完 19a 的「前言」和「模型下载」部分后再进行本文的阅读。 代码文件下载 - Llama-cpp-python 文章目…

AI智能体:共塑企业变革新纪元,引领未来无限潜能

当我们被《银翼杀手2049》或《机械公敌》等科幻大片中那些远超人类能力、能够自主判断并行动的人工智能所震撼时,AI时代的“智能体”已经悄然渗透进我们的工作生活中,成为引领企业变革的先锋力量,将我们带入一个全新的纪元。 ​从辅助到共生&…

【Unity】背景图片随着背景里面内容大小而变化

今天制作项目里面的设置界面和暂停界面时,发现两个界面有很多重复部分,所以直接做一个界面就行了,但是两个界面的背景大小会有变化,图片在下面 这个是游戏暂停界面的,设置界面和这个界面有很多重复地方,仅仅…

学习博客写作

欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持&#x…

安卓手机平板远程访问内网服务器中安装的code-server编程开发实战

文章目录 前言1.Ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 前言 本文主要介绍如何在Linux Ubuntu系统安装code-server,并结合cpolar内网穿透工具配置公网地址,轻松实现使用安…

SQL 干货 | 使用 Having 子句筛选聚合字段

如果你编写 SQL 查询已有一段时间,那么你可能对 WHERE 子句非常熟悉。虽然它对聚合字段没有影响,但有一种方法可以根据聚合值过滤记录,那就是使用 HAVING 子句。本博客将介绍它的工作原理,并提供几个在 SELECT 查询中使用它的示例…

计次卡魔都千丝冥缘应用———未来之窗行业应用跨平台架构

一、魔都千丝冥缘作用 在本次卡购买种,涉及卡包表单、次卡表单,商品表单,提成表单,支付方式表单,职员表单 并且在商品表和次卡表单字段一样,元素name名称一样。 未来之窗魔都千丝冥缘,将功能…

字节跳动青训营开始报名了!

关于青训营: 青训营是字节跳动技术团队发起的技术系列培训 &人才选拔项目;面向高校在校生,旨在培养优秀且具有职业竞争力的开发工程师。 本次技术训练营由掘金联合豆包MarsCode 团队主办课程包含前端、后端和 A 方向,在这个飞速发…

高频股票期货ETF历史高频数据源

【数据源】 银河金融数据库(yinhedata.com) 提供金融数据股票、美股、期货以及ETF等高频tick数据,分钟级别数据。 MACD背离是指MACD指标与价格走势之间发生的方向性差异,这通常被视为市场可能发生趋势反转的信号。以下是一个具体…

GS-SLAM论文阅读笔记-CG-SLAM

前言 这是一篇不是最新的工作,我之前没有阅读,但是我前几天阅读GLC-SLAM的时候,发现它的一部分内容参考了CG-SLAM,并且CG-SLAM最近被ECCV2024接收,说明这是一片值得参考的好文章,接下来就阅读一下吧&#…