美文网首页
TFTP:简单文件传送协议

TFTP:简单文件传送协议

作者: 食梦狸猫 | 来源:发表于2019-05-16 12:06 被阅读0次

    TFTP是一个简单的协议,适合于只读存储器,仅用于无盘系统进行系统引导。为了保持简单和缩小,TFTP使用UDP。

    TFTP报文的格式

    11.38.29.png

    TFTP报文的头两个字节表示操作码。对于读与写请求,文件名字段说明客户端想要操作的在服务器上的那个文件。模式字段是一个ASCII码串netascii或octet,同样以0字节结束。

    在操作码为3时,这是数据分组。每个数据分组都包含一个块编号字段,需要在确认分组中使用。例如:当客户需要操作的在服务器上的文件能够被客户操作,那么TFTP服务器就返回一个块编号为1的数据分组,客户收到后发送一个块编号为1的ACK,之后TFTP服务器继续发送一个块编号为2的数据分组,客户收到后发送一个块编号为2的ACK......直到这个文件被传送完。

    除了最后一个数据分组不足512字节数据外,其他每个数据分组都含有512字节数据,当客户端收到不足512字节的数据分组后,就知道这是最后一个数据分组。

    这种类型的数据传输为停止等待协议。既然TFTP使用不可靠传输的UDP,那么TFTP就必须处理分组丢失和分组重复。分组丢失可通过发送方的超时重传机制解决。但如果双方都超时重传就会出现“魔术新手综合症(SAS)”的问题:

    SAS

    因为TFTP包含超时机制,它由一个计时器,如果预定时间到达但还是没有收到回复,那么它通常就会把原来的数据包再发送一次。
    但当一个数据包只是在网络传输中发生延迟,那么SAS就出现了。因为此时已经发生了超时,那么发送方会重新发送一个副本,但事实是第一个包并没有丢失而是延迟了,那么根据TFTP的规定:收到数据包都会强制性回复一个应答包。这时就会产生两个回复,这将导致发送端收到两个回复后,之后也将发送两份相同的数据包。而包数量的增加可能会造成阻塞,可能又会导致新的包的延迟,而这又会导致新一轮的包数量的加倍。

    安全性:

    因为TFTP分组不提供用户名和口令,因为这一个特性,被别人用来获取Unix口令文件的复制,然后来猜测用户口令。为了防止这一种访问,大多数TFTP服务器限制只能访问特定目录下的文件。

    相关文章

      网友评论

          本文标题:TFTP:简单文件传送协议

          本文链接:https://www.haomeiwen.com/subject/ucgbaqtx.html