PXE滚动块不会停止

时间:2014-05-24 22:16:33

标签: network-programming tftp

我正在使用自己的PXE服务器(因此我可以安装新的操作系统,我想轻松测试而无需查找和格式化USB)。我通过检查psychomario/PyPXE项目来表示,但很快就实现了我自己的TFTP服务器。我在我的笔记本电脑上再次测试了英特尔UNDI PXE-2.1I。

psychomario不支持的一件事是发送大文件(> 32M)。 RFC(13502347)不讨论应该如何完成,但显然我有两种选择。增加块大小的第一个选项不起作用,因为PXE客户端显然忽略了碎片化的IP数据包。

第二种选择是使用滚动块,即在到达结束时从头开始计数。客户端确认数据,但是当数据结束时,客户端开始为块0xffff发送ack(即使这不是最后一个块)。

我尝试关闭连接并为该块发送空数据包。第一个导致PXE出错,第二个导致PXE无限循环。

为了结束会话,我需要发送什么数据包来响应块0xffff的确认?

1 个答案:

答案 0 :(得分:2)

1)您的TFTP服务器应该真正实现块大小选项,否则您将被限制为512字节块。请参阅RFC 2348.可以始终避免碎片协商blksize,使整个数据包永远不会超过最小MTU(在典型的以太网环境中为1500)。

2)你必须实施TFTP"翻转&#34 ;;在发送并获取acked块#= 0xFFFF之后,您应该将下一个块作为块#= 0x0000发送,依此类推,直到完成传输。当您测试此功能时,请务必使用能够处理TFTP块翻转的TFTP客户端;几乎所有现有的PXE客户端都能很好地完成这项工作。

除了您编写自己的PXE服务器的学习经验外,请考虑您将遇到无数的问题。如果您需要获得快速结果,只需谷歌" pxe服务器"获取可立即使用的PXE服务器选项列表。