您的位置:首页 > 编程语言 > PHP开发

TFTP协议简介

2014-11-13 18:28 218 查看
TFTP(Trival File Transfer Protocol),即简单文件传输协议.

TFTP是使用广泛,也是比较传统的文件传输协议之一.它采用C/S模式,也即分为TFTP服务器和TFTP客户端.

TFTP服务器为TFTP客户端提供文件上传、下载服务.

一般的TFTP协议使用UDP作为下层协议,但是有的TFTP也使用了其他的协议作为下层支持.

本文仅简单描述TFTP协议,若需要详细了解协议细节的朋友可以参考相应的RFC文档.

下面简单描述整个TFTP回话过程,细节请参考RFC文档.

(1) 任何会话都是由客户机启动的,客户机首先向服务器发送一个请求报文.

 报文头部的两个字节为请求的代码,1表示读(下载),2表示写(上传),紧接着是文件的名称,文件名称以null结束,

 后面跟随的是选项。目前我知道的选项有blksize,timeout,tsize,分别代表客户机期望的数据块大小(Byte),传输超时时间(s)

和文件的大小,报文以null结束.

(2) 客户机发送读写请求后,服务器会解析请求报文的选项,确认是否可以接受,若可以接受客户端的选项值,那么

服务器会OACK回显选项值,不被识别的选项将会被忽略.若已经被服务器识别出选项,但是选项的值是无效的,那么服务器

可以使用一个自认为有效的值来替换并加入OACK回显,或者回复一个错误码为8的包,然后结束传输.客户机必须使用已经被确认的选项值.

(3)客户机发送请求后,收到服务器回应的类型有3中:

   (1) OACK,选项确认.

   (2) ACK ,没有选项的确认.

   (3) ERROR,请求被拒绝.

(4) 客户机ACK后,服务器开始发送真正的文件数据,数据包以2字节的包类型,2字节的包编号,和blksize大小的数据部分

组成.

(5)服务器发来的每一个数据包都需要客户机确认后,服务器才发送下一个数据包,因此称为 lock-step.

(6)当数据包丢失时,服务器采用超时机制重传没有得到确认的数据包.

(7)当客户机收到的数据包小于blksize指定的大小时,表示数据传输完成.

(8)当服务器发送的包大小为blksize的整数倍时,即每个包都填满数据,那么服务器最后会发送一个空的数据包,以示文件传输

完成.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息