www.donaldlee.net

   Copyright © 2005, Donald Lee

IP 2 Location

Background

There are several techniques I can use to determine your geographical location, but the most accurate is an IP to Geo map. This web server inspects your IP address and invokes a C# call into a highly structured data file to lookup your geographical location. This method is several orders of magnitude faster than even the fastest database queries due to the low overhead.

When determining a client's IP address, there are three possible values that are located in each HTTP Host Header. Ideally they would all be the same but browsers, firewalls, NAT's, and proxy servers can modify Host Headers. I wrote a special function that determines the header that will produce the most accurate results. Accuracy is better than 97%.

Your IP and Geographical Location

You are located in
United States
I used IP address
38.103.63.62
Your Host Headers
HTTP-X-FORWARDED-FOR =
HTTP-CLIENT-IP =
REMOTE-ADDR = 38.103.63.62

SOAP XML compliant Web Service

I also provide a publically available Web Service to convert from IP to Geo location.

Future Enhancements

I plan on including city/state/region information. This is a more difficult problem because ISPs route client traffic thru their datacenter. This means that if your ISP's datacenter is in Houston, Texas but you live in a nearby suburb like Katy, League City or Pasadena, then it will incorrectly appear to me that you are in Houston.

The 24 million AOL customers are another problem. AOL funnels all traffic thru their proxy servers in Reston, Virginia, making city and region geo mapping impossible. Due to this and other issues, city mapping is roughly 65% accurate.

Additional Resources

IP Geo Mapping Investigation by Microsoft Research and UC Berkeley