1. Direcciones y puertos IP: Cada aplicación del navegador, incluso en la misma máquina, se conecta al servidor desde una combinación única de dirección IP y número de puerto. La dirección IP identifica la ubicación de red del cliente, y el número de puerto distingue diferentes aplicaciones que se ejecutan en esa máquina. Si bien varias instancias de navegador en la misma máquina pueden compartir la misma dirección IP (desde la perspectiva del servidor), tendrán diferentes números de puerto asignados a sus conexiones. El servidor usa esta combinación para rastrear las solicitudes individuales.
2. encabezados http: Las solicitudes HTTP incluyen encabezados que contienen información sobre el cliente y la solicitud. Los encabezados clave utilizados para la identificación incluyen:
* `User-Agent`: Este encabezado identifica el navegador y el sistema operativo. Si bien no es perfectamente único, ayuda a distinguir entre diferentes navegadores o versiones de navegador.
* `Connection`: Este encabezado indica si la conexión debe mantenerse abierta para solicitudes posteriores (conexión persistente) o cerrada después de la solicitud actual.
* Cookies: Las cookies son pequeños datos almacenados en la máquina del cliente y se envían con cada solicitud posterior. Permiten que el servidor rastree a un usuario o sesión específica en múltiples solicitudes. Si bien las cookies se pueden compartir en las pestañas, aún pueden ayudar a diferenciar a los usuarios si se usa una administración de cookies adecuada.
* Los encabezados de solicitud: Otros encabezados pueden contener identificadores únicos asignados por la aplicación o el navegador, mejorando aún más la identificación.
3. Gestión de sesiones: Para aplicaciones web interactivas, los servidores a menudo usan sesiones. Se asigna una ID de sesión (a menudo almacenada en una cookie) a cada usuario cuando comienzan una sesión. Las solicitudes posteriores del mismo usuario incluyen la ID de sesión, lo que permite que el servidor mantenga el estado e identifique las interacciones del usuario en múltiples solicitudes.
4. Seguimiento de la conexión: El servidor mantiene un grupo de conexión, realizando un seguimiento de las conexiones abiertas de varios clientes. Cada conexión está asociada con un identificador único (por ejemplo, un descriptor de socket) que permite al servidor procesar las solicitudes de forma independiente para cada conexión.
En esencia, el servidor actúa como una centralita, que recibe solicitudes de diferentes fuentes (instancias de navegador identificadas a través de IP:puerto y encabezados) y las dirige adecuadamente en función de la información proporcionada. Incluso si múltiples solicitudes llegan simultáneamente, el servidor las procesa una por una o simultáneamente utilizando subprocesos o procesos, manteniendo el contexto de cada solicitud a través de la información proporcionada en la solicitud en sí y su conexión asociada.