¿Por qué SSH se siente mucho más rápido que HTTP?

3

Si ssh en un servidor, el tiempo entre decir, emitir el comando ls y obtener el resultado es casi nada.

Sin embargo, si emito una solicitud http para una página html simple (que contiene solo la palabra 'hola') en el mismo servidor en el navegador, se tarda al menos un segundo.

¿Por qué es esto?

Collierre
fuente
1
Si quieres decir, "¿Por qué algo se siente de alguna manera?" esta pregunta será cerrada Estoy seguro de que puedes editarlo para cumplir con las preguntas frecuentes
Xavierjazz
5
¿Por qué el andar en bicicleta es mucho más rápido que hacer una taza de café? Estás comparando tecnologías completamente diferentes, no hay ningún punto de referencia.
Joel E Salas

Respuestas:

9

No sé mucho sobre cómo funciona SSH, pero por lo que entiendo, básicamente toma la entrada del teclado y la canaliza hacia la consola de una consola remota. Bastante ligero una vez que se ha establecido la conexión y se han intercambiado las claves.

HTTP es un protocolo totalmente diferente. Funciona un poco así, asumiendo que es solo una página HTML estática:

  • Establecer sesión TCP / IP (esto podría implicar búsquedas de DNS)
  • Enviar encabezados HTTP
  • Enviar cuerpo de solicitud HTTP (GET, POST, PUT, etc.)
  • Servidor web recibe solicitud HTTP
  • El servidor web verifica sus asignaciones de manejadores para averiguar cómo procesar la solicitud
  • El servidor web recoge el archivo HTML estático
  • El servidor web formula los encabezados de respuesta y los envía por el cable
  • El servidor web empuja el archivo HTML estático por el cable
  • Tu navegador recibe los encabezados.
  • Su navegador web recibe la respuesta.
  • Su navegador web espera a que se cierre la conexión
  • Su navegador web luego analiza el HTML
  • Su navegador web luego presenta el HTML al monitor

Esa es una visión general muy básica, pero hay mucho más en HTTP. No es un protocolo "ligero", a diferencia de SSH.

Además, a diferencia de SSH, la mayoría de las solicitudes HTTP son autocontenidas y se restablecen sus conexiones TCP. SSH mantiene su sesión TCP abierta, lo que significa que cada vez que presiona una tecla, no tiene que restablecer la conexión. Es por eso que su navegador web puede sobrevivir al ser desconectado por unos minutos, pero en el momento en que pierde su conexión, su sesión de SSH se cae.

Mark Henderson
fuente
Gracias. Realmente no creía que ssh mantiene la conexión abierta, mientras que para http debe volver a abrirse y cerrarse para cada solicitud.
Collierre
9

Estás comparando manzanas con naranjas.

El tiempo para descargar su página web de una sola palabra consiste principalmente en el tiempo necesario para configurar realmente la conexión: buscar el registro DNS del host, y luego establecer una conexión TCP con él, luego solicitar el documento.

Esto es más comparable al tiempo que le toma configurar una conexión ssh: buscar el registro DNS para el host y luego hacer una conexión TCP, luego autenticar, lo que en realidad es mucho más largo, ya que ssh es un protocolo mucho más complejo. (y tiene que configurar el cifrado).

El tiempo de respuesta interactivo en una sesión ssh se debe principalmente a la cantidad de latencia entre usted y el servidor remoto, una vez que se establece la conexión. No hay un análogo de uno a uno en HTTP, aunque HTTP tiene una opción de mantener viva que está activada de forma predeterminada y mantiene la conexión con el servidor abierta para que se puedan descargar múltiples recursos sin la sobrecarga de configurar el conexión de nuevo.

Michael Hampton
fuente
"Esto es más comparable al tiempo que le toma configurar una conexión ssh". Esta es una buena analogía y, en este caso, el tiempo que se tarda en configurar una conexión SSH con mi servidor es mucho más similar a que se toma para una solicitud HTTP de lo que es a una ls sobre SSH.
Collierre
8

Acabo de programar una conexión SSH y un wget.

$ time ssh (host) echo "" > /dev/null

real        0m0.461s
user        0m0.004s
sys         0m0.012s

$ time wget (host)

(deletia)
real        0m0.013s
user        0m0.008s
sys         0m0.000s

"Más rápido" es relativo.

Andrew
fuente
tu eres genial
moeiscool
0

No olvide que el SSH interactivo establece la opción TCP NODELAY de socket para reducir la latencia a expensas del ancho de banda utilizado, por lo que casi todas sus pulsaciones se envían al servidor de inmediato.

Nikolai N Fetissov
fuente