- PR -

MTU, RWIN 等のパケット通信の値を取得するには?

投稿者投稿内容
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-11-19 23:00
いつもお世話になっております。
アレクでございます。

Java でパケット通信関連の値を得るにはどうすればいいのでしょうか。

MTU や RWIN の値を Java で取得したいと思い、検索をかけてみたのですが、実際的な方法は出てきませんでした。

もしかして、Java じゃ無理!?
むむっ、そんなわけないはずじゃ。

しかしどうすればいいんだろう。

たびたび申し訳ありませんが、どなたかご教授いただけないでしょうか?
yu
ベテラン
会議室デビュー日: 2002/09/29
投稿数: 58
お住まい・勤務地: 東京
投稿日時: 2002-11-20 01:50
そんなことって出来るんですか?出来たらびっくり。
「ネイティブで記述する」っていう落ちだと思うんですが…
そうでもないのかなぁ。
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-11-20 17:41
う〜ん。やっぱり難しいのかな〜?

具体的には、ユーザがサイト上であるボタンを押すと、
そのユーザの MTU, RWIN 値を取得し、
それをそのまま、サイト上で表示するというものを作りたいのですが・・・。

Java 以外でもどんな方法でも良いのですが、これって可能でしょうか?
(ネイティブはちょっと無理・・・
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-11-20 20:48
難しい云々ではなくて、JDK の API と JVM のスペックを見て、そいういう方法がなければない、というだけです。
探してませんが、ないでしょうね。そんな raw な部分を隠したいがための Java なんですから。

そもそも、それはユーザのマシン上でなんらかの(OS に依存する)コマンドを実行、もしくは OS 依存の情報を取得しなければなりませんから、そういうことのできる方法、ActiveX のようなものなりを使うべきです。

# .NET だったらできたりするのかしらん。
yu
ベテラン
会議室デビュー日: 2002/09/29
投稿数: 58
お住まい・勤務地: 東京
投稿日時: 2002-11-21 13:33
Socket.getReceiveBufferSize() は MTU と同一の値を返すのでしょうか?
あと、InputStream.read(byte[]) を使い、実際に何バイト読めたかで、
MTU の値を逆算できるのではないでしょうか。

RWIN はどうやるのだろう...
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-11-21 22:50
yu さん、ありがとうございます。

引用:

Socket.getReceiveBufferSize() は MTU と同一の値を返すのでしょうか?
あと、InputStream.read(byte[]) を使い、実際に何バイト読めたかで、
MTU の値を逆算できるのではないでしょうか。

RWIN はどうやるのだろう...




この分野に関しては経験がないので全くよく分からないのですが、Socket.getReceiveBufferSize() は RWIN 値を返すのではないでしょうか?

違うのかな?よく分からん。

MTU 値に関しては、InputStream.read(byte[]) で逆算ということでしたが、
具体的にどうすればいいのでしょうか?

また、MTU 値は ping -f -l バイト数 コマンドで、
Packet needs to be fragmented but DF set エラーが出るまで
バイト数を上げていくことによって、取得できるようですが、
これって、ユーザ個人の MTU 値の設定とプロバイダの設定値を
両方とも取得することが出来るのでしょうか?

MyTime
ベテラン
会議室デビュー日: 2002/01/03
投稿数: 83
投稿日時: 2002-11-23 01:24
 Socket.getReceiveBufferSize() は RWIN 値というよりも、ソケットI/Oが使用しているバッファのサイズが返されるだけで、windowサイズが返されるわけではないと思います。Linuxならnet.core.optmem_maxで最大値が規定さているソケットI/Oインタフェースに対するメッセージの補助バッファのサイズが返されるだけではないでしょうか? 多分、10KBぐらいの値が返されるのではないかと予想するのですが・・・。
 
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-11-23 12:28
引用:

 Socket.getReceiveBufferSize() は RWIN 値というよりも、ソケットI/Oが使用しているバッファのサイズが返されるだけで、windowサイズが返されるわけではないと思います。Linuxならnet.core.optmem_maxで最大値が規定さているソケットI/Oインタフェースに対するメッセージの補助バッファのサイズが返されるだけではないでしょうか? 多分、10KBぐらいの値が返されるのではないかと予想するのですが・・・。
 



MyTime さん、ありがとうございます。

私は、windows2000 で実験したのですが、8192 という値が返ってきます。
RWIN 値は Win95/98/98SE/NT では、デフォルトで 8192(Bytes)となっている
と書いてあったので、てっきり RWIN 値を取得できたものと思っていました。
やっぱり違うんですかね?

また、RWIN 値を取得する際にはどうすればよいのでしょうか?

スキルアップ/キャリアアップ(JOB@IT)