¿Cómo determina Facebook dónde enviar paquetes si estoy conectado a la misma cuenta desde un sistema diferente en la misma red?

Esto se debe a la magia de TCP / IP (no solo TCP). Vea la estructura de tal paquete a continuación.
En términos muy simples,
Dirección de origen es la dirección IPv4 del remitente, es decir, su computadora.
La dirección de destino es la dirección IPv4 del receptor, es decir, el servidor de Facebook.

Entonces, al ver la IP de origen, el servidor conoce el origen del paquete y puede enviar su respuesta en consecuencia.

En realidad, nunca te conectas directamente a Facebook. Hay varios intermediarios involucrados. Puede saber esto ejecutando un traceroute / tracert. Aquí hay un ejemplo de salida

Seguimiento de ruta a star.c10r.facebook.com [31.13.79.246]
en un máximo de 30 saltos:

1 1 ms 1 ms 1 ms TP-LINK.Inicio [192.168.1.1]
2 27 ms 28 ms 27 ms
3 29 ms 28 ms 27 ms 218.248.162.234
4 30 ms 28 ms 27 ms 218.248.255.9
5 75 ms 78 ms 73 ms 218.248.181.22
6 82 ms 80 ms 82 ms 115.113.165.93.static-mumbai.vsnl.net.in [115.113.165.93]
7 79 ms 79 ms 78 ms 172.29.250.33
8 80 ms 79 ms 80 ms 115.114.85.210
9 82 ms 80 ms 81 ms 115.114.85.233
10 119 ms 118 ms 118 ms if-2-2.tcore2.MLV-Mumbai.as6453.net [180.87.38.2]
11 121 ms 119 ms 120 ms if-16-2.tcore1.SVW-Singapore.as6453.net [180.87.12.226]
12 119 ms 119 ms 120 ms if-11-2.thar1.SVQ-Singapore.as6453.net [180.87.98.37]
13 119 ms 120 ms 165 ms 180,87,98,42
14 119 ms 129 ms 131 ms po102.psw01a.sin1.tfbnw.net [74.119.77.229]
15 * * * Solicitud agotada.
16 120 ms 120 ms 170 ms edge-star-shv-01-sin1.facebook.com [31.13.79.246]

Traza completa.

Supongamos que tenemos una red con la siguiente topología:

Private_Network Router The_Internet

La interfaz del enrutador que está conectada a Private_Network tiene una dirección IP privada, es decir, una que no es única en The_Internet . Por otro lado, en el caso de NAT , el enrutador tiene múltiples interfaces conectadas a The_Internet . Cada interfaz tiene una dirección IP única en The_Internet . Ahora supongamos que Host_A y Host_B están en Private_Network y ambos quieren acceder a Website_X en The_Internet al mismo tiempo. Las IP y los puertos del paquete Host_A serán:

IP de origen: IP privada de Host_A
Puerto de origen: un puerto en Host_A
IP de destino: IP pública / única de Website_X
Puerto de destino: un puerto donde el servidor de Website_X está escuchando

y de la misma manera para un paquete procedente de Host_B .

Si la IP de origen no se modifica, Website_X responderá a una dirección IP que sea privada, es decir, no única, y por lo tanto el paquete nunca podrá encontrar el camino de regreso. Para resolver ese problema, el enrutador verifica si una de sus direcciones IP únicas conectadas a The_Internet no se utiliza. Si ese es el caso, realiza la siguiente asignación:

IP privada de Host_A ======= Router’s_unique_IP_K

y ahora el paquete que comenzó desde Host_A yendo a Website_X y ahora abandona la interfaz del Enrutador conectado a The_Internet tendrá la forma:

IP de origen: Router’s_unique_IP_K
Puerto de origen: un puerto en Host_A
IP de destino: IP pública / única de Website_X
Puerto de destino: un puerto donde el servidor de Website_X está escuchando

Por lo tanto, puede comprender que existe una asociación uno a uno desde IP privadas a IP públicas. Por lo tanto, cuando llega un paquete desde Website_X al enrutador , se verifica esta asociación y la dirección IP de destino se cambia nuevamente a la privada y se entrega con éxito al host correcto.

