title: Why is my public IP address not unique (and what do I do about it)?
body: <p>I have an application that runs on "remote" machines that I would like to enhance with a web server module so that I can use an ordinary web browser to get information about the application state. I will be using <a href="http://pocoproject.org/" rel="nofollow">Poco Libraries</a>, not that it matters much.</p>
  
  <p>Step 1: add a server module to serve up "Hello World!" locally -- done, easy.</p>
  
  <p>Step 2: find my "local" machine's public IP address, e.g. by going to <a href="http://checkip.dyndns.com" rel="nofollow">here</a>, and then use some externally-routed web-browser (e.g. on my phone) to simulate a "remote" connection to my "Hello World!" responder -- fail.</p>
  
  <p>Every machine in my office that I have tested shares the same public IP address... despite many webpages discussing public IP addresses describing them as unique. Why are they not unique?</p>
  
  <p>Having heard of <a href="https://en.wikipedia.org/wiki/Network_address_translation" rel="nofollow">Network Address Translation</a>, I'm guessing something along those lines must be occurring (maybe <a href="https://en.wikipedia.org/wiki/Port_forwarding" rel="nofollow">Port Forwarding</a>?)... but even though that might answer the initial question, what is the practical programmer's answer to "now that I understand public IP addresses may not be unique, how can I uniquely identify a particular machine at a remote site when it is (likely) behind a firewall?</p>