title: What's difference between IncomingMessage's "socket", "connection" and "connection.socket"?
body: <p>While checking "how to get remote address for express.js request" I have found that where are quit a <a href="https://stackoverflow.com/questions/5999379/how-to-find-out-the-remote-address-in-node-js-if-it-is-https-request">tricky way</a> to do so:</p>
  
  <pre><code> req.connection.remoteAddress || 
       req.socket.remoteAddress ||
       req.connection.socket.remoteAddress
  </code></pre>
  
  <p><code>node.js</code> documentation holds near no information about that <code>connection</code> property of <code>IncomingMessage</code> object, so I suspect that it's some legacy things. Is it any information available how <code>api</code> has changed over time and is the <code>req.socket.remoteAddress</code> a safe way to use in modern <code>express.js</code> installs?</p>