DNSで使用しているプロトコルを教えてください。at HACK
DNSで使用しているプロトコルを教えてください。 - 暇つぶし2ch1:SAMCO
02/03/27 00:20 zfvFheF8
DNSを引くのに使用しているプロトコル(そこで流れている情報)について
知っている人がいれば教えていただけないでしょうか?

nslookup等で、
ls -d yahoo.co.jp
とかすると、yahoo.co.jp ドメインのすべてのアドレスが出てきますよね?
あれを、nslookupっていうコマンドを経由しないで使う方法はないでしょうか?
具体的には
telnet ??????? 53
としてどんなコマンドを打ち込めば目的のアドレスを知ることができるかが
知りたいです。

わかる人、書いてあるアドレス何でも結構です。教えてください


2: 
02/03/27 00:35
わからん。すまん。
ってかいま、誰もいないみたい。気長に待ってくれ。

3:1
02/03/27 00:38 sGBtlGBo
了解です。
自分で作ってる簡易SMTPサーバで必要なだけなので
気長に待つことにします。

4:いえろ
02/03/27 01:27
RFC883に書いてあったと思う。
所で自前で書いてるの?
簡単に正引き・逆引きできるコンポーネントないのかなぁ・・
いやOSが何で何使ってコード書いてるがわからんのだがw
(VBとかは勘弁してくれよ)


5:虎
02/03/27 02:43
ちょっと待て。
DNSで使ってるのはudpだぞ。
telnetで出せるのはtcpだ。
ついでに言うと、nslookup で、ls コマンドを使うと
流れるのは transfer 通常の名前引きは query
最近は特定のサーバにしかtransferを許さないのが普通。

あと、正引き、逆引きを簡単に行うなら、
socket の(windowsならwinsock)
gethostbyaddr, getaddrbyhost関数を使うのが
普通だぞ?

なんか知識が大幅にずれてないか? それでsmtpサーバ作る
つもりなのか?

6:1
02/03/27 15:27 kIWBEv4r
使ってるOSはWindows2000 Proで、VC6を使ってます。

最近はプロバイダのSMTPサーバが、自前のネットワークのみから
しか反応しないので、それの橋渡しをするSMTPサーバを
つくれないかな?と考えました。

メール送信部分は、相手のサーバを探して(ここがDNSのとこ)
コネクション張って、
HELO
MAIL FROM: ???
RCPT TO: ???
DATA
???
.

で送れたと思うのですが、名前を引くところに関しては
さっぱりわからなくて質問をしました。

7:ぱおぱお
02/03/28 04:44 wtogeemc
>5
別にTCPでもいいじゃん。
まー,コストの高いから普段使うのはイヤだけどね。

>1
DNSはASCIIベースのプロトコルじゃないので,普通にやるとtelnetじゃあ無理だ。
RFCを資料にするなら,RFC1035 引く方が良いぞ。
RFC883 では,肝心のMXについて触れられていない。

RFC調べたことなさそうだから,こういうのも教えてやろう。
URLリンク(www.csl.sony.co.jp)
一般的なプロトコルについては,まずSTDの一覧を探すのがいいぞ。

頑張れ。

8:1
02/03/28 21:44 TQLnYYGJ
>7
ありがとう御座います。出来ました。解決です。
あと、resolverで検索をしていたので見つからなかったみたいです。
素直にdomainで検索をすれば良かったです(DNSじゃ出てこないし)。

9:ぱおぱお
02/03/29 19:01 O6tCsMJO
残念。(>ε<)
Winsockにはresolverが実装されていない。

ところで,SMTPの方のエラー処理や再送は上手くいった?
なかなか繋がらんMXも多いからな。


