使用无连接协议传输文件似乎是一个奇怪的想法 - 那么在什么情况下您不会关心整个文件是否已交付?我在某处读到 TFTP 用于升级路由器的固件,但您为什么要使用 TFTP 这样做?这是否意味着您无法确定所有数据(整个更新)都已到达目的地?
什么时候使用 TFTP?
使用无连接协议传输文件似乎是一个奇怪的想法 - 那么在什么情况下您不会关心整个文件是否已交付?
我将在 YLearn 的出色答案中添加一些内容......您总是希望交付整个文件。声称一个不希望整个文件传输,因为TFTP是一个错误的认识TFTP。
我在某处读到 TFTP 用于升级路由器的固件,但您为什么要使用 TFTP 这样做?
这是一个非常简单但仍然可靠的协议。有时您可能会卡在 Cisco IOS rommon提示符处(出于调试或错误)。Rommon 本身就是一个微小的环境;rommon图像通常在 500KB 左右。有时您会从rommon内部传输文件;因此,如果您希望该协议适合rommon ,则需要一个像TFTP这样的小文件传输协议。通过使用 tftp,rommon可以使用更小的 IP 堆栈(UDP 和 IP,没有 TCP)。
我在某处读到 TFTP 用于升级路由器的固件,但您为什么要使用 TFTP 这样做?
没有身份验证是我这样做的主要原因;它减少了打字次数,并且是一种非常简单的图像传输方式。您当然可以使用 scp 或 ftp。没有理由为此烦恼……那么如果有人嗅探我的 IOS 图像怎么办?
这是否意味着您无法确定所有数据(整个更新)都已到达目的地?
这是对TFTP的错误理解。 TFTP是一种可靠的传输协议,默认情况下每个 tftp 数据包都必须得到确认,这意味着它更慢,尤其是在 WAN 上(因为没有 TCP 窗口动态)。
一旦图像出现在路由器上,您应该始终对照 Cisco 网站上发布的那些来验证 IOS 校验和...
S01#verify /md5 flash:c3560-ipservicesk9-mz.122-58.SE2.bin
........................................................................................
........................................................................................
...........................................................
verify /md5 (flash:c3560-ipservicesk9-mz.122-58.SE2.bin) = bbddf83e7ee1023619630110b6b3a998
S01#
TFTP 使用 UDP 进行传输,正如您所指出的,它是一种无连接协议。FTP、SCP、HTTP 或其他传输方法通常使用 TCP。
UDP 需要较少的开销并且通常比 TCP 快。在传输过程中没有 TCP 确认或 TCP 窗口需要考虑。
一旦数据到达,通常还有其他方法来验证数据,通常是通过将计算出的哈希值与已知值进行比较。由于传输通常在您的控制下通过您自己的网络进行,这希望是可靠的,因此它们通常会很好。
此外,许多设备将允许您设置一个主映像和一个备份映像来启动,因此如果由于某种原因无法加载主映像,您可以将设备配置为从备份启动。
如果您使用的是不可靠的网络,通常可以使用另一个选项,例如 FTP。但是,您可能仍然希望使用任何可用的验证方法来确保数据完整性。