本发明涉及数据传输,尤其是一种不支持分片环境下tftp传输大文件的方法。
背景技术:
1、tftp协议简单方便,常用于嵌入式操作系统如嵌入式x86linux,arm linux的系统升级。
2、根据使用tftpd32或tftpd64程序的经验,发现最大块大小(blksize)默认是512字节,最大块大小通常设置为8192字节,最大可以设置为32768字节。
3、对于不支持ip分片的tftp客户端或者ip环境,通常不允许大于1500字节大小(mtu值)的包分片传输,因而如果将最大块大小设置的过大(稍微大于1500字节),就不会被成功的分片传输到tftp对端。因而这种场景下最大块大小选项设置的上限不能高于1500字节。
4、由于rfc1350里,关于块id的大小要求是2个字节,因而可以计算出来,通过tftp最大允许传输的文件大小是,2^16*blksize
5、其中,16代表块id的大小(2字节=16比特,所以最大是2的16次方个块),每块大小如上所述,为512到32768不等。
6、因而tftp可传输最大文件限额是2^16*32768约=2147m约=2gb,即2g字节的文件。不允许分片的场景最大文件限额是,2^16*1480约=96mb。
7、对于2g以上的文件传输,会导致tftp传输失败,而在不允许分片的场景下,远远小于2g的文件传输(例如96mb)就已经不被允许上传。
8、本发明针对此种情况,提出了针对大文件的tftp传输解决方法,解决了大文件利用tftp无法传输的问题。
技术实现思路
1、本发明提供一种不支持分片环境下tftp传输大文件的方法,包括以下步骤:
2、a.在tftp客户端/服务端上设置permitreverse选项为1;
3、b.服务器向客户端传输数据或者客户端向服务器传输数据,采用2个字节表示块id,确认块id值是否为最大值0xffff,当块id为最大值0xffff并且permitreverse选项为1时,块id下一数据翻转为0x0000。
4、进一步地,当permitreverse选项为0时,块id不进行翻转。
5、采用本发明地技术方案,具有以下技术效果:
6、当permitreverse选项设置为0时,其可以与旧的tftp客户端/服务端兼容传输数据,当permitreverse选项设置为1时,其可以在块id达到最大值时进行块id翻转,从而实现块id的循环,实现在不支持分片环境下,实现tftp传输大文件。
1.一种不支持分片环境下tftp传输大文件的方法,其特征在于,包括以下步骤:
2.根据权利要求1所示的不支持分片环境下tftp传输大文件的方法,其特征在于,当permitreverse选项为0时,块id不进行翻转。