10:1
02/03/30 01:32 n1+koA0a
>9
SMTPの方が先に組みあがっていたので、大丈夫です。
反応が遅いところもあるようですが、今のところ問題なしです。
遅いサーバーに対しては、1つのメールに対し複数のコネクションを張るようにしてあります。
これって、嫌がられそうだけど(笑。

>5
ふと思ったんですが、gethostbyaddr, getaddrbyhostでMX引けましたっけ?
単に25ポートで繋いでも無理だったので、不可能なような気が...。
もし引けるようでしたら、やり方を教えてください。お願いします。


11:虎
02/04/01 11:32
>>10 すこし時間をくだされ。知識の裏取っておく。

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

UDPで直接送受信する仕組みができてたら、DNSメッセージを
直接やりとりするのも可能か。
説明すると結構繁雑なので、オーム社「マスタリングTCP/IP 応用編」
の第15章5節を参照してください。

13:1
02/04/03 15:33 AV3ZEb5C
>12
> オーム社「マスタリングTCP/IP 応用編」
かなり読んでます。ハイ。でも、意外と内容が薄い...。
RFCの日本語訳が見つからなかったので、英語をヒタスラ読んでますが。
DNSの応答処理が意外と面倒な事になってます。

14:虎
02/04/03 15:43
>>13
DNSの応答処理って
DNSから送られてきた応答パケット(とは限らないが)の
受信と解釈のことでしょうか。

オライリーのDNS&BINDの14章2節に、DNS問い合わせと
応答の解析を行うサンプルプログラム(C)が載ってたので
参考になるのでは。
俺はCはよく使わないのでよくわかりませんが(w
14.3にはPerlのNetオブジェクトを使った例もある。


15: 
02/04/04 11:38
ここホントに初級ネット板か???

16: 
02/04/07 04:35
>>15
初級ネットは偽名じゃ。
名前のせいで勘違いして紛れ込んでくる初心者が多いのだが致し方ないことなのだ。

17:1
02/04/07 19:29 RVpV9bj7
>>14
> 応答の解析を行うサンプルプログラム
そんなのが欲しいです...。
やっとこさ、IPまで辿り着ける状態になりましたです。

> Perl
は使った事が無いので、全くわかりません。
C/C++かアセンブラかVBしか出来ません。

18:虎
02/04/08 11:26
>>17 素直にオライリー買いましょう。\5000也。

19: 
02/06/12 16:31
>>18
第4版は5200円だね。

20:age2ch.pl 0.03.23
02/08/18 21:11
>>1 itteyoshi

21:いえろ ◆bT6c9WIwLg
02/10/09 16:59
誘導したのは良いが・・・ 結論が出てなかったのか!!

つーか 本買えで終わってるとは・・・

22:いえろ ◆bT6c9WIwLg
02/10/09 17:56
なんか質問スレで呼ばれてる? まぁいいか。

RFCを読んでUDPでパケット投げてみました。
ものすごい勢いで誰かが質問に答えますPart30
スレリンク(hack板:991-992番)
に記載されていたパケットダンプは一部分ですので問題の
個所は理解できません。



23:いえろ ◆bT6c9WIwLg
02/10/09 18:14
とりあえず投げるパケットの組み立て。

問い合わせパケット

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
--ここから質問部-- 今回の内容は mc.kcom.ne.jp
02 6D 63 :ラベルの長さとmcのキャラコード
04 6B 63 6F 6D :ラベルの長さとkcomのキャラコード
02 6E 65 :ラベルの長さとneのキャラコード
02 6A 70 :ラベルの長さとjpのキャラコード
00 :ドメイン終了=ルートに辿り着いた事を表す
00 0F :MXを問い合わせてます(15)
00 01 :問い合わせクラス 01=IN=インターネット



24:いえろ ◆bT6c9WIwLg
02/10/09 18:37
回答パケット(オフセットが重要なのでオフセット付きです)
※オフセットは10進数です

-002: 00 9E :データ長 (オフセットマイナスなので注意!)
--ここからヘッダ--
+000: ?? ?? :送ったID(一致を確認すること)
+002: ?? ?? :回答時のフラグ(サーバによって変わります)
+004: 00 01 :質問の数=質問パケットと一致
+006: 00 01 :回答の数=1個
+008: 00 02 :NSレコードの数=2
+010: 00 04 :追加部の数=4
--ここから質問部のコピー--
+012: 02 6D 63 :ラベルの長さとmcのキャラコード
+015: 04 6B 63 6F 6D :ラベルの長さとkcomのキャラコード
+020: 02 6E 65 :ラベルの長さとneのキャラコード
+023: 02 6A 70 :ラベルの長さとjpのキャラコード
+026: 00 :ドメイン終了=ルートに辿り着いた事を表す
+027: 00 0F :MXを問い合わせてます(15)
+029: 00 01 :問い合わせクラス 01=IN=インターネット


25:いえろ ◆bT6c9WIwLg
02/10/09 18:37
--ここから回答部--
+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)(圧縮)
       ただし、これはヘッダからのオフセット

↓これ以降NSレコードと追加部が続く


26:虎
02/10/09 18:50
一生懸命回答書いてたら遅れを取った。

27:いえろ ◆bT6c9WIwLg
02/10/09 18:59
DNSの回答はいちいちFQDN返してると大変なので一部の文字列を
共有しています。(これをRFCでは圧縮と書いてるみたい)

上記例では +031に名前(ホスト名)を書いても良いのですが、ここに
記載されるべき名前はリソースデータの名前(MX問い合わせの回答)と
一致しますので「そこまでの相対アドレス」を書きます。
このように相対アドレスを書く場合は0xC000+ポインタ値を使います。
0xC0で大丈夫な理由は、1つのラベルは63文字以内と定められている
からです。
ポインタはこの値の次を0としますので31+12=43で+043からのラベルと
言うことになります。つまり'orig1'です。
+043から始まるラベルの最後にさらにポインタ0x0Fが有ります。
この様にラベルの最後にあるポインタは「前に定義されたラベル」への
ポインタになります。つまり+015から始まるラベル'kcom.ne.jp'です。
+015から始まるラベルは最後がルートで終わってますので連結は終了です。
これでFQDNである'orig1.kcom.ne.jp'を表しています。
+043からも同じ方法で、NSレコードも全く同じ方法です。


28:いえろ ◆bT6c9WIwLg
02/10/09 19:01
>>26
(・∀・)ニヤニヤ あ~良い所に・・・

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

この訳あってますかね・・・RFC1035だとちょろっとしか出てこないんです。


29:いえろ ◆bT6c9WIwLg
02/10/09 19:23
>>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'のキャラクタ
+051: C0 0F : Offset+0x0F(15)(圧縮)
       ただし、これはヘッダからのオフセット

↓これ以降NSレコードと追加部が続く


30:いえろ ◆bT6c9WIwLg
02/10/09 19:24
>27 修正(中央辺り)

ポインタはこの値の次を0としますので33+12=45で+043からのラベルと
言うことになります。つまり'orig1'です。
+045から始まるラベルの最後にさらにポインタ0x0Fが有ります。


31:虎
02/10/09 19:40
ちょっとポインタの扱い違うー

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

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

また、資源レコードに関しては、まず5文字 'orig1'を記述した後、
オフセット値15を参照であるので、さっき使ったとこの、ちょっと後、
つまり質問部のkcom.ne.jpの部分を示していますね。

オフセットは相対アドレス指定ではなくて絶対アドレス指定ですよん。



32:虎
02/10/09 19:43
追記

mc.kcom.ne.jp. 82884 IN MX 10 orig1.kcom.ne.jp.
というレコードの内容がすっかり回答部にあるわけです。


33:いえろ ◆bT6c9WIwLg
02/10/09 19:55
>>31
あ~やっぱ そうなんですか。帰りながらもしやと思ってました。

RFCに書いてあった相対パターンはいったい何なんだ?


34:虎
02/10/09 20:25
>>33

>RFCに書いてあった相対パターンはいったい何なんだ?

え?

差し支えなければ引用あるいはポイントを…


35:いえろ ◆bT6c9WIwLg
02/10/09 20:32
ここです
4.1.4. Message compression
最後
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
40 | 3 | F |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
42 | O | O |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
44 | 1 1| 20 |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
64 | 1 1| 26 |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
92 | 0 | |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

The domain name for F.ISI.ARPA is shown at offset 20. The domain name
FOO.F.ISI.ARPA is shown at offset 40; this definition uses a pointer to
concatenate a label for FOO to the previously defined F.ISI.ARPA. The
domain name ARPA is defined at offset 64 using a pointer to the ARPA
component of the name F.ISI.ARPA at 20; note that this pointer relies on
ARPA being the last label in the string at 20. The root domain name is
defined by a single octet of zeros at 92; the root domain name has no
labels.


36:いえろ ◆bT6c9WIwLg
02/10/09 20:35
この最後の、
The root domain name isdefined by a single octet of zeros at 92;
the root domain name has no labels.

オフセット64にフラグ11と26が書いてあり、その先がオフセット92見たいなんです。
これを読んだもんですから、ラベル無し=相対なんじゃないかな?と・・・
でも設定の意味からすると虎さんのが合ってますよね・・・


37:虎
02/10/09 20:46
F.ISI.ARPA のドメインネームは、オフセット20に示されている。

ドメインネーム FOO.F.ISI.ARPA は、オフセット40で示されている。
この定義では、ラベル「FOO」に続けて、以前に定義された F.FOO.ISI.ARPA
へのポインタを結合している。

オフセット64で定義されているドメイン名 ARPA は、オフセット20にて
既に定義されている F.ISI.ARPAの構成要素へのポインタを利用して定義
されている。
-注) この ARPA を示すポインタは、オフセット20からの文字列の最後のラベル
である

