/ / Unix vs BSD vs TCP vs sockets de Internet? - Linux, sockets, unix, tcp, posix

Unix vs BSD vs TCP vs enchufes de Internet? - linux, sockets, unix, tcp, posix

Estoy leyendo La Interfaz de programación de Linux y describe varios tipos diferentes de zócalos utilizados en Linux:

  • Dominio Unix
  • Berkeley
  • TCP
  • Internet

Una de las cosas que dice el libro es que siSi desea comunicarse entre hosts remotos, no puede usar sockets de dominio Unix porque son para IPC en el mismo host. Debe usar sockets de "Internet".

Sin embargo, todavía estoy un poco confundido, ¿cómo se relaciona esto con los sockets "TCP", los sockets de Berkeley y los otros 2? ¿Cuál es su relación? ¿Por qué tendrías un socket de Internet así como un socket TCP?

En resumen, estoy tratando de entender todos (¿me he perdido alguno?) Los diferentes tipos de sockets de Unix y en qué circunstancias los usaría?

Respuestas

10 por respuesta № 1

Un zócalo es una abstracción. La definición de etiqueta utilizada en SO para un socket es tan buena como cualquiera:

Un punto final de un flujo de comunicación entre procesos bidireccional. Esto a menudo se refiere a un flujo de proceso a través de una conexión de red, pero de ninguna manera se limita a eso.

Entonces, de ahí que una distinción importante son los sockets que (1) usan una red y (2) los sockets que no lo hacen.

Unix dominio sockets no utilizan la red. Su API parece ser (en su mayoría) lo mismo para el desarrollador que un socket de red, pero toda la comunicación se realiza a través del kernel y los sockets se limitan a hablar con los procesos en la máquina en la que se ejecutan.

Los enchufes de Berkeley son lo que conocemos como red.sockets en las plataformas POSIX de hoy. En el pasado, existían diferentes líneas de desarrollo de Unix (por ejemplo, Berkeley o BSD, System V o sysV, etc.) Los sockets de Berkeley esencialmente ganaron en el mercado y son efectivamente sinónimos de los sockets de Unix en la actualidad.

Estrictamente hablando, no hay un conector TCP. Hay sockets de red que pueden comunicarse utilizando el protocolo TCP. Es solo una taquigrafía lingüística para referirse a ellos como un socket TCP para distinguirlos de un socket que usa otro protocolo, por ejemplo, UDP, un protocolo de enrutamiento o cualquier otra cosa.

Un socket de "Internet" es en su mayoría un sin sentidodistinción. Es un socket que usa un protocolo de red. Eso elimina los sockets de dominio Unix, pero la mayoría de los protocolos de red se pueden usar para comunicarse en una LAN o Internet, que es solo una colección de redes (aunque tenga en cuenta que existen protocolos específicos para redes locales como así como los que gestionan colecciones de redes.)