* Stream Sockets (Sock_stream): Estos proporcionan una corriente de byte confiable, ordenada y bidireccional. Los datos se transmiten en un flujo continuo, y el receptor obtiene los bytes en el orden exacto que fueron enviados. Piense en ello como una tubería:los datos fluyen sin problemas. TCP es el protocolo más común utilizado con los enchufes de la corriente.
* Sockets de datagrama (Sock_Dgram): Estos ofrecen un método de comunicación sin conexión, poco confiable y bidireccional. Los datos se envían en paquetes discretos (datagramas), que podrían llegar fuera de servicio, podrían duplicarse o perderse por completo. No hay garantía de entrega. UDP es el protocolo típico asociado con los enchufes de datagrama.
* Sockets crudos (Sock_raw): Estos proporcionan una interfaz de muy bajo nivel, que permite el acceso directo a la capa de protocolo de red. Puede crear y enviar paquetes de red RAW, evitando los protocolos de nivel superior como TCP/IP. Esto requiere una comprensión profunda de las redes y generalmente se usa para tareas especializadas como el monitoreo y la depuración de la red. Requiere privilegios apropiados.
* Socket Socket Sockets (Sock_Seqpacket): Similar a los enchufes de la corriente, estos proporcionan una corriente de byte bidireccional confiable, ordenada. Sin embargo, cada transmisión se empaqueta en un mensaje distinto con su propio encabezado, lo que permite mejores límites de mensajes que SOCK_STREAM. Son menos comunes que los enchufes de transmisión o datagrama.
* Unix Sockets de dominio (AF_UNIX o AF_LOCAL): Estos enchufes se comunican solo dentro de una sola máquina; No involucran protocolos de red como TCP o UDP. Son más rápidos y seguros que los enchufes de red, ya que no atraviesan la pila de red. A menudo se usan para la comunicación entre procesos (IPC) dentro de un sistema.
Distinciones importantes:
* Orientado a la conexión vs. sin conexión: Sock_stream (TCP) está orientado a la conexión; Se establece una conexión antes de la transferencia de datos. SOCK_DGRAM (UDP) es sin conexión; Cada datagrama es independiente.
* confiable frente a poco confiable: Sock_stream es confiable; Se garantiza que los datos llegarán en orden y sin pérdida (salvo fallas en la red catastrófica). SOCK_DGRAM no es confiable; No hay garantía de entrega u pedido.
La elección del tipo de socket depende completamente de los requisitos de la aplicación. Si la entrega y el pedido confiables son primordiales, use `sock_stream`. Si se prioriza la velocidad y se acepta alguna pérdida de datos, `Sock_DGRAM` es una mejor opción. `AF_UNIX` es excelente para IPC eficiente. `Sock_raw` es para tareas muy especializadas de bajo nivel. `Sock_seqpacket` es una opción de nicho, rara vez utilizada.