¿Cómo se produce la comunicación entre un navegador y un servidor web?


¿Puede alguien explicar cómo se produce la comunicación entre el navegador y el servidor web? Quiero aprender cómo

  • GET, POST verbos (entre otros)
  • cookies
  • sesiones
  • cadenas de consulta

Trabaja detrás de escena.

Author: David Victor, 2009-11-19

8 answers

Hyper Text Transfer Protocol (HTTP) es un protocolo utilizado para transferir páginas web (como el que estás leyendo ahora mismo). Un protocolo no es más que una forma estándar de hacer las cosas. Si usted fuera a reunirse con el Presidente de los Estados Unidos, o el rey de un país, habría procedimientos específicos que tendría que seguir. No podías acercarte y decir "hey amigo". Habría una forma específica de caminar, de hablar, un saludo estándar y una forma estándar de terminar la conversación. Los protocolos en la pila TCP/IP sirven para el mismo propósito.

La pila TCP/IP tiene cuatro capas: Aplicación, Transporte, Internet y Red. En cada capa hay diferentes protocolos que se utilizan para estandarizar el flujo de información, y cada uno es un programa informático (que se ejecuta en su computadora) que se utiliza para formatear la información en un paquete a medida que se mueve por la pila TCP/IP. Un paquete es una combinación de los datos de la Capa de aplicación, el encabezado de la capa de transporte (TCP o UDP) y el encabezado de la capa IP (la Capa de red toma el paquete y lo convierte en un marco).

La Capa de Aplicación

...consiste en todas las aplicaciones que utilizan la red para transferir datos. No le importa cómo los datos se interponen entre dos puntos y sabe muy poco sobre el estado de la red. Las aplicaciones pasan los datos a la siguiente capa en la pila TCP/IP y luego continúan realizando otras funciones hasta que se recibe una respuesta. La Capa de aplicación utiliza nombres de host (como www.dalantech.com) para abordar. Ejemplos de protocolos de capa de aplicación: Protocolo de Transferencia de Hipertexto (HTTP-navegación web), Protocolo de Transferencia de Correo Simple (SMTP-correo electrónico), Servicios de Nombres de Dominio (DNS-resolver un nombre de host a una dirección IP), por nombrar solo algunos.

El propósito principal de la Capa de aplicación es proporcionar un lenguaje de comandos y una sintaxis comunes entre las aplicaciones que se ejecutan en diferentes sistemas operativos, algo así como un intérprete. Los datos enviados por una aplicación que utiliza la red está formateada para ajustarse a uno de varios estándares establecidos. La computadora receptora puede entender los datos que se envían incluso si está ejecutando un sistema operativo diferente al del remitente debido a los estándares a los que se ajustan todas las aplicaciones de red.

La Capa de Transporte

...es responsable de asignar números de puerto de origen y destino a las aplicaciones. Los números de puerto son utilizados por la Capa de transporte para el direccionamiento y van desde 1 a 65.535. Los números de puerto del 0 al 1023 se denominan "puertos conocidos". Los números por debajo de 256 están reservados para servicios públicos (estándar) que se ejecutan en la capa de aplicación. Aquí hay algunos: 25 para SMTP, 53 para DNS (udp para resolución de dominio y tcp para transferencias de zona) , y 80 para HTTP. Los números de puerto del 256 al 1023 son asignados por la IANA a las empresas para las aplicaciones que venden.

Los números de puerto de 1024 a 65.535 se utilizan para las aplicaciones del lado del cliente-el navegador web que están utilizando para leer esta página, por ejemplo. Windows solo asignará números de puerto hasta 5000, números de puerto más que suficientes para una PC basada en Windows. Cada aplicación tiene un número de puerto único asignado por la capa de transporte para que, a medida que los datos son recibidos por la Capa de Transporte, sepa a qué aplicación dar los datos. Un ejemplo es cuando tiene más de una ventana del navegador en ejecución. Cada ventana es una instancia separada del programa que utilizas para navegar por la web, y cada una tiene un número de puerto diferente asignado para que pueda ir a www.dalantech.com en una ventana del navegador y este sitio no se carga en otra ventana del navegador. Las aplicaciones como FireFox que usan ventanas con pestañas simplemente tienen un número de puerto único asignado a cada pestaña

La Capa de Internet

Is es el "pegamento" que mantiene unidas las redes. Permite el envío, recepción y enrutamiento de datos.

La Capa de red

...consiste en su Tarjeta de interfaz de red (NIC) y el cable conectado a él. Es el medio físico que se utiliza para transmitir y recibir datos. La Capa de red utiliza direcciones de Control de Acceso a Medios (MAC), discutidas anteriormente, para el direccionamiento. La dirección MAC se fija en el momento en que se fabricó una interfaz y no se puede cambiar. Hay algunas excepciones, como los routers DSL que le permiten clonar la dirección MAC de la NIC en su PC.

Para más información:

 68
Author: OMG Ponies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-07 16:13:59

Su navegador primero resuelve el servername a través de DNS a una IP. Luego abre una conexión TCP al servidor web e intenta comunicarse a través de HTTP. Normalmente es en el puerto TCP 80, pero puede especificar uno diferente (http://server:portnumber).

HTTP se ve así:

Una vez que está conectado, envía la solicitud, que se parece a:

GET /site HTTP/1.0
Header1: bla
Header2: blub
{emptyline}

Por ejemplo, un encabezado podría ser Authorization o Range. Ver aquí para más.

Entonces el servidor responde así:

200 OK
Header3: foo
Header4: bar

content following here...

Por ejemplo, a header podría ser Date o Content-Type. Ver aquí para más.

Mira Wikipedia para HTTP para más información sobre este protocolo.

 18
Author: Albert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-22 13:14:10

Los enlaces para las especificaciones de cada aspecto de la pregunta son los siguientes:

  • OBTENER, PUBLICAR verbos (entre otros) - La especificación HTTP analiza exhaustivamente todos los aspectos de la comunicación HTTP (el protocolo para la comunicación entre el servidor web y el navegador). Explica los protocolos de mensaje de solicitud y mensaje de respuesta.

  • Cookies - se establecen adjuntando un encabezado HTTP Set-Cookie al HTTP respuesta.

  • Anillos de consulta - ¿es la parte de la URL en la solicitud HTTP que sigue a la primera aparición de un "?" caracter. La especificación vinculada corresponde a la sección 3.4 de la especificación URI.

  • Sessions - HTTP es un protocolo síncrono sin estado. Las sesiones, o la ilusión de estado, se pueden crear mediante (1) el uso de cookies para almacenar datos de estado como texto sin formato en el ordenador del cliente, (2) pasando valores de datos en la URL y querystring de la solicitud, (3) enviar solicitudes POST con una colección de valores que pueden indicar estado y, (4) almacenar información de estado por un mecanismo de persistencia del lado del servidor que se recupera mediante una clave de sesión (la clave de sesión se resuelve desde la cookie, URL/Querystring o la colección de valores POST.

Una explicación de HTTP puede durar días, pero he intentado proporcionar una respuesta concisa pero conceptualmente completa, e incluir los enlaces apropiados para lectura adicional de las especificaciones oficiales.

 16
Author: smartcaveman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-07 16:08:07

Su navegador está sentado encima de TCP / IP, ya que la web se basa en estándares, generalmente el puerto 80, lo que sucede es cuando ingresa una dirección, como google.com, su computadora donde se ejecuta el navegador, crea paquetes de datos, encapsulados en cada capa de acuerdo con los estándares OSI, (piense en sobres de diferentes tamaños, empaquetados en cada sobre del siguiente tamaño), OSI define 7 capas, en uno de los sobres contiene la dirección de origen y la dirección de destino (que es el sitio web) codificado en binario.

A medida que alcanza la 1a capa, en términos de OSI, se transmite a través del transmisor de medios (como cable, DSL).

Si está conectado a través de ISP, el paquete de capas de sobres se transmite al ISP, el sistema de red del ISP, se asoma a través del paquete de capas de sobres decodificando en orden inverso para averiguar la dirección, luego el ISP comprueba su base de datos del Sistema de Nombres de dominio para averiguar si tienen una ruta a esa dirección ( lo hace, lo reenvía a través de la red de Internet-de nuevo paquete de capas de sobres).

Si no lo hace, el ISP interroga al servidor DNS de nivel superior para decir 'Oye, consígueme la ruta para la dirección como la suministraste, es decir. el navegador', el servidor DNS de nivel superior luego pasa la ruta al ISP que luego se almacena en la memoria del servidor del ISP.

El paquete de capas de sobres son transmitidos y recibidos por el servidor del sitio web después de enrutamiento exitoso de los paquetes (piense en enrutamiento como señales de direcciones para llegar al servidor), que a su vez, desempaca el paquete de capas de sobres, extrae la dirección de origen y dice 'Aha, eso es para mí, correcto, conozco la dirección de destino (es decir, usted, el navegador), luego el servidor empaqueta las páginas web en sobres empaquetados en capas y las envía de vuelta (generalmente en ruta inversa, pero no siempre es el caso).

Su navegador recibe los sobres empaquetados y desempaca cada uno de ellos. Entonces tu computadora descifra los datos y su navegador muestra las páginas en la pantalla.

Espero que esta respuesta sea suficiente para su comprensión.

 8
Author: t0mm13b,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-24 21:18:36
 7
Author: cMinor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-10 03:26:13

Depende del servidor web, pero si te estás preguntando cómo se ve desde el lado del cliente, simplemente instala Live Headers y Firebug para firefox. Con la pestaña net en firebug y los encabezados live abiertos, debería quedar claro exactamente cómo interactúan los dos.

Para una mirada más profunda a los datos reales que van y vienen, use wireshark.

 4
Author: Stefan Kendall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-19 16:30:07

Existe un producto comercial con un logo interesante que permite ver todo tipo de tráfico entre servidor y cliente llamado charles.

Otras herramientas de código abierto incluyen: Live HttpHeaders, Wireshark o Firebug.

 3
Author: miku,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-19 16:37:11

La comunicación entre un navegador y un servidor web tiene lugar a tantos niveles que es casi imposible responder a esta pregunta. HTTP juega un papel, pero HTTP no tiene sentido sin TCP, que no tiene sentido sin IP, que no tiene sentido sin una red física en la que se envía. Luego, hay solicitudes POST vs GET que son similares pero lo suficientemente diferentes como para justificar una discusión especial. A veces, una solicitud HTTP necesita ser autenticada, a veces, no es necesario. Los tipos Mime deben ser indicado. Luego, un navegador envía una solicitud diferente si hay un proxy. Y entonces también las codificaciones juegan un papel. Entonces, supongo que la respuesta más concisa a este tipo de preguntas es: el navegador le pide al servidor datos y el servidor le da los datos solicitados al navegador.

 2
Author: René Nyffenegger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-19 16:44:59