- - PR -
MTU, RWIN 値の取得
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-11-21 23:03
Master of IP Network の皆様、初めまして。
いつもは Java Solution の方でお世話になっています、アレクと申します。 どうぞ、よろしくお願い致します。 皆さんは、MTU や RWIN 値をどのようにして取得しておられるのでしょうか? 今回、クライアントからの依頼で、この二つの値をサーバ側から取得する 必要があるのですが、この分野は経験がないためどうすればよいのか分かりません。 それで、専門家の皆様のご意見を伺いたいと思い、書き込みさせて頂きました。 MTU 値に関しては、一般的に ping コマンドを使用して取得されることが多い と思うのですが、このコマンドでサーバ側から、ユーザ個人や、各プロバイダ の MTU 設定値を知ることは可能でしょうか? また、もっとよい方法などがありましたら教えていただけないでしょうか。 それでは、よろしくお願い致します。 | ||||||||
|
投稿日時: 2002-11-24 12:34
専門家ではないですが。
> 今回、クライアントからの依頼で、この二つの値をサーバ側から取得する > 必要があるのですが、この分野は経験がないためどうすればよいのか分かりません。 サーバ側からどこのMTUだのRWINだのを見たいのでしょう? というか、そんなものが欲しい理由がわかりません。 これらの値はそれぞれの端末固有のものだと思いますし、影響範囲はせいぜい同じセグメントないではないでしょうか? (ちゃんと調べてはいないので間違っていたらフォローをお願いします) > MTU 値に関しては、一般的に ping コマンドを使用して取得されることが多い > と思うのですが、このコマンドでサーバ側から、ユーザ個人や、各プロバイダ > の MTU 設定値を知ることは可能でしょうか? 先にも書いたように影響範囲がローカルなのですから、遠く離れたネットワーク機器の情報を取ろうと思っても無理ではないかと。 隣の機器の設定値が変更可能なものであれば、機器(PCも含みます)ごとに操作手順があるでしょうが、これはマニュアルに当たってみるしかないでしょう。 pingで調べてるのは送出されるパケットが分割されるかどうかの閾値を手探りしているわけで、PCから中継点までの間でしか意味はないと思いますよ。 | ||||||||
|
投稿日時: 2002-11-25 14:43
-----以下引用-----
MTU 値に関しては、一般的に ping コマンドを使用して取得されることが多い と思うのですが、このコマンドでサーバ側から、ユーザ個人や、各プロバイダ の MTU 設定値を知ることは可能でしょうか? -----ここまで----- サーバーサイドアプリでクライアント端末のMTUを知りたいということでよろしいですか? クライアント側からpingを実行させて計測したとしても、 まりりさんの言うとおり、そのクライアントから最初の中継点(=ルーター)でフラグメントが 起きるかどうかの閾値を計測することしかできませんよ。 むやみやたらにICMPで他人のホストにパケットを送ることはあまり良いことではないですし、 経路途中のネットワークによってはICMPを禁止している場合もあります。 計測対象であるクライアント(Windows限定)のレジストリを参照できるなら、 確かレジストリに設定値があったような気もしますが・・。 クライアント固有(それも自由に変更できてしまうものを)の設定値をサーバから取得する理由が 私にも良く分かりません。 それから、JAVAのフォーラムにも同様の投稿をなさってますよね。 8件も返答をもらっているのに、こちらに再度投稿するのは返答している人に失礼な気がします。 ご注意を。 | ||||||||
|
投稿日時: 2002-11-27 18:37
まりりさん、niqsam さん、どうもありがとうございます。
お返事が遅くなってしまい、誠に申し訳ありません。 色々なご意見ありがとうございます。 サーバ側で、MTU 値を取得する理由は、次のようなことを行いたいからです。 ユーザが自分の PC の MTU,RWIN 値の設定値を知りたい時、 サイトにアクセスし、計測ボタンか何かを押すと、 サーバ側から何らかの方法で、そのユーザの設定値や、 ユーザが使用しているプロバイダの設定値を取得し、 その結果を表示するというものです。 たぶん、このサイトのようなことを実現したいのかと・・・。 http://forums.speedguide.net/cgi-bin/optd/optd.cgi これって、どうやって、やってるのかな〜? どう思われます?
すみませんでした。 ただ、話が ping など Java とは関係のない話になってきたので、 専門の掲示板で質問した方が良いかと思った次第です。 以後、気を付けます。 | ||||||||
|
投稿日時: 2002-11-29 16:57
推測でしかありませんが。。
通常TCP通信は通信を開始する際お互いのMSS値を通知します。 そして低い方のMSS値にあわせて通信を行います。 MSS値=MTU-40(IPヘッダーなどのサイズ)なので、 MSSをJAVAで取得できれば、MTUが逆算できるのではないでしょうか。 JAVAに詳しいわけではないので、あくまでご参考までに。 複数箇所投稿の件ですが、 マルチポストだと勘違いされかねないので控えられた方が良いのでは、 と思ったので申し上げました。 | ||||||||
|
投稿日時: 2002-11-30 02:40
niqsam さん、ありがとうございます。
なるほど、なるほど。 確かに、私もそうかなと思いました。 ただ、私も TCP/IP の方はあまり詳しくないので、よく分からないのですが、 http://www.atmarkit.co.jp/fnetwork/netcom/netcom02/netcom01.html に、
と、書いてあったので、標準じゃない時ってどんな時だ? と、悩んでしまいました。 これって、どういう意味なんでしょうか? MSS 値に関しては、Java で取得出来るかどうかはまだ分からないのですが、 C++(MFC) に、MSS を取得することの出来るクラスがあるので、 もし Java で取得出来なければ、Java から C++ を呼び出して、 使用してみようかと思います。 | ||||||||
|
投稿日時: 2002-11-30 13:20
「標準時」とは、TCP ヘッダおよび IP ヘッダの "Options" フィールドが 使われていない時を言います。 TCP の Options フィールドについては RFC793、RFC1146、RFC1323、 RFC1644、RFC1693、RFC2018、RFC2385 で規定されています。ただ、 オプションが追加されたとしても必ず 4 バイト単位になるように 調整されるので、計算は楽です。 IP の Options フィールドは現在ではほとんど使われてないです。 これは IP 開発時に実験的に使われてたものですので。 以上、お役に立つことができれば何よりです。 [ メッセージ編集済み 編集者: むー 編集日時 2002-11-30 13:26 ] | ||||||||
|
投稿日時: 2002-12-01 01:01
むーさん、有用な情報ありがとうございます。 ふむふむ。 と言うことは、ほとんどの場合「標準」であると言うことですね。 であれば、 MSS 値を利用して計算するのがベストかもしれませんね。 とても助かりました。 どうもありがとうございます。 |
1