1

ネームサーバーから 512 バイトより長い応答を受け取りました。その応答には、いくつかのオフセットがあります。応答の先頭からのオフセットは問題ありませんが、512 バイトを超えるとオフセットが変化し、機能しなくなります。

c0 0c= 最初からバイト 12 (魅力のように動作)

私はオフセットを持っています:c1 f0つまり、(これまでの私の知識では)

c1= 1 × 512 = 512
f0= 240

c1 f0= バイト 512 からバイト 240 == バイト 752

私のオフセットは、バイト 752 にあるはずの名前の先頭を指す必要がありますが、バイト 752 には名前がありません。

512
バイト以降のオフセットはどのように機能しますか?

4

1 に答える 1

0

相対参照です。相対参照であることを示すために、最初の 2 ビットは「予約」されています。最大 14 ビットを参照できます。上位 2 ビットを含む 2 バイトが予約されています。C0 01 は基準オフセット 1 です。したがって、常に C0 である必要はありません。C1、C2、C3、C4、CF などの場合もあります。実際には、非常に複雑で長時間実行されるクエリがない限り、これはかなりまれです。3000バイト以上のクエリがあります:)

C1 =11000001
上位 2 ビットを削除:000001
数値 =1

のオフセットC1 F0はの1 x 256 + 240 = 496
オフセットC9 9F9 x 256 + 159 = 2463

1バイトには、使用される512ではなく、256の組み合わせがあります:S
の最大値C0C0 FF255です。その後C1 00開始します

この説明のクレジットはhttp://www.helpmij.nl/forum/member.php/215405-wampierにあります

于 2012-12-20T13:32:02.487 に答える