¿Cómo se asigna una dirección IP a un proceso en TCP?

¿Cómo se asigna una dirección IP a un proceso en TCP?

Cuando se establece una conexión TCP entre dos sockets, supongamos que hay varias NIC en la computadora, por lo que a qué dirección IP se vinculará el socket [o - qué dirección IP se pasará a la función bind()] antes de que se establezca la comunicación. ¿Lo decide el sistema operativo?

Básicamente tengo varias dudas:

  1. ¿El sistema operativo llama a la función socket(), bind(), connect()? En caso afirmativo, ¿qué dirección IP se pasa en la función bind() en caso de que haya varias NIC en la máquina? Sé que puedo estar equivocado en algunos lugares, corrígeme.

Respuesta1

¿El sistema operativo llama a la función socket(), bind(), connect()?

no se llamanporel sistema operativo: sonparte deel sistema operativo, por lo que son llamados por el programa.

En caso afirmativo, ¿qué dirección IP se pasa en la función bind() en caso de que haya varias NIC en la máquina?

La mayoría de los programas no especifican ninguna dirección.

  • Cuando los programas llaman a bind() para seleccionar un puerto local para aceptar conexiones entrantes, pueden usar los valores especiales [::](también conocido como IN6ADDR_ANY_INIT) y 0.0.0.0(también conocido como INADDR_ANY) que indican que aceptarán conexiones atododirecciones (actuales y futuras) en todas las NIC locales.

  • Al realizar conexiones salientes, los programas normalmente no llaman a bind()en absoluto, dejando que el sistema operativo decida tanto la dirección local como el puerto local.

    Cada sistema operativo tiene una lógica ligeramente diferente para la selección de la dirección de origen. (Por ejemplo, a partir de Windows 7/Srv2008, el sistema operativo elegirá la dirección numéricamente más baja de la interfaz de salida. En Linux, las entradas individuales de la tabla de enrutamiento pueden tener una dirección de origen "preferida" para usar si el programa no elige una .)

cuando los programashacerespecifique una dirección local, a menudo la selecciona el usuario, no el programa. (Por ejemplo, la mayoría de los servicios tienen una configuración de "dirección de escucha" en su configuración).

información relacionada