TFTP用UDP效率和TCP实现的FTP效率高的原因有哪些?
- 为何很多TFTP用UDP实现的效率反而不如用TCP实现的FTP效率高?
- TFTP用UDP实现的效率反而不如用TCP实现的FTP效率高是什么原因?
这个和TFTP的实现有关TFTP是为了实现一种简单的文件传输而不重视效率它在实现的时候报文的大小限制在512Bytes以内另外它在发送接收采用的停止等待技术,也就是你发一个报文过去,对方要回应之后你才能发下一个。所以它的传输效率远远低于TCP实现的FTP最初的TFTP协议,规定序号字段仅16bit,每个报文长度不超过512字节,自己算算是不是可能支持100M的文件传输?(答案:很多TFTP服务器限制在16MB,比如CISCO设备自己带的TFTP server、GNU tftp server。如果序号用无符号整数,最大也就32MB而已)。
当然后来也有改进的TFTP可以支持比较大的文件传输,比如通过扩大报文的最大长度等方法,来支持更大一些的文件传输;又比如一些实现中,将大文件切割成32MB的n块。不过不是所有的TFTP server/client支持这些情况。
为什么TFTP用UDP实现的效率反而不如用TCP实现的FTP效率高?我认为研发tftp的初衷是实现简单,他使用了停止,等待的半双工协议,而且他的数据报大小都是512byte,显然不如使用tcp的ftp来的灵活和高效.还有一个次要原因,就是在假如不太可靠的网络上面通信,tcp比udp工作的更好。
最后要说的是,由于它的运作机制,FTP无论如何也不是一种快速可靠地传输大文件的工具tftp基于udp实现了可靠的传输,因为它要应付丢包、错序等情况,所以将数据切成512字节的块,并且加了标识。采用停等协议,传输效率低,所以TFTP传大文件时还不如ftp。