Redes informáticas: ¿qué sucede exactamente desde el momento en que escribimos www.facebook.com hasta que iniciamos sesión?

Bien, déjenme responder esta pregunta a nivel de socket, lo cual es bastante interesante:

0) Entonces, en un nivel muy básico, cada nueva solicitud a un servidor (www.facebook.com) desde un cliente (su navegador), inicia una conexión TCP. Esta conexión es entre dos puntos finales, llamados sockets. Ahora cada socket no es más que una combinación de IP y puerto. En cuanto al servidor, está escuchando en una IP y un puerto fijos (de forma predeterminada, HTTP usa el puerto 80). El cliente ahora necesita crear un nuevo socket para iniciar una conexión y esto se delega al SO subyacente.

1) Lo primero que sucede es que la biblioteca Sockets del sistema operativo crea un socket identificado por la tupla {SRC-IP, SRC-PORT, DEST-IP, DEST-PORT}

SRC-PORT es un número aleatorio, generado por el sistema operativo generalmente en el rango más alto (mayormente mayor que 40000, por lo que no hay conflictos con algunos números de puerto reservados)

2) Ahora que tenemos un zócalo de cliente, necesitamos saber cuál es exactamente la IP del servidor, ya que www.facebook.com es un nombre legible por humanos. El sistema operativo puede hacer esto de varias maneras; puede mirar un caché en memoria, un archivo, una base de datos, un servidor LDAP, varias cosas, antes de salir a un servidor DNS, lo que puede hacer a través de TCP o UDP. Ahora DNS no es más que el Servidor de nombres de dominio que en inglés simple devuelve la IP para el nombre www.facebook.com

Ahora que tenemos toda la tupla con nosotros, se establece una conexión TCP a través de un mecanismo de enlace de tres vías (SYN-SYN / ACK-ACK).

3) En el extremo del servidor, Facebook tendrá un número N de equilibradores de carga cada uno apuntando a una IP virtual o puede usar un mecanismo DNS Round Robin, que redirigirá su solicitud de conexión a uno de los servidores de miles de servidores en un granja de servidores. Este servidor está escuchando en un bucle infinito en el puerto 80, utilizando un socket de escucha en ese puerto.

El zócalo de escucha ahora “acepta” su conexión y se crea un nuevo zócalo con el mismo número de puerto, que será el zócalo del servidor dedicado para el zócalo de su cliente y recibirá los datos que envíe y le enviará la respuesta.

Entonces, ¿si miles de clientes llegan al servidor al mismo tiempo? Un servidor TCP tiene un socket separado por conexión aceptada, y cualquier servidor TCP racionalmente construido los maneja de manera completamente independiente, ya sea a través de E / S multiproceso, multiplexado / sin bloqueo o E / S asíncrona. No se bloquean entre sí.

4) Bien, ahora que la conexión TCP está establecida, ya está listo para intercambiar datos con el servidor de Facebook. Si no hay cookies disponibles, entonces, para su solicitud, el servidor enviará la respuesta HTML como la página de inicio de sesión a través de HTTP, y el navegador (cliente) mostrará el marcado y el estilo aplicados y mostrará la página web de inicio de sesión en su computadora. En caso de que ya haya iniciado sesión, sucederá lo mismo, pero ahora recibirá su página de inicio como la respuesta HTML del servidor.

Tenga en cuenta que una vez que se agota el tiempo de espera de HTTP Keep Alive o que el servidor (en su mayoría) o el cliente cierra la conexión, el servidor descartará / reciclará el socket que creó para “aceptar” su conexión.

5) También es imprescindible afirmar que HTTP es esencialmente un protocolo sin estado, lo que significa que cada solicitud de un cliente a un servidor se trata de forma independiente de la otra. Ahí es donde entra en juego el concepto de Administración de sesión HTTP. Entonces, una vez que inicie sesión en Facebook, se creará una nueva sesión para usted y el servidor o cliente (que usa cookies) mantiene esa sesión durante todo el tiempo que está conectado, y la sesión se destruye una vez que cierra sesión.

Sé que me sentí abrumado al escribir esta respuesta. Lo siento por eso. Espero que esto ayude. Siéntase libre de agregar más detalles en los comentarios, en caso de que me haya perdido algo.

Referencia: Página en stackoverflow.com

El navegador intenta encontrar si es una solicitud de dominio válida; si no lo es, realizará la solicitud de búsqueda con el motor de búsqueda predeterminado.

Ahora, para encontrar la dirección IP de la URL dada, verifica en la memoria caché del navegador.

