QT下的TFTP

转载至http://home.eeworld.com.cn/my/space-uid-480041-blogid-230767.html


注: 本文大部分理论引用于<TCP/IP详解卷一>和中国协议分析网www.cnpaf.net

一、协议分析:
TFTP(Trivial File Transfer Protocol)即简单文件传送协议, 是TCP/TP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议, 提供不复杂的, 开销不大的文件传输服务.为了保持简单和短小, TFTP使用UDP协议, 且默认端口号为69,它不提供可靠的数据流传输服务, 也不提供存取授权与认证机制, 使用超时重传方式来保证数据的到达。与FTP相比, TFTP的大小要小的多, 它主要用于小文件的传输, 只能从文件服务器上获得或写入文件, 不能列出目录。更多的资料可以参考RFC1350。下面给出了5种TFTP报文格式。
我们可以看到,TFTP报文的头两个字节表示操作码。对于读请求(RRQ)和写请求(WRQ),文件名字段说明客户要读或写的位于服务器上的文件。这个文件字段以0字节作为结束。模式字段是一个ASCII码串netascii或octet(大小写可任意组合),同样以0字节结束。netascii表示数据是以成行的ASCII码字符组成,以两个字节—回车字符后跟换行字符(称为CR / LF)作为行结束符。这两个行结束字符在这种格式和本地主机使用的行定界符之间进行转化。octet则将数据看作8 bit一组的字节流而不作任何解释。
每个数据分组包含一个块编号字段,它以后要在确认分组中使用。以读一个文件作为例
子,TFTP客户需要发送一个读请求说明要读的文件名和文件模式( mode )。如果这个文件能被这个客户读取,TFTP服务器就返回一个块编号为1的数据分组。TFTP客户又发送一个块编号为1的ACK。TFTP服务器随后发送块编号为2的数据。TFTP客户发回块编号为2的ACK。重复这个过程直到这个文件传送完。除了最后一个数据分组可含有不足512字节的数据,其他每个数据分组均含有512字节的数据。当TFTP客户收到一个不足512字节的数据分组,就知道它收到最后一个数据分组。
在写请求的情况下,TFTP 客户发送WRQ指明文件名和模式。如果该文件能被该客户写,TFTP 服务器就返回块编号为0的ACK包。该客户就将文件的头512字节以块编号为1发出。服务器则返回块编号为1的ACK。

最后一种TFTP报文类型是差错报文,它的操作码为5。它用于服务器不能处理读请求或写请求的情况。在文件传输过程中的读和写差错也会导致传送这种报文,接着停止传输。差错编号字段给出一个数字的差错码,跟着是一个ASCII表示的差错报文字段,可能包含额外的操作系统说明的信息。

下面是代码http://pan.baidu.com/s/1c21kUTa

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值