ルートドメイン名は、1オクテットの0でオフセット92で定義されている。
ルートドメイン名は、ラベルを持たない。

てな感じなので、やはし相対指定ではないっすね

オフセット44に、20とか書いてあって、またオフセット64を
例に出してるから解りにくくなるんだなこれは。

日本語変なのはご容赦

38:虎
02/10/09 20:48
ここで言うルートドメインてのは
末尾の「.」ですね。

39:いえろ ◆bT6c9WIwLg
02/10/09 20:55
あ、続きの説明じゃなかったのか!! つーかオフセット戻せよ~

了解です。

末尾の.はその昔「いえろ」じゃなかった頃かなった頃
ココで質問したけど答えてもらえなかったなぁ~(笑


40:虎
02/10/10 11:55
オフセット20からの記述は、このような感じだろうな

+0020:01 'F'
+0022:03 'ISI'
+0026:04 'ARPA'
+0031:00

さてと、オフセット44だの64だのでは、事前に定義されてる
ドメイン名を使って、ドメイン名を圧縮してあるわけだけれど、
オフセット92では、ルートを再定義している。
理屈に合わないわけじゃないよ。
ポインタは2オクテット、ルート定義は1オクテットで済むから
ルートに関しては再定義したほうが低コストなのだ。

ところでこのスレッド一回あげとく?

41:いえろ ◆bT6c9WIwLg
02/10/10 13:35
あ゙。わかった・・・
F.ISI.ARPA.
FOO.F.ISI.ARPA.
ARPA.
.
の例だったのか・・・
オフセット64の値が26。オフセット64で2オクテット使ってるから66
66+26=92!! ぴったり92だったんですよ・・・
この例がオフセット96とかだったら勘違いしなかったかも(汗

あ、上げてなかったですね。上げますか。

42:虎
02/10/10 15:01
元質問者にはこのスレッドを読んでもらえたのだろうか…

43:いえろ ◆bT6c9WIwLg
02/10/10 15:10
掲示板はTCPじゃなっくって UDPみたいな物なので
気にしないのが一番かと・・・


44:虎
02/10/10 18:42
ICMPだってECHOを返すというのに!(w

45:いえろ ◆bT6c9WIwLg
02/10/11 07:28
TTLが2とか3だったので届かなかったんでしょう・・・苦笑

46:?
03/03/31 22:30 XktnhCYQ
ssdpってどんなプロトコルですか?
初心者なので簡単にお願いします。

47:age2ch
03/05/27 23:53
>>1
黙れヴァカ

48:_
03/06/10 09:38 2YdiHJDm
だうりゃっ

49:(・∀・)
03/10/08 20:37
プロトコルってトルコ風呂に似てるね。(・∀・)

50:61
03/11/12 03:18 w5CLkmfr
Ehternet、IP、HTTPなど、さまざまなプロトコルがありますが、
これらをOSI基本参照モデル7階層(あぷせとねでぶ)に分けろ、といわれると
わかりません。どう覚えれば・・・・。
聞くとこはここじゃないよ、という場合言ってください。

51:_
03/11/13 00:20
>>61
Ehernet・・・

52:(▼▼メ)
03/11/25 00:05
OSIはくわしくしらないけど、、、
TCP/IPではレイヤ1~4と7しか使ってないよ。。
一般的には、
レイヤ7:HTTP、FTP、TELNET等々
レイヤ4:UDP、TCP、ICMP
レイヤ3:IP
レイヤ2:DLC(ethernet)
レイヤ1:UTPケーブル等規定
こんな感じで。。実際に見て覚えるが早いとおもうけど
フリーのetherealとかでキャプチャしてみれば?


53:_
03/12/28 03:46
そもそもTCP/IPはOSI参照モデルに準拠して実装されたわけじゃないが。と思うがな。


54:s
04/02/22 10:17
テスト

55:mo-
05/01/04 00:37:31
トテリス

56: ◆0794JTY0ds
05/01/12 18:09:16
てす

57:困っています
05/01/25 02:33:58 gPfqaEQu
今ネットをやっていたら急にすべてのページが表示できなくなりました、誰か助けてください!お願いします。ビッグローブです、ルーター、ADSLモデム装備です

58:kp
05/09/26 18:42:05 j5U+q5K5
DNSサーバーってJavaでプログラミングできますか?

59:ghq
07/11/11 14:44:11 pvu6Erjx
このソフトでIPアドレスを隠すことは出来ますか?

URLリンク(www.rikisoft.net)

できれば迷惑メールのプロパティから
DNSサーバーのアドレスを使用できるものでいくつか教えてください。
どうかよろしくお願いします。

60:名無しさん@お腹いっぱい.
07/11/11 21:50:21
日本語で聞け

61:名無しさん@いたづらはいやづら
07/11/13 17:44:20
まだあったの?このスレッド

62:DNS逆引き
08/01/12 03:20:57
「Reverse IP」というDNS逆引きサービスをWebアプリで作ってみたいです。

Reverse IP
URLリンク(www.domaintools.com)

どうしてかと言うと、レンタルサーバ(XREA等)でアカウントを取るとき、どのサーバがすいているか調べるためです。
バーチャルドメインを使っているレンタルサーバは、1つのIPアドレス(サーバ)に複数のドメイン名がひも付けされています。
URLリンク(www.value-domain.com)

IPアドレスを1個1個手入力して調べるのは大変だと思いました。
PHPでDNS逆引きのWEBアプリを作ろうとしたら、gethostbyaddr()という関数では思ったような結果が得られませんでした。
URLリンク(jp2.php.net)

Reverse IPで「210.172.108.229」を検索すると
URLリンク(www.domaintools.com)
のように
There are 611 domains hosted on this IP address.
=611個のドメイン名が対応していると表示されますが、

PHPで
<?php
$ip = "210.172.108.229";
$hostname = gethostbyaddr($ip);
echo $hostname;
?>
というスクリプトを実行すると、
s250.xrea.com
しか表示されません。
これはDNSが1個しかホスト名を返していないのかもしれませんが、なぜReverse IPでは611個という数字が返されるのか仕組みがわかりません。

どうやったらReverse IPと同じようにバーチャルドメインの数を調べるスクリプトが作れるでしょうか?


63:名無しさん@いたづらはいやづら
08/01/12 03:26:03
まだあったの?このスレッド

64:じゃm
08/06/03 01:17:47 spqELczJ

経路制御プロトコルを開発する場合,どのようなプロトコルを開発しますか?あなたが最も良いと考えるパケットの配送経路について説明し,その様な経路を設定するためにはどうすればよいかを説明しなさい.


65:名無しさん@いたづらはいやづら
08/06/03 02:05:22
糞スレ上げんな

66:名無しさん@いたづらはいやづら
09/02/25 11:53:41
>>1
ここで質問してみたら?

DNS (Domain Name System) 総合
スレリンク(network板)l50


67:名無しさん@いたづらはいやづら
09/02/25 17:31:11
nslookup


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch