私は自分のPXEサーバーで作業しています(したがって、USBを見つけてフォーマットする必要なく、簡単にテストしたい新しいOSをインストールできました)。私は、 psychomario/PyPXEプロジェクトを調べて述べましたが、すぐに独自の TFTP サーバーを実装しました。ラップトップにある Intel UNDI PXE-2.1 に対してテストしています。
サイコマリオがサポートしていないことの 1 つは、大きなファイル (>32M) の送信です。RFC ( 1350、2347 ) は、それがどのように行われるべきかについて議論していませんが、明らかに 2 つのオプションがありました。ブロック サイズを増やす最初のオプションは機能しませんでした。これは、PXE クライアントが断片化された IP パケットを明らかに無視しているためです。
2 番目のオプションは、ローリング ブロックを使用することです。つまり、最後に到達したときに最初からカウントを開始します。クライアントはデータに確認応答しますが、データが終了すると、クライアントはブロック 0xffff の確認応答を送信し始めます (それが最後のブロックでなくても)。
接続を閉じて、そのブロックの空のデータ パケットを送信しようとしました。1 つ目は PXE でエラーが発生し、2 つ目は PXE で無限ループが発生しました。
セッションを終了するには、ブロック 0xffff の確認応答としてどのパケットを送信する必要がありますか?