"JSTUN" - Java Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translation (NAT)

来源:互联网 发布:粒子群算法工具箱下载 编辑:程序博客网 时间:2023/02/04 17:35

"JSTUN" - Java Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translation (NAT)

(by Thomas King - king[at]t-king.de - http://www.t-king.de)


What is "JSTUN"?

"JSTUN" is a Java-based STUN (Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translation (NAT)) implementation. STUN provides a mean for applications to discover the presence and type of firewalls or NATs between them and the public internet. Additionally, in presence of a NAT STUN can be used by applications to learn the public Internet Protocol (IP) address assigned to the NAT.

So far, most of the message headers and attributes as standardized in RFC 3489 are part of "JSTUN". The current "JSTUN" version also includes a STUN client and a STUN server. "JSTUN" is licensed unter GNU General Public License.


How does it work?

  1. STUN is described in RFC 3489.
  2. Just invoke "java -jar jstun-0.7.1.jar" or use the de.javawi.jstun.test.demo.DiscoveryTest and de.javawi.jstun.test.demo.BindingLifetimeTest classes.



Due to the lack of fully RFC compliant STUN servers I could not test the shared secret request / response functionality. Additionally, the message attribute username, password and message integrity are not tested for the same reason. The implementation of the message attribute message integrity is not completed, because I see no reason to add a cryptographic library as long as no public available STUN server supports message integrity.

The reality is not as dark as it might seem after reading the previous section. All tested STUN servers provided a minimal set of functionality that is required to discover firewalls and NATs.

If you found a bug or if you want to implement enhancements or additional functionalities please do not hesitate to contact me by email. A CVS account can be provided if required.


What do you need?

A Java 6 compliant Java Runtime Environment is required by "JSTUN".



Currently, the latest version of "JSTUN" is 0.7.1.

jar-File: jstun-0.7.1.jar

source-File: jstun-0.7.1.src.tar.gz




- complete message attribute message integrity

- verify all untested attributes and message types (already done)


Special thanks:

- Thomas Butter: He is my alpha geek hero! ;-)

- Jim Morris: Great beta tester! He owns a lot of different NATs. ;-) THANKS!

- Jasmin Meyer: Just a nice person.


Associated projects:

- LimeWire - Open Source P2P File Sharing

- University of Washington - Computer Science and Engineering - Introduction to Computer-Communication Networks

- Jive Software: Smack API

- Freecast - Peer-to-peer streaming

- STUN - Simple Traversal of UDP Through NATs - Ein Überblick über das Protokoll

- Astalavista Group Security Newsletter Issue 18

- IChessU - International Chess University


Come form: http://jstun.javawi.de/