Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1611817
  • 博文数量: 245
  • 博客积分: 10378
  • 博客等级: 上将
  • 技术积分: 2571
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 08:19
文章分类

全部博文(245)

文章存档

2013年(4)

2012年(8)

2011年(13)

2010年(68)

2009年(152)

分类: LINUX

2009-05-04 12:34:38

1. 目的

TFTP是一个传输文件的简单协议,通常使用UDP协议而实现,但tftp并没有要求实现的具体协议,在特殊需求的场合可以同tcp实现。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。

2. 概况

任何传输起自一个读取或写入文件的请求,这个请求也是连接请求。如果服务器批准此请求,则服务器打开连接,数据以定长512字节传输。每个数据包包括一块数据,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。如果一个数据包的大小小于512字节,则表示传输结构。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。通信的双方都是数据的发出者与接收者,一方传输数据接收应答,另一方发出应答接收数据。大部分的错误会导致连接中断,错误由一个错误的数据包引起。这个包不会被确认,也不会被重新发送,因此另一方无法接收到。如果错误包丢失,则使用超时机制。错误主要是由下面三种情况引起的:不能满足请求,收到的数据包内容错误,而这种错误不能由延时或重发解释,对需要资源的访问丢失(如硬盘满)。TFTP只在一种情况下不中断连接,这种情况是源端口不正确,在这种情况下,指示错误的包会被发送到源机。这个协议限制很多,这是都是为了实现起来比较方便而进行的。通过下边的图片来了解tftp协议的通信流程:

  • TFTP协议概述
    1.简单文件传送协议(Trivial File Trhansfer Protocol)
    2.最初用于引导无盘系统,被设计用来传输小文件
    3.基于UDP协议实现,但也可以由其他协议实现
    4.不具备FTP的许多功能
    5.只能从服务器获取或写入文件,不能列出目录
    6.不进行认证
  • 数据传输模式
    1.netascii:文本模式
    2.octet:二进制模式
    3.mail:已经不再支持
  • 协议结构

    基本 TFTP 协议头结构:

    16 bits String 16 bits String 16 bits
    Opcode Filename 0 Mode 0

    Opcode:操作代码或命令。以下为 TFTP 命令:

    Opcode Command Description
    1 Read Request Request to read a file
    2 Write Request Request to write to a file
    3 File Data Transfer of file data
    4 Data Acknowledge Acknowledgement of file data
    5 Error Error indication

    Filename:传送的字段名称。

    Mode:数据模式。协议传输的文件数据格式。可以是 NetASCII,也可以是标准 ASCII,八位二进制数据或邮件标准 ASCII。

    我们通过图片来详细看看tftp报文的格式:



  • 在看看tftp的简单超时处理机制:
  •  

好了,tftp的内容就这些了,下边是一个完整的tftp通信的报文:

阅读(2430) | 评论(1) | 转发(0) |
0

上一篇:简单web服务器

下一篇:简单的TFTP客户端

给主人留下些什么吧!~~

chinaunix网友2009-05-04 22:45:11

你写的http和tftp例程都看了,这两个协议比较简单,可以去看看一些复杂协议。这样对与学习 tcp/ip协议族 很有益。