zoukankan      html  css  js  c++  java
  • 文件传输协议---TFTP

    简介

      TFTP协议全称为简单文件传输协议,是以UDP为基础的应用层协议,主要用于不同设备之间的文件传输。具有协议简单,易于实现的特点,常用于嵌入式设备开发中。

    传输模式

      数据的存储有不同的格式,磁盘中相同的一块数据,通过不同的存储协议解析,得到的内容是完全不同的,如:磁盘中的一个字节0x65,按照ASCII解析就是字母A,按照数据本身解析就是0x65这个数,两种解析的方式显示的内容完全不同。因此文件在传输的过程中也需要指明数据的表示方式,即传输模式。TFTP协议的传输模式如下所示:

    模式名称 模式含义 说明
    netascii 文本传输模式,按照一个字节8位解析 文本模式
    octet 二进制模式,数据无需解析 二进制模式
    mail 已过时,不使用 已过时

    协议格式

    TFTP共定义了五种类型的包格式,格式的区分由包数据前两个字节的Opcode字段区分,分别是:

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

    读写文件请求包格式

    2字节 字符串 1字节 字符串 1字节
    Opcode Filename  0          Mode   0         

    Opcode       操作码 1 / 2

    Filename     文件名

    Mode           传输模式

    数据包格式

    2字节 2字节 n字节
    Opcode Block  data

    Opcode        操作码 3

    Block            包序号,从1开始,除了最后一包,每一包的长度都是512字节,最后一包的长度小于512字节

    data              具体急需要传输的数据

    ACK包格式

    用于回复对端,确认数据的处理情况

    2字节 2字节
    Opcode Block

    Opcode         操作码 4

    Block             收到的包序号

    错误包格式

    2字节 2字节 字符串 1字节
    Opcode ErrorCode ErrMsg  0

    用于在失败的情况下回复对端

    Opcode         操作码 5

    ErrorCode     错误码,每一种错误码对应一种错误场景

    ErrMsg         错误的描述信息

    错误码

    错误码    表示意思

       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.

    TFTP协议的缺陷

    1. 传输效率低
    2. 对于超时机制没有明确说明
    3. 每包长度固定为512字节,不灵活
  • 相关阅读:
    jmeter压测学习42-逻辑控制器之交替控制器
    jmeter压测学习41-逻辑控制器之吞吐量控制器
    jmeter压测学习40-逻辑控制器之事务控制器
    jmeter压测学习39-获取post请求x-www-form-urlencoded格式的数据
    jmeter压测学习38-通过Jython调用Python脚本
    对微信小程序的生命周期进行扩展 – Typescript 篇
    在微信小程序开发中使用Typescript
    TCP长连接和短连接 Python代码
    jQuery Ajax编程
    Django 网页中文显示u开头的乱码
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11389442.html
Copyright © 2011-2022 走看看