我一直听说数据“转换”为八位字节模式,它是如何发生的?
默认情况下“netascii”中的数据是?如果我在C中创建TFTP服务器,我的数据包/缓冲区变量是否必须正好是512字节?我的意思是有太多的函数允许我只使用任何变量的n个字节的512个字节,但对于tftp服务器,变量大小本身是否重要?
答案 0 :(得分:15)
在八位位组模式下,数据按原样传输和存储。在netascii模式中,行结尾在接收端被转换(如果需要)到它的首选行结尾(即Unix上的Newline)。没有默认值,因为模式字符串始终包含在ReadReQuest或WriteReQuest数据包中。
[edit]发送的每个数据包(除了最后一个)必须包含512个字节的数据。如果数据包包含较少(0..511),则表示文件末尾。 该协议旨在能够使用最少量的代码实现,因此预计使用固定大小的缓冲区。你可能想出一个更复杂的计划,但为什么呢?
RFC 1350 *定义协议。
[详细]
“巫师的学徒综合症”受到保护,只有在超时或收到 第一次 确认阻止时才发送下一个阻止(任何进一步的确认都是静默的忽略)。
RFC(参见第7节)在出错时需要ERROR数据包(包括格式错误的请求)。
* RFC =“征求意见”。 RFC 1350是TFTP协议的最新官方描述和标准。