1) Un socket es un punto final de comunicación entre dos programas a través de una red. 2) Los sockets permiten establecer conexiones orientadas a conexión usando TCP o no orientadas a conexión usando UDP. 3) En Java, las clases Socket, ServerSocket y DatagramSocket representan sockets y permiten la comunicación cliente-servidor.