1

マルチキャスト データをリッスンする Java プログラムを使用している場合、着信データグラムの残りの TTL を確認するにはどうすればよいですか?

送信側のマルチキャスト ソケットに TTL を設定する方法は知っていますが、到着するパケットの残りの TTL を知りたいです。

4

3 に答える 3

1

raw ソケットで UDP データグラムを受信した場合は、TTL (または IP または UDP ヘッダーのその他のもの) を調べることができます。ただし、多くの落とし穴があります。

  • Raw Sockets は Java ネイティブではありません (ただし、少なくとも 1 つのマルチプラットフォームのサードパーティ製アドオンが利用可能です: http://www.savarese.org/software/rocksaw/index.html )。
  • ほとんどのオペレーティング システムでは、raw ソケットを使用するには root アクセス権または管理者権限が必要です。
  • UDPデータも使用したい場合は、フラグメント化されたデータグラムのチェックサムと再構築を自分で行う必要があります...さらに、フラグメント間で異なるTTLに遭遇する可能性があります(jambjoが言ったように)。
于 2009-11-17T20:51:04.287 に答える
1

到着しパケットは何ですか?データグラムまたは UDP パケットは、実際には複数の IP パケットに分割されている可能性があり、それらが異なる方法でルーティングされると、異なる TTL で到着します。どちらの場合でも (分割されているかどうかに関係なく)、Java は IP ヘッダーへのアクセスを提供しません。

于 2009-11-12T17:19:38.693 に答える
0

私は調べましたが (あなたもそうだったと思います)、これを行うための優れた Java API を見つけることができませんでした。

TTL は、IPv4 データグラムの 9 番目のバイトです。受信データグラムから DatagramPacket の 9 番目のバイトを出力するとどうなりますか? それはTTL値のように見えますか?または、IP データグラムのヘッダーは DatagramPacket では使用できず、IPv4 データグラムのデータ部分のみを使用できますか?

于 2009-11-12T17:00:30.010 に答える