2017-03-22 24 views
-9

我一直听说有关数据转换为八位字节模式的情况,它是如何发生的?TFTP中的八位字节模式是什么?

数据“netascii”默认情况下是?如果我在C中创建一个TFTP服务器,是否有必要使我的数据包/缓冲区变量恰好为512字节?我的意思是有很多函数允许我只使用任何变量的n个字节的512字节,但对于tftp服务器,变量大小本身很重要吗?

+0

此链接应该有助于您的问题。 [链接](https://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol) –

+7

为什么你修改你的问题添加垃圾邮件并删除所有问题内容? –

+4

事实上,这是你的问题并不意味着你有权删除重要的信息,并添加这样的垃圾 –

回答

14

在八位字节模式下,数据按原样传输和存储。在netascii模式下,在接收端将行结束符转换(如果需要)到其首选行结束符(即Unix上的Newline)。由于模式字符串始终包含在ReadReQuest或WriteReQuest数据包中,因此没有默认值。

每个发送的数据包(除了最后一个)都必须包含512个字节的数据。如果数据包包含较少(0..511),则表示文件结束。该协议被设计为能够以最少量的代码实现,因此预期使用固定大小的缓冲区。你可能会想出更复杂的方案,但为什么?

RFC 1350定义了协议。

[详细]

的“魔术新手症候群”是针对通过只发送在超时下一个块或在收到第一确认为一个块(任何进一步确认被默默地忽略)保护。

RFC(请参阅第7节)在出错时(包括格式错误的请求)需要一个ERROR包。

+0

否,如果您发送了DATA [n],那么您必须先前已收到ACK [n-1],因此忽略任何进一步的ACK [n-1](任何ACK [m],其中m

+0

不,您每次在没有ACK的情况下先前的DATA发送超时都会重新发送。所有你需要做的,以防止S.A.S.。忽略先前确认的数据的ACK。 –

相关问题