【问题标题】:PXE Rolling Block Doesn't Stop [closed]PXE 滚动块不会停止 [关闭]
【发布时间】:2014-05-24 22:16:33
【问题描述】:

我正在使用自己的 PXE 服务器(因此我可以安装我想轻松测试的新操作系统,而无需查找和格式化 USB)。我已经通过检查psychomario/PyPXE 项目声明,但很快实现了我自己的 TFTP 服务器。我正在使用笔记本电脑上的 Intel UNDI PXE-2.1 对其进行测试。

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

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

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

我需要发送什么数据包来响应块 0xffff 的 ack 以结束会话?

【问题讨论】:

    标签: network-programming tftp


    【解决方案1】:

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

    2) 您必须实施 TFTP“翻转”;在发送并获得确认块 # = 0xFFFF 之后,您应该将下一个块作为块 # = 0x0000 发送,依此类推,直到您完成传输。当您测试此功能时,请务必使用能够处理 TFTP 块翻转的 TFTP 客户端;几乎当今所有可用的 PXE 客户端都能很好地做到这一点。

    除了您在编写自己的 PXE 服务器方面的学习经验之外,请考虑到您今后会遇到无数问题。如果您需要快速获得结果,只需在 Google 上搜索“pxe 服务器”即可获得可使用的 PXE 服务器选项列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      相关资源
      最近更新 更多