Definición
Una abstracción de la capa de transporte que vincula un proceso de aplicación a uno o más identificadores de red (normalmente dirección IP y puerto) y, en protocolos orientados a conexión, define uno de los extremos de una sesión de transporte; un socket es un manejador gestionado por el sistema operativo a través del cual una aplicación envía y recibe unidades de protocolo (por ejemplo, segmentos TCP o datagramas UDP).
Principio
Principio
Un socket identifica de forma única el extremo de transporte de una aplicación dentro de un host mediante el tuple de identificadores locales (dirección, puerto) y el protocolo de transporte; el sistema operativo gestiona el estado y los permisos del socket, de modo que la alcanzabilidad y la semántica de la sesión dependen de las vinculaciones y del ciclo de vida del socket.
Demostración
Demostración
Escenario Ilustrativo → Un proceso servidor enlaza 0.0.0.0:443 y escucha (Situación). El SO asigna un socket y lo asocia al proceso que escucha (Reconocimiento). Cuando un cliente se conecta, el SO crea una instancia de socket distinta para esa conexión (Acción). Los datos de la aplicación se intercambian por estos manejadores de socket; cerrar el socket termina la sesión de transporte (Consecuencia).
Aplicación incorrecta
Aplicación incorrecta
Interpretación Equivocada → Tratar un socket como idéntico a una dirección de capa de red. Por qué parece plausible: los sockets contienen direcciones IP. Error semántico: ignorar la dimensión de puerto y protocolo y la naturaleza ligada al proceso de los sockets. Interpretación corregida: los sockets son abstracciones de la capa de transporte, con alcance local al proceso, que combinan dirección, puerto, protocolo y estado.
Consecuencia
Consecuencia
Las políticas de red, la asignación de puertos y el firewall de aplicaciones operan a nivel de socket; suposiciones incorrectas sobre la identidad o vida útil del socket pueden provocar conflictos de puertos, exposición no deseada de servicios o fallos en los intentos de conexión.
Inversión
Inversión
En usos sin conexión (UDP) o cuando un socket se liga a direcciones comodín, un socket no representa una sesión persistente uno‑a‑uno; la NAT y el remapeo de puertos pueden desacoplar aún más un 5‑tupla externa de un socket interno, cambiando cómo se aplican la alcanzabilidad y la auditoría.
Límite
Límite
Claramente dentro: Un cuádruple TCP (IP local, puerto local, IP remota, puerto remoto) que identifica un socket de conexión. Caso límite: Un servidor ligado a 0.0.0.0 que crea sockets por conexión en el accept. Claramente fuera: Una dirección MAC o interfaz física sin semántica de puerto de transporte no es un socket.
Tensión semántica
Tensión semántica
Socket ↔ Punto de Terminación: Los sockets son identificadores de transporte con alcance por proceso, mientras que los puntos de terminación pueden ser más amplios (dispositivo, proceso o URI lógico); las decisiones de seguridad y política deben conciliar los ciclos de vida de sockets con la identidad de punto de terminación de mayor nivel.
Síntesis
Síntesis
Un socket es una construcción del sistema operativo que mapea la intención de comunicación de una aplicación a identificadores de transporte y red; comprender los sockets aclara por qué la alcanzabilidad de la aplicación, la gestión de puertos y el estado por conexión son cuestiones locales del host.