Como puede ver, este método es bastante simple, pero tiene una gran desventaja: cada host privado debe tener una dirección IP única reservada, lo cual es costoso, por lo tanto, seleccionamos tener menos direcciones IP únicas que los hosts en la red privada. Por lo tanto, si todos los hosts privados intentan acceder a The_Internet al mismo tiempo, solo un subconjunto de ellos, igual al número de direcciones IP públicas disponibles que tiene el enrutador , tendrá acceso y el resto será denegado.
Para contrarrestar eso creamos PAT .

PALMADITA
PAT es lo que está utilizando la gran mayoría de nuestros enrutadores domésticos. La limitación básica es que el enrutador tiene una única dirección IP única con la que se conecta a The_Internet , pero aún queremos permitir que varios hosts de la red privada accedan a The_Internet al mismo tiempo.
La forma en que lo hacemos es “similar” a la forma en que NAT lo hace con una diferencia clave: en lugar de que el enrutador tenga un grupo de direcciones IP, tiene un grupo de números de puerto. Más precisamente, un paquete que llegue al Enrutador desde Host_A en la Private_Network destinado a Website_X en The_Internet tendrá el siguiente formato:

IP de origen: IP privada de Host_A
Puerto de origen: un puerto en Host_A
IP de destino: IP pública / única de Website_X
Puerto de destino: un puerto donde el servidor de Website_X está escuchando

Ahora el enrutador realizará dos tareas:

  1. Cambiará la IP de origen a la IP pública única del enrutador Y
  2. Cambiará el puerto de origen a un puerto de un grupo que el enrutador está manteniendo y que aún no se utiliza, por ejemplo, Port_Z

y ahora el paquete que comenzó desde Host_A yendo a Website_X y ahora abandona la interfaz del Enrutador conectado a The_Internet tendrá la forma:

IP de origen: Router’s_unique_IP_K
Puerto de origen: Port_Z
IP de destino: IP pública / única de Website_X
Puerto de destino: un puerto donde el servidor de Website_X está escuchando

y el enrutador mantendrá la siguiente asignación:

La IP privada de Host_A Y un puerto en Host_A ======= Port_Z

¿Por qué funciona esto?
Cuando regresa un paquete, el enrutador simplemente verifica el número de puerto de destino y cambia la dirección IP de destino y el número de puerto de destino de acuerdo con la asignación mencionada anteriormente y el paquete se entrega con éxito.

¿Qué sucede si ejecuto varias aplicaciones en el mismo host?
Las diferentes aplicaciones tendrán diferentes puertos, por definición, por lo que se asignarán a un puerto diferente del enrutador .

¿Qué sucede si varios hosts intentan acceder a The_Internet al mismo tiempo y todos usan la misma aplicación?
Los diferentes hosts tendrán diferentes direcciones IP privadas, por definición, por lo que se asignarán a un puerto diferente del enrutador .
Ahora, cuando regresa un paquete, el enrutador simplemente verifica el número de puerto de destino y cambia la dirección IP de destino y el número de puerto de destino de acuerdo con la asignación mencionada anteriormente y el paquete se entrega con éxito.

¿Qué sucede si ejecuto varias aplicaciones en el mismo host?
Las diferentes aplicaciones tendrán diferentes puertos, por definición, por lo que se asignarán a un puerto diferente del enrutador .

¿Qué sucede si varios hosts intentan acceder a The_Internet al mismo tiempo y todos usan la misma aplicación?
Los diferentes hosts tendrán diferentes direcciones IP privadas, por definición, por lo que se asignarán a un puerto diferente del enrutador .

Su navegador web abre una conexión TCP con los servidores de Facebook y envía una solicitud HTTP con sus credenciales. Cuando esta solicitud llega a los servidores de Facebook, el servidor analiza la dirección IP de origen y el número de puerto, y envía paquetes de respuesta a esta dirección IP y número de puerto, que eventualmente se envían a la computadora correcta.

Realizan un seguimiento de las sesiones en función de los diferentes terminales conectados. Ya sea móvil o web. Los detalles de inicio de sesión solo se utilizan para autenticar al usuario.