Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

パケットが教えてくれた ルートサーバが 13個の理由

3,231 views

Published on

パケットが教えてくれた ルートサーバが 13個の理由
夏のDNS祭り 2014

Published in: Technology
  • Be the first to comment

パケットが教えてくれた ルートサーバが 13個の理由

  1. 1. パケットが教えてくれた ルートサーバが 13個の理由 2014/07/05 @twovs
  2. 2. about me • @twovs • ネコ2人+奥さん1人+可愛い娘 • 無線LAN装置の開発(1999~2004)• 無線LAN装置の開発(1999~2004) • オンラインゲームのシステム管理者(2004~) • ただし,ゲームには全く興味無し • ZFS 最高 !!!
  3. 3. 13個の理由 • RFC 1035 では UDP の最大サイズは 512[Byte] • Authority と Additional のペアが 512[Byte] に収まるのは 13セットだからに収まるのは 13セットだから
  4. 4. 参考> DNS ルートサーバ https://www.nic.ad.jp/ja/newsletter/No45/NL45_0800.pdf
  5. 5. 493[Byte]
  6. 6. 数えてみる
  7. 7. RFC1035 4.1.3. Resouce record format 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | / / / NAME / xx[Byte] 数えてみる / NAME / xx[Byte] | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | TYPE | 2[Byte] +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | CLASS | 2[Byte] +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | TTL | 4[Byte] | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | RDLENGTH | 2[Byte] +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| / RDATA / xx[byte] / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  8. 8. AUTHORITY SECTION(1of13) NAME 1 . TYPE 2 NS CLASS 2 IN TTL 4 (snip)TTL 4 (snip) RDLENGTH 2 (snip) RDATA 20 a.root-serverse.net. total 31 31 x 13 = 403[Byte]
  9. 9. NAME 20 a.root-serverse.net. TYPE 2 NS CLASS 2 IN TTL 4 (snip) ADDITIONAL SECTION(1of13) TTL 4 (snip) RDLENGTH 2 (snip) RDATA 4 198.41.0.4 total 34 34 x 13 = 442[Byte]
  10. 10. 数えてみたら 13個も入らないんじゃね???
  11. 11. I can compress RRs a little. ワタシハ アッシュク チョットデキル
  12. 12. RFC1035 4.1.4. Message compression The pointer takes the form of a two octet sequence: +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | 1 1| OFFSET | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ The first two bits are ones. This allows a pointer to be distinguished from a label, since the label must begin with two zero bits becausefrom a label, since the label must begin with two zero bits because labels are restricted to 63 octets or less. (The 10 and 01 combinations are reserved for future use.) The OFFSET field specifies an offset from the start of the message (i.e., the first octet of the ID field in the domain header). A zero offset specifies the first byte of the ID field, etc.
  13. 13. The pointer takes the form of a two octet sequence: +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | 1 1| OFFSET | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 最初の 2bit が '11' (10 と 01 は予約済) RFC1035 4.1.4. Message compression 最初の 2bit が '11' (10 と 01 は予約済) OFFSET はメッセージの先頭からのオフセット ラベルは 63 octets 以下なので 圧縮されていないラベルの上位 2bitは ‘00’
  14. 14. ドメイン名の内部表現 • ラベルはオクテットの長さと文字列 • ドメイン名はラベルを連結したもの • root-servers.net.• root-servers.net. • 0x0c root-servers 0x03 net 0x00 • 0x0c726f6f742d73657276657273036e657400 12(0x0c)文字 3文字 0文字
  15. 15. 例1) Authoritative 1つ目 0xc01c の 2バイトで 「a.root-servers.net.」「a.root-servers.net.」 を表現してる
  16. 16. 0xc01c --> 0x001c == 28
  17. 17. OFFSET=0 OFFSET=28 0xc01c --> 0x001c == 28
  18. 18. OFFSET=0 OFFSET=28 a.root-servers.net. 0xc01c --> 0x001c == 28
  19. 19. 例2) Additional 1つ目 0xc074 の 2バイトで 「b.root-servers.net.」「b.root-servers.net.」 を表現してる
  20. 20. 0xc074 --> 0x0074 == 116
  21. 21. OFFSET=116 OFFSET=0 0xc074 --> 0x0074 == 116
  22. 22. OFFSET=116 OFFSET=0 0xc074 --> 0x0074 == 116 0x62 => ‘b’ root-servers.net.
  23. 23. Message compression して 512[Byte] に収まるのが 13個 13個の理由 512[Byte] に収まるのが 13個
  24. 24. もっと短くできる???
  25. 25. もっと短くできる??? • MNAME a.root-serverse.net. -> a.jp. (20 -> 6[Byte]) • RNAME: nstld.verisign-grs.com. -> a.jp. (24 -> 2[Byte] 圧縮して 2[Byte]に
  26. 26. もっと短くできる??? a.root-servers.net. から m.root-servers.net. の 13個でなく a.jp. から n.jp. の 14個に増やせるんじゃね?
  27. 27. もっと短くできた!!! BIND と NSD で設定してみた $ dig +norec . SOA @157.7.234.67$ dig +norec . SOA @157.7.234.67 $ dig +norec . SOA ¥ @2400:8500:1301:813:a157:7:234:670
  28. 28. 14個目の ルートサーバルートサーバ
  29. 29. 14個目の ルートサーバ 512[Byte] 以下
  30. 30. がんばれば 14個も行けるぜ!!!14個も行けるぜ!!!
  31. 31. ENDEND

×