Recently I discovered a rather strange behaviour with a Java web application running on some clients. I hope someone of you can help here.

The short version: Java Runtime 1.6 on Windows 7 and Windows XP machines is doing reverse DNS and NetBIOS queries for the configured proxy IP address when loading Java web applications. This may result in a timeout and thus the web application takes long time to load (40 seconds to 2 minutes against 10 seconds which is the regular case).

The following things happen. First there's a java applet is started within the launching page/tab, which means, the Java runtime environment (JRE) is started on the client. Once this is done, the applet opens some connection via the configured proxy towards the application server.

While this is done something interesting happens. The client performs some reverse DNS lookups for the proxy IP address. This can have two outcomes, referring to IPv4 IP addresses:

1st) In case there exists a reverse DNS entry for the proxy IP address the client immediately continues with loading the page
2nd) In case there doesn't exist a reverse DNS entry for the proxy IP address the DNS server answers with a "does not exist" message which is not the problem as it takes a few milliseconds. Directly afterwards the client tries to resolve the IP address name using NetBIOS name resolution. So it sends NBNS packets towards the proxy IP address. As you can imagine, there is no NetBIOS service running on the proxy and its response against the client is ICMP port unreacheable. After three tries the client will continue loading the web application. Each NBNS query takes around 5 seconds, summarizing to 15 seconds delay.

My questions to it are the following:

1) Why does the Java Runtime try to reverse lookup proxy ip at all?

2) If there does not exists a reverse DNS entry for a certain IP, why is there a failover to NetBIOS name resolution?

3) If the client sends a NBNS packet to the proxy server and gets a ICMP "Port unreachable" message back (within a few milliseconds), why does the client still waits 5 seconds for a response which will never come?

4) What happens if the NBNS query is dropped (e.g. by a firewall)? May this cause an even bigger delay?

5) Can those behaviours be configured on client side? Or is it dependent on the server web application?