DNSで使用しているプロトコルを教えてください。 (83レス)
1-

12
(1): [age] 02/04/02 10:54 ID:??? AAS
>>10
手持ちのソケット本が出払ってた(Kよ返してくれ!)ので
ソケット関数で引けたかどうかは未確認……
引けないってことはないように思うんだが……

UDPで直接送受信する仕組みができてたら、DNSメッセージを
直接やりとりするのも可能か。
説明すると結構繁雑なので、オーム社「マスタリングTCP/IP 応用編」
の第15章5節を参照してください。
13
(1): 1 02/04/03 15:33 ID:AV3ZEb5C(1) AAS
>12
> オーム社「マスタリングTCP/IP 応用編」
かなり読んでます。ハイ。でも、意外と内容が薄い...。
RFCの日本語訳が見つからなかったので、英語をヒタスラ読んでますが。
DNSの応答処理が意外と面倒な事になってます。
14
(1): 02/04/03 15:43 ID:??? AAS
>>13
DNSの応答処理って
DNSから送られてきた応答パケット(とは限らないが)の
受信と解釈のことでしょうか。

オライリーのDNS&BINDの14章2節に、DNS問い合わせと
応答の解析を行うサンプルプログラム(C)が載ってたので
参考になるのでは。
俺はCはよく使わないのでよくわかりませんが(w
14.3にはPerlのNetオブジェクトを使った例もある。
15
(1):   02/04/04 11:38 ID:??? AAS
ここホントに初級ネット板か???
16:   02/04/07 04:35 ID:??? AAS
>>15
初級ネットは偽名じゃ。
名前のせいで勘違いして紛れ込んでくる初心者が多いのだが致し方ないことなのだ。
17
(1): 1 02/04/07 19:29 ID:RVpV9bj7(1) AAS
>>14
> 応答の解析を行うサンプルプログラム
そんなのが欲しいです...。
やっとこさ、IPまで辿り着ける状態になりましたです。

> Perl
は使った事が無いので、全くわかりません。
C/C++かアセンブラかVBしか出来ません。
18
(1): 02/04/08 11:26 ID:??? AAS
>>17 素直にオライリー買いましょう。\5000也。
19:   02/06/12 16:31 ID:??? AAS
>>18
第4版は5200円だね。
20: age2ch.pl 0.03.23 [age] 02/08/18 21:11 ID:??? AAS
>>1 itteyoshi
21: いえろ ◆bT6c9WIwLg 02/10/09 16:59 ID:??? AAS
誘導したのは良いが・・・ 結論が出てなかったのか!!

つーか 本買えで終わってるとは・・・
22: いえろ ◆bT6c9WIwLg 02/10/09 17:56 ID:??? AAS
なんか質問スレで呼ばれてる? まぁいいか。

RFCを読んでUDPでパケット投げてみました。
ものすごい勢いで誰かが質問に答えますPart30
2chスレ:hack
に記載されていたパケットダンプは一部分ですので問題の
個所は理解できません。
23: いえろ ◆bT6c9WIwLg 02/10/09 18:14 ID:??? AAS
とりあえず投げるパケットの組み立て。

問い合わせパケット

00 1F :データ長
--ここからヘッダ--
?? ?? :16ビットの適当なID(乱数でOK)
00 00 :QR=0 OPCODE=0 AA=0 TC=0 RD=0 RA=0 Z=0 RCODE=0
00 01 :質問の数(今回は1個なので1)
00 00 :回答の数=当然0
00 00 :NSレコードの数=0
00 00 :追加部の数=0
省8
24: いえろ ◆bT6c9WIwLg 02/10/09 18:37 ID:??? AAS
回答パケット(オフセットが重要なのでオフセット付きです)
※オフセットは10進数です

-002: 00 9E :データ長 (オフセットマイナスなので注意!)
--ここからヘッダ--
+000: ?? ?? :送ったID(一致を確認すること)
+002: ?? ?? :回答時のフラグ(サーバによって変わります)
+004: 00 01 :質問の数=質問パケットと一致
+006: 00 01 :回答の数=1個
+008: 00 02 :NSレコードの数=2
+010: 00 04 :追加部の数=4
省8
25
(1): いえろ ◆bT6c9WIwLg 02/10/09 18:37 ID:??? AAS
--ここから回答部--
+031: C0 0C :Name=Offset+0x0C(12)=0xC000+0x0Cの意味(圧縮)
+033: 00 0F :TYPE=15=MXレコード
+035: 00 01 :CLASS=1=IN=インターネット
+037: 00 01 48 23 :TTL=0x00014823
+041: 00 0A :リソースデータ長
--ここからリソースデータ--
+043: 05 6F 72 69 67 31 :ラベル長(05)と'orig1'のキャラクタ
+049: C0 0F : Offset+0x0F(15)(圧縮)
       ただし、これはヘッダからのオフセット
省1
26
(1): 02/10/09 18:50 ID:??? AAS
一生懸命回答書いてたら遅れを取った。
27
(1): いえろ ◆bT6c9WIwLg 02/10/09 18:59 ID:??? AAS
DNSの回答はいちいちFQDN返してると大変なので一部の文字列を
共有しています。(これをRFCでは圧縮と書いてるみたい)

上記例では +031に名前(ホスト名)を書いても良いのですが、ここに
記載されるべき名前はリソースデータの名前(MX問い合わせの回答)と
一致しますので「そこまでの相対アドレス」を書きます。
このように相対アドレスを書く場合は0xC000+ポインタ値を使います。
0xC0で大丈夫な理由は、1つのラベルは63文字以内と定められている
からです。
ポインタはこの値の次を0としますので31+12=43で+043からのラベルと
言うことになります。つまり'orig1'です。
省6
28: いえろ ◆bT6c9WIwLg 02/10/09 19:01 ID:??? AAS
>>26
(・∀・)ニヤニヤ あ〜良い所に・・・

>この様にラベルの最後にあるポインタは「前に定義されたラベル」への
>ポインタになります

この訳あってますかね・・・RFC1035だとちょろっとしか出てこないんです。
29: いえろ ◆bT6c9WIwLg 02/10/09 19:23 ID:??? AAS
>>25 しまった修正

--ここから回答部--
+031: C0 0C :Name=Offset+0x0C(12)=0xC000+0x0Cの意味(圧縮)
+033: 00 0F :TYPE=15=MXレコード
+035: 00 01 :CLASS=1=IN=インターネット
+037: 00 01 48 23 :TTL=0x00014823
+041: 00 0A :リソースデータ長
--ここからリソースデータ--
+043: 00 0A :Preference=10 ←追加
+045: 05 6F 72 69 67 31 :ラベル長(05)と'orig1'のキャラクタ
省3
30: いえろ ◆bT6c9WIwLg 02/10/09 19:24 ID:??? AAS
>27 修正(中央辺り)

ポインタはこの値の次を0としますので33+12=45で+043からのラベルと
言うことになります。つまり'orig1'です。
+045から始まるラベルの最後にさらにポインタ0x0Fが有ります。
31
(1): 02/10/09 19:40 ID:??? AAS
ちょっとポインタの扱い違うー

オフセット+031で書かれる「NAME」は、資源レコードの、
定義対象のレコード名。なのでこの場合は、 mc.kcom.ne.jp
が求められます。

それでオフセット値は12、これはヘッダ部のIDからのバイト数なので、
回答パケットのオフセット+012からの記述、つまり質問部で使った
mc.kcom.ne.jp を示しています。

また、資源レコードに関しては、まず5文字 'orig1'を記述した後、
オフセット値15を参照であるので、さっき使ったとこの、ちょっと後、
つまり質問部のkcom.ne.jpの部分を示していますね。
省1
1-
あと 52 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s