Los navegadores intentan encontrar la dirección IP haciendo una llamada a la función gethostbyname que verifica internamente el archivo de hosts.

Si el servidor está en la misma subred, hará una solicitud arp para la dirección mac del servidor DNS.

Si se encuentra en otra subred, realiza una solicitud arp para la dirección mac de la puerta de enlace predeterminada.

Antes de enviar la solicitud arp, se registrará en la caché arp para obtener la dirección mac.

Si no se encuentra en la caché de arp, comprueba en la tabla de enrutamiento la IP de destino, utiliza la interfaz asociada con la subred correspondiente para enviar la solicitud.

Después de obtener la dirección mac, realiza una solicitud UDP al servidor DNS. Si el servidor DNS local / ISP no tiene la dirección IP para la URL, se emite una búsqueda recursiva.

La traducción de NAT ocurre en el lado del ISP para cada solicitud. El servidor ISP puede almacenar en caché la respuesta DNS.

Después de encontrar la dirección IP, verifica en la lista hsts la url correspondiente para encontrar si la primera solicitud debe ser a través de HTTP o HTTPS (si se encuentra).

Ahora, un navegador de días viene precargado con la lista hsts, que es solo una lista de sitios web que se solicitarán solo a través de HTTPS.

Si no se encuentra en la lista hsts, hará una solicitud HTTP ahora, el servidor puede responder diciendo que tiene que hacer una solicitud HTTPS.

Dado que la primera solicitud HTTP es propensa al ataque del hombre en el medio (eliminación de SSL), los navegadores están equipados con la lista hsts.

Después de encontrar el tipo de solicitud, abre un socket TCP con el puerto de destino como 80 (para HTTP) o 443 (para HTTPS).

Luego hace un protocolo de enlace TCP de 3 vías seguido de un protocolo de enlace tls con el cliente hola con la versión tls, algoritmos de cifrado, métodos de compresión disponibles. El servidor envía un mensaje de saludo del servidor con la versión tls, el cifrado seleccionado, los métodos de compresión y el certificado público del servidor (que el cliente usa para verificar el servidor), la clave pública que debe usar el cliente hasta que se acuerde una clave simétrica.

Después de verificar el servidor, genera un cifrado de bytes aleatorios (utilizado para clave simétrica) con la clave pública y lo envía al servidor.

El servidor descifra con su clave privada y utiliza bytes aleatorios para generar su propia copia de la clave simétrica. Después de eso, el cliente envía un mensaje terminado encriptado con clave simétrica y el servidor verifica el hash generado con el hash del cliente recibido y envía un mensaje terminado encriptado con la clave simétrica.

De ahora en adelante, el tráfico HTTP se envía utilizando la clave simétrica.

El navegador analiza el HTML, CSS, js y lo renderiza.

En el caso de Facebook para actualizar la página con un nuevo navegador de feeds, AJAX solicita que se reduzca a sondeos largos al mantener la conexión al servidor abierta utilizando sockets web que es mucho más eficiente en términos de latencia de red, carga del servidor en comparación con el sondeo tradicional.

Vamos a desglosarlo en los detalles menores …

Paso 1 : escribe la dirección en el navegador
Paso 2 : si hay una conexión a Internet disponible, el navegador se pone en contacto con uno de los servidores FB más cercanos.
Paso 3 : Si el sitio web no está bloqueado para esa región, el servidor reconocerá la solicitud y mostrará la página de inicio de sesión.
También con la página de inicio de sesión, podría haber algunas secuencias de comandos analíticas que lleguen al navegador. Estos se utilizan principalmente para registrar la región de acceso, la IP de la máquina que accede, etc.


Encontré esto aquí Cómo funciona Internet (fondo de pantalla)
Esto debería aclarar las cosas para ti.

Nuestro cerebro estará pensando cuántas notificaciones hay, ¿están nuestros seres queridos en línea?
¿Cuántas nuevas solicitudes de amistad hay?
¿Cuánta gente me envió un mensaje?
Y el resto todo varía de persona a persona y cualquier cosa notable que hicieron en su inicio de sesión anterior y lo que querían hacer ahora en este inicio de sesión .. 😀

1. En primer lugar, la solicitud va al conmutador local.
2. interruptor local al enrutador.
3. rutear a Isp (proveedor de servicios de internet)
4.Isp a internet (nube)
5.Internet al servidor de Facebook que está más cerca de su servidor Faacebook
El proceso del agujero incluye algunos protocolos como se explica en el modelo de referencia osi (sistema abierto de interconexión).

Esto es justo lo que necesitas: alex / what-going-when