关于TFTP传输协议

news2024/11/28 22:50:09

TFTP(Trivial File Transfer Protocol,简单文件传输协议):实现客户端与服务器之间简单文件传输。小文件传输,端口:69。协议简单,易于实现。

缺点:

  1. 传输效率低
  2. 对于超时机制没有明确说明
  3. 每包长度固定为512字节,不灵活

TFTP端口:指的是TFTP服务在服务器的69端口运行,客户端发送RRQ和WRQ的目的端口都是69,客户端源端口和服务器发送的端口都是随机的。

TFTP包格式

TFTP包有6种类型,包的类型由数据包前2个字节(操作码Opcode)确定,这6种类型的数据包分别是:

读文件请求包:Read request,简写为RRQ,值为1
写文件请求包:Write requst,简写为WRQ,值为2
文件数据包:Data,简写为DATA,值为3
应答包:Acknowledgement,简写为ACK,值为4
错误信息包:Error,简写为ERROR,值为5
请求响应包: Acknowledgement,简写为ACK,值为6

具体结构如下图所示:(没有指明字节数就是可变长,需要根据实际情况决定)

块编号:包的序号

读/写文件请求包:

文件名:ASCII码表示,\0结尾

mode(传输模式):\0结尾

字符串文件netascii
二进制文件octet

ERROR中的错误码见下文。

请求响应包是对请求数据的响应,是可选包,视具体情况而定。
1. 操作码(2字节)
2. 可选字段(timeout、blksize、tsize等,以 \0 结尾)

TFTP协议过程分析

TFTP客户端下载过程
  

        第一步:客户端给服务器发起下载请求,数据格式为(操作码1+文件名+0+模式+0)。
  第二步:服务器接收到请求之后,回复客户端数据。如下所示:(操作码3+块编码0+数据, (IP号, 端口号))。
  第三步:客户端每接受一次数据,都要回复服务器一次ACK信号。
  第四步:服务器收到ACK,给客户端发送下一包数据。(重复3-4这个过程)
  第五步:客户端接收到的数据小于512个字节,说明服务器发送完毕。数据包小于516字节(2B操作码+2B块编码+512B数据)

 

TFTP客户端上传过程


  第一步:客户端给服务器发送上传请求,数据格式为(操作码2+文件名+0+模式+0)。
  第二步:服务器接收到请求之后,回复客户端数据。(操作码4+块编码0, (IP号, 端口号))。
  第三步:客户端每发送一次数据,服务器都要回复一次ACK信号。
  第四步:客户端收到ACK,给服务器发送下一包数据。(重复3-4这个过程)
  第四步:直到客户端发送完数据才结束。
  

注意:
  1、当客户端接收到的数据小于512字节时,表示服务器发送数据完成
  2、块编码从0开始,每次加1,它的范围是[0,65535]

ERROR包中的错误码

0未定义Not defined, see error message (if any).
1文件找不到File not found.
2拒绝访问Access violation.
3磁盘满了或者超出了可分配空间Disk full or allocation exceeded.
4非法TFTP操作Illegal TFTP operation.
5传输ID未知Unknown transfer ID.
6文件不存在File already exists.
7没有该用户No such user.

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

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

相关文章

华为OD机试真题B卷 JavaScript 实现【数组拼接】,附详细解题思路

一、题目描述 现在有多组整数数组,需要将它们合并成一个新的数组。 合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉,如果该行不足固定长度或者已经为空,则直接取出剩余部分的内…

第18章:逻辑架构

一、逻辑架构剖析 1.1服务器处理客户端请求 ①MySQL是典形的C/S架构,服务器端使用mysqld ②客户端进程向服务器进程发送SQL语句,服务器进程在向客户端进程发送处理结果。 查询请求演示图 查询请求详细图 1.2第1层:连接层 ①客户端访问My…

如何使用 NGINX Service Mesh 进行速率限制

原文作者:NGINX 原文链接:如何使用 NGINX Service Mesh 进行速率限制 转载来源:NGINX 官方网站 ​ NGINX 唯一中文官方社区 ,尽在 nginx.org.cn 无论 HTTP 请求是恶意的(暴力破解密码或 DDoS 攻击)还是正常…

day07--java高级编程:JDK8的新特性,JDK9的新特性,JDK10的新特性,JDK11的新特性,JDK15的新特性

1 JDK8的其它新特性 说明:一些8中的新特性在,java高级部分学习的同时顺便讲过了。 1.1 JDK8新特性的总体结构 1.2 Java 8新特性简介 1.3 Lambda表达式 1.3.1 出现背景 1.3.2 Lambda表达式的使用举例 package com.atguigu.java1;import org.junit.Tes…

2023年软件测试简历没有邀约?为什么?8类细节通通告诉你(附赠高薪简历)

求职不顺,没有邀约,大概率是你的简历出现了问题。 本篇文章列出高薪简历应该注意的细节,合计36处,涉及简历的八大组成部分。 现在就讲: 一、简历样式要求(3点要求) 1、简历格式,…

某游戏登录密码加密,webpack

注意:文章内容仅用于学习和技术交流,切勿做出违法的事情,如有侵权请联系我删除。 网址(今天的大冤种):aHR0cHM6Ly93d3cuZ205OS5jb20v 一,分析 从上面图片可以看到,他的密码是加密了…

FinGPT:以数据为中心的方法革新开源金融

FinGPT 由 AI4Finance Foundation 开发,是一种以数据为中心的工具,可使大型语言模型 (LLM) 的金融数据民主化。它旨在成为开放式金融的开源解决方案,旨在彻底改变金融业。本文将深入探讨 FinGPT 的复杂性、它的好处,以及它如何成为…

vscode使用latex环境无法编译,是否与anaconda环境冲突

Vscode使用latex环境无法编译,是否与anaconda环境冲突 在 VSCode 中使用 LaTeX 环境无法编译,可能与 Anaconda 环境冲突。这是因为 Anaconda 默认会将环境变量PATH 设置为 Anaconda 所在的路径,如果你使用的是 Anaconda 内置的 Python环境&am…

如何三分钟快速制作自定义ppt

目录 利用ChatGPTMindShow三分钟生成PPT 机器人 道合顺 莓用ai 百晓生 aichat 结合提词器以达到更好地提问效果: 更好地提问ChatGPT_常用prompt表_小黄同学LL的博客-CSDN博客 举个栗子: 利用ChatGPTMindShow三分钟生成PPT 提词:…

LeCun世界模型出场!Meta震撼发布首个「类人」模型,理解世界后补全半张图,自监督学习众望所归

LeCun世界模型出场!Meta震撼发布首个「类人」模型,理解世界后补全半张图,自监督学习众望所归 原创 新智元 新智元 2023-06-14 12:19 发表于北京 【新智元导读】LeCun的世界模型终于来了,可谓是众望所归。既然大模型已经学会了理解…

Unity入门6——光源组件

一、参数面板 二、参数介绍 Type:光源类型 Spot:聚光灯 Range:发光距离Spot Angle:光锥角度Directional:方向光Point:点光源Area(Baked Only):面光源 仅烘焙。预先算好&…

如何选择好用的效果图渲染平台

在现代的建筑设计、室内设计、电影动画等行业中,效果图已经成为了一个重要的工具,能够帮助设计师和制作人员更好地呈现他们的想法和概念。而要制作出高质量的效果图,一个好用的效果图渲染平台是非常必要的。 如何选择好用的效果图渲染平台呢…

【Flutter】Flutter 如何获取安装来源信息

文章目录 一、 前言二、 安装来源信息的基本概念1. 什么是安装来源信息2. 为什么我们需要获取安装来源信息 三、 如何在 Flutter 中获取安装来源信息1. 准备工作2. 安装必要的依赖库3. 编写代码获取安装来源信息 四、 完整示例代码五、总结 一、 前言 在这篇文章中&#xff0c…

图像处理实战01-OpenCV 入门指南

Python OpenCV 入门指南 OpenCV是一个强大的计算机视觉库,它可以用于处理图像和视频数据,以及进行目标检测和跟踪等任务。,将学会如何使用Python编写OpenCV代码来进行基础和进阶的图像处理和分析。 学习OpenCV可以帮助你掌握基本的图像处理…

(哈希表) 1002. 查找共用字符 ——【Leetcode每日一题】

❓1002. 查找共用字符 难度:简单 给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符),并以数组形式返回。你可以按 任意顺序 返回答案。 示例 1: 输入&…

Apache Hive安装部署

Apache Hive安装部署 🚃Hive元数据 描述数据的数据,主要描述数据属性信息,用来支持如指示存储位置,历史数据,资源查找,文件记录等功能。存储在关系型数据库中。如hive内置Derby,或第三方MySql…

微服务: 00-rabbitmq出现的异常以及解决方案

目录 前言: 问题概述: 1. rabbitmq初始安装配置异常 -> 1.1 rabbitmq报您与此网站连接不是私密连接 --->1.1.1 上述问题解决方案 ---> 1.1.2 依次执行下面代码 -> 1.2 解决用户的No access情况 -> 1.2.1 使用设置的账号密码进行登录 -> 1.2.2 点击 Ad…

参加完京东的面试,感觉面试官有点菜...

前言 去年年底面试了京东,现整理面经,希望各位不要觉得太迟(这该死的拖延症???)。 没有截图是因为他根本没给我发邮件,直接boss开聊的,但是boss的聊天记录只有30天,此处点名批评下&#xf…

VMware Tools 12.2.5 发布下载 - 虚拟机必备工具

VMware Tools 12.2.5 发布下载 - 虚拟机必备工具 请访问原文链接:https://sysin.org/blog/vmware-tools-12/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 简介 VMware Tools 中包含一系列服务和组件&#xff0c…

ThreadLocal了解

文章目录 概述源码原理内存泄露应用场景 概述 ThreadLocal提供线程的局部变量,这种变量与普通变量的区别在于,每个访问这种变量的线程都有自己的、独立的变量副本。用于解决多线程间的数据隔离问题。 源码 //返回Thread实例的成员变量threadLocals Th…