确定Java中的组播数据包的剩余TTL(Determine the remaining TTL of

2019-10-18 06:46发布

如果我有一个监听多播数据的Java程序,我怎么能知道哪些传入数据报的剩余TTL是什么?

我知道如何设置发送组播插座上的TTL,但我想知道到达分组的剩余TTL。

Answer 1:

如果您收到UDP数据报原始套接字你可以检查TTL(或其他任何在IP或UDP报头)。 有很多陷阱,虽然:

  • 原始套接字的非本地到Java(虽然至少一个多平台的第三方插件可用: http://www.savarese.org/software/rocksaw/index.html )。
  • 在大多数操作系统中,你必须有root权限或管理员权限才能使用原始套接字
  • 如果你想同时使用UDP数据,你就必须做校验和零散的数据报自己的重组......以及可能的片段中,遇到不同的TTL(如jambjo说的)。


Answer 2:

什么到达的数据包? 数据报或UDP数据包实际上可以被分成几个IP数据包,而如果他们被路由不同的不同的TTL到达。 在任一种情况下(分开或没有),Java不提供访问的IP报头。



Answer 3:

我看了看(如我想象你做也一样),但找不到这样做的一个很好的Java API。

该TTL是在IPv4数据报中的第9个字节整体。 什么从传入数据报的情况,如果你输出的DatagramPacket中的第9个字节? 这是否看起来像TTL值? 或者说,是从IP数据报头中的DatagramPacket不可用,只有IPv4数据的数据部分?



文章来源: Determine the remaining TTL of a multicast packet in Java