title: How sockets relate to common networking APIs
body: <p>This morning I asked a sockets-related question, but this is a different beast and so I decided making a separate post altogether.</p>
  
  <p>I now have a good idea of what sockets are, and the purpose(s) they serve. I'm trying to understand their relation to Java NIO, Java RMI, and so-called networking APIs like Netty or MINA.</p>
  
  <ol>
  <li><p>Are sockets the basis of all Java-based networking, and is NIO the foundation of Java-based networking (i.e., is it the API that provides the socket structures for <em>higher</em> frameworks like Netty or MINA)?  If not, then what is the foundation of Java's networking capabilities?</p></li>
  <li><p>Can one use sockets (which as I understand it, or network-layer constructs), to send (byte-wise) messages compliant with higher protocols, such as TCP or UDP, HTTP, FTP, etc? If so, I would imagine that development teams might, for example, make their own HttpProtocol library, or SSLProtocol library, yes?</p></li>
  <li><p>My understanding is that NIO is the basis of all Java networking, and that RMI, Netty, MINA, etc. all extend the NIO framework into their own implementations. Is this correct? If not, how do these frameworks relate to each other?</p></li>
  </ol>
  
  <p>Thanks again for all your help!</p>