Capítulo 2: La Capa de Aplicación Flashcards

Capa de Aplicación

1
Q

¿Cuáles son las dos arquitecturas de red predominantes en Internet? Explicar las características de cada una. Dar un ejemplo de una aplicación que use ambas arquitecturas.

A

Se tienen dos arquitecturas de red predominantes en Internet, y son: cliente-servidor y peer-to-peer.

  • Cliente-servidor: los clientes no interactúan entre sí, sino que lo hacen a través del servidor. El servidor tiene una dirección IP fija y conocida, tal que un cliente siempre puede contactarlo. En general, no alcanza con un sólo servidor, y se usan data centers.
  • Peer-to-peer (P2P): los clientes (peers) pueden comunicarse entre sí, sin depender de los servidores. Los peers son los dispositivos controlados por los usuarios (smartphones, tablets, notebooks).
    Ejemplos: BitTorrent, Skype.

Su principal ventaja es la auto-escalabilidad, dado que cada host suma capacidad de servicio a la aplicación al distribuir archivos para otros peers. También se dice que es eficiente económicamente ya que no requiere de una cantidad significativa de servidores y ancho de banda.
Las desventajas son que tiene problemas de seguridad, reliability y performance.

Los servicios de mensajería usan ambas arquitecturas, donde las direcciones IP se trackean mediante servidores, pero los mensajes son enviados directamente de usuario a usuario.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿De qué consisten las aplicaciones en la red? ¿Qué interfaz usan los procesos para enviar y recibir mensajes de la red?

A

Las aplicaciones en la red consisten de pares de procesos que se envían mensajes entre sí a través de la red.

Por ejemplo, un cliente browser intercambia mensajes con un servidor, una app P2P transfiriendo archivos de un peer a otro, etc.

Los procesos utilizan sockets, que son la interfaz entre la capa de aplicación y la capa de transporte dentro de un host. También se los puede pensar como la API entre la aplicación y la red.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué 2 aspectos del socket están en manos del desarrollador de la aplicación?

A

Hay dos aspectos del socket que están en manos del desarrollador de la app. Estos son:

  1. La elección del protocolo de transporte.
  2. La capacidad de ajustar algunos parámetros de la capa de transporte, como:
    - El tamaño del buffer
    - El tamaño de los segmentos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué datos se deben tener para identificar al proceso recibido en el proceso de destino?

A

Para identificar al proceso recibido en el proceso de destino, se necesita la dirección del host (IP) y un identificador del proceso en el host de destino (puerto).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué 4 servicios pueden ofrecer los protocolos de capa de transporte a las aplicaciones?

A

Los protocolos de capa de transporte pueden ofrecer 4 servicios a las aplicaciones:

  1. [TRA] Transferencia de datos confiable (RDT): garantiza la llegada y la integridad de los datos.
  2. [CA] Caudal (throughput): garantizar una tasa mínima a la que el proceso de origen puede entregarle datos al proceso receptor.
  3. [SIN] Sincronización: permite garantizar un umbral de demora en la transmisión de los datos (que ningún bit tarde más de x ms en llegar a destino).
  4. [SE] Seguridad: permite encriptar la información, chequear que la información no haya sido alterada en el camino, autenticar los extremos, etc.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Qué define un protocolo de la capa de aplicaciones y qué protocolos de transporte provee Internet?

A

Los protocolos de la capa de aplicaciones define cómo intercambiar mensajes entre procesos. En particular:

  • [Tipo] Los tipos de mensajes a intercambiar.
  • [Forma] La sintaxis de los mensajes.
  • [Contenido] La información que se envía en el mensaje.
  • [Cómo y Cuándo] Las reglas para determinar a un proceso cuándo y cómo enviar y recibir mensajes.

En un nivel inferior, los protocolos de transporte que se proveen son TCP y UDP.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué servicios provee TCP?

A

TCP provee 3 servicios:

  1. Orientado a la conexión: establece una conexión entre las dos entidades (handshake) antes de que empiece el flujo de datos.
  2. Reliable data transfer: garantiza la llegada y la integridad de los datos.
  3. Control de congestión para no sobrecargar la red.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué servicios provee UDP?

A

UDP provee servicios mínimos.

  • Sin conexión: no tiene handshake, empieza a enviar los datos de una.
  • Unreliable data transfer: podría pasar que los datos lleguen en distinto orden al que se enviaron.
  • No tiene un mecanismo de control de congestión.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. ¿Qué es HTTP?
  2. ¿Dónde se implementa?
  3. ¿Qué se define en HTTP?
  4. ¿Qué protocolo de transporte usa HTTP?
  5. ¿Qué significa que HTTP sea un protocolo sin estado?
  6. ¿Cómo se hace para identificar a un usuario para administrar el acceso si no se mantiene estado?
A

HTTP es el protocolo de la capa de aplicación de la web. Se implementa tanto en el cliente como en el servidor, que interactúan entre sí intercambiando mensajes HTTP. HTTP define la estructura de los mensajes y cómo deben enviarlos tanto el cliente como el servidor.

Básicamente, HTTP define cómo los clientes web deben solicitar páginas web al servidor y cómo los servidores deben enviar dichas páginas al cliente.

HTTP usa TCP como protocolo de transporte.

Que HTTP sea un protocolo sin estado significa que el servidor responde solicitudes sin almacenar ningún tipo de información sobre el cliente. Para identificar usuarios y administrar el acceso se utilizan las cookies, que están compuestas por:

  • un header en el mensaje de solicitud HTTP
  • un header en el mensaje de respuesta HTTP
  • un archivo que se almacena en el host pero lo controla el browser del usuario
  • una base de datos en el backend del sitio web.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Cuándo una conexión TCP es persistente?

¿Quién decide hacerlo así?

¿Qué desventajas presentan las conexiones no persistentes?

A

Una conexión TCP es persistente cuando todas las solicitudes se realizan bajo la misma conexión TCP. Si se utilizan conexiones separadas por cada par de request/response, se dice que es una conexión no persistente.

Esta es una decisión que debe tomar el desarrollador de la aplicación, y se indica en el campo connection del mensaje HTTP (Connection: close => se cierra la conexión después de responder).

Las desventajas de las conexiones no persistentes son:

  • tiene que crearse y mantenerse una nueva conexión por cada objeto solicitado, alocando buffers y variables, resultando costoso.
  • Hay una demora de 2RTT por cada objeto que se solicita (el handshake, y el par request/response).

En conexiones persistentes, se deja abierta la conexión y el servidor HTTP la cierra luego de un tiempo sin recibir nada.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Cómo se compone una request HTTP?

A

Una request HTTP se compone de la primer línea, los headers y el body.

La primer línea es la request line. Contiene 3 cosas:

  1. el método (GET, POST, PUT, DELETE, HEAD)
  2. la URL
  3. la versión de HTTP.

Lo siguiente son los 4 headers.

  1. Host indica dónde reside el objeto
  2. Connection indica si debe cerrarse la conexión después de responder
  3. User-Agent es el browser de la solicitud
  4. Accept-language indica el idioma preferente del objeto

Al final se encuentra el body.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Cómo se compone una respuesta HTTP?

A

Una respuesta HTTP se compone de una primer línea, los headers y el body.

La primer línea contiene:

  • la versión
  • el código de estado
  • una frase de estado

Lo siguiente son los 6 headers:

  1. Connection: persistencia de la conexión
  2. Fecha
  3. Fecha de última modificación: se usa para la caché de objetos
  4. Tamaño: número de bytes en el objeto
  5. Tipo: tipo de contenido
  6. Server: tipo de servidor

Al final se encuentra el body, que contiene al propio objeto solicitado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Qué es una caché web (o servidor proxy)? ¿Cómo funciona? ¿Qué ventajas y defectos tiene?

A

Una caché web (o servidor proxy) es un servidor de almacenamiento que responde solicitudes HTTP en nombre de un servidor web de origen. Lo que hace es mantener copias de los objetos más recientemente consultados. Es configurable desde el browser.

Funcionamiento:
1. El browser establece una conexión TCP con la caché y le solicita algún objeto.
2. La caché verifica si tiene almacenada una copia del objeto solicitado. Si la tiene, la devuelve en una respuesta HTTP.
3. Si la caché no tiene una copia almacenada, establece una conexión TCP con el servidor original y le envía una solicitud.
4. Cuando recibe la respuesta del servidor, guarda una copia del objeto y envía otra copia al cliente.

Ventajas:

  • Reduce el tiempo de respuesta a solicitudes.
  • Puede reducir significativamente el tráfico en los enlaces de acceso, llevando a reducir costos porque ayuda a mantener bajo el ancho de banda.

Defecto: podría pasar que el objeto cacheado no esté actualizado. Para eso existe el conditional GET, un mecanismo que permite a la caché verificar que sus objetos almacenados estén al día agregando un header If-Modified-Since a la solicitud con el método GET, y pidiendo el objeto al servidor sólo si el objeto fue modificado desde la fecha indicada en el header.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿De qué 3 elementos se compone el sistema de mails?

A

El sistema de mails se compone por tres elementos:

  1. user agents
  2. mail servers
  3. El Simple Mail Transfer Protocol (SMTP).

User agents son los agentes que permiten leer, reenviar, responder, guardar y redactar mensajes; por ejemplo Microsoft Outlook.

El protocolo SMTP usa el servicio de transferencia de datos confiable de TCP para transferir mails del servidor de mails del sender al servidor del mails del recipient.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Cómo funciona el SMTP cuando se quiere enviar un mail de una casilla a otra? ¿En qué se diferencian HTTP y SMTP?

A

Cuando se quiere enviar un mail de una casilla a otra, el SMTP funciona en 3 pasos:

  1. El cliente SMTP establece una conexión TCP al puerto 25 del servidor SMTP. Si el servidor está caído, vuelve a intentar más tarde.
  2. Una vez establecida la conexión, cliente y servidor hacen un hand-shaking donde el cliente indica el mail del sender y del recipient.
  3. El cliente envía el mensaje.

Se repite el proceso si el cliente necesita enviar más mensajes, sino se cierra la conexión.

Las diferencias entre HTTP y SMTP son:

  • HTTP es un pull protocol, la conexión la inicia el cliente que quiere recibir algo. SMTP es un push protocol, el mail server inicia la conexión TCP para enviarle algo a otro mail server.
  • SMTP requiere que el cuerpo del mensaje esté en formato 7-bit ASCII.
  • HTTP devuelve cada objeto encapsulado en una respuesta distinta, mientras que SMTP devuelve todo en un mismo mensaje.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Qué formas hay de identificar a un host?

A

Hay dos maneras de identificar a un host: por su nombre (hostname) o por su IP.

17
Q

¿Qué es y qué hace DNS? ¿Cómo se implementa? ¿Cuáles son los pasos de una consulta DNS desde un browser?

A

DNS (Domain Name System) es un protocolo de capa de aplicación que permite traducir de un nombre de hostname a una IP, y viceversa.

Se implementa como una base de datos distribuida con una jerarquía de servidores DNS, que es consultada por los hosts.

  • Los servidores raíz son el primer nivel de esta jerarquía y son responsables de responder las consultas de DNS sobre los TLDs (dominios de nivel superior).
  • El DNS raíz no tiene direcciones IP estáticas para sus servidores. En cambio, hay un conjunto de servidores raíz (13, nombrados con letras de A a M) administrados por varias organizaciones alrededor del mundo.
  • Cada uno de estos servidores raíz tiene múltiples direcciones IP y están ubicados en diferentes lugares geográficos para garantizar la resiliencia y la distribución de la carga.

Los pasos de una consulta DNS son 4:
1. El browser extrae el hostname de la URL y se lo pasa al cliente DNS.
2. El cliente DNS envía una consulta con el hostname al servidor DNS.
3. El cliente DNS recibe una respuesta con la dirección IP del hostname, y la envía al browser.
4. Una vez que el browser tiene la IP, puede abrir la conexión TCP con el servidor HTTP.

18
Q

¿Qué 3 servicios ofrece DNS?

A

Los servicios que ofrece DNS son 3:

  1. Host aliasing: un host puede tener uno o más alias. DNS puede usarse para obtener el hostname real a partir de un alias.
  2. Mail server aliasing: el hostname de un correo electrónico puede ser complicado, por lo que se usan alias: yahoo.com puede ser alias de relay1.west-coast.yahoo.com, por ejemplo. Se puede usar DNS para obtener un hostname real de un mail server a partir de un alias.
  3. Distribución de carga: sitios con mucho tránsito o datos en general se distribuyen en varios servidores; tal que cada servidor corre con un host distinto y con distinta IP, o sea que una serie de IPs resultan asociadas a un hostname. La base de datos de DNS almacena este set de IPs relacionado al sitio.
19
Q

¿Qué 4 desventajas tiene una base de datos DNS centralizada?

A

Una base de datos DNS centralizada tiene 4 desventajas:

  1. [1] Un sólo punto de falla. Si el servidor DNS falla, falla toda la red.
  2. [V] Volumen de tráfico: Un único servidor DNS tendría que gestionar todas las consultas DNS (de cientos de millones de hosts).
  3. [M] Mantenimiento: Ese único servidor DNS tendría que mantener registros de todos los hosts de internet. No sólo sería una base de datos enorme, sino que tendría que ser actualizada con frecuencia, con el fin de incluir todos los hosts nuevos.
  4. [D] Distancia: Un database centralizado que podría estar distante: un único DNS no puede estar “cerca” de todos los cleintes que efectúan consultas.

Básicamente, tener una base DNS centralizada no podría escalarse. Por estas razones, la base de datos se distribuye entre varios servidores (se tiene un diseño distribuido).

20
Q

Explicar el recorrido de la jerarquía de servidores DNS a partir de una consulta en la que el host A (cse.nyu.edu) quiere la IP del host B (gaia.cs.umass.edu).

A

Analicemos el recorrido de la jerarquía de servidores DNS a partir de una consulta en la que un host A (cse.nyu.edu) quiere la IP del host B (gaia.cs.umass.edu).

  1. Host A le envía un mensaje a su servidor DNS local, con el hostname que debe traducir (gaia.cs.umass.edu).
  2. El servidor DNS local reenvía el mensaje con la query al servidor DNS raíz, que a partir del sufijo “edu” de la query, responde una lista de direcciones IP para servidores Top Level Domain (TLD) responsables de “edu”.
  3. El servidor DNS local reenvía el mensaje con la query a uno de estos servidores TLD. El servidor TLD responde la dirección IP del servidor DNS autoritativo que corresponde al sufijo “umass.edu”.
  4. Finalmente, el servidor DNS local reenvía la query al DNS de umass.edu, que responde la dirección IP del Host B (gaia.cs.umass.edu).
  5. El DNS local le responde al host cuál es la IP que buscaba.
21
Q

¿Qué optimizaciones implementa DNS para reducir la cantidad de consultas a múltiples servidores?

A

Para reducir la cantidad de consultas a múltiples servidores, DNS usa una caché para reducir el delay y la cantidad de mensajes.

Los servidores DNS almacenan tuplas llamadas resource records, que contienen:

  • un nombre
  • un valor
  • un tipo
  • un TTL (time-to-live, cuándo debe ser eliminado de la caché).

El significado de los campos nombre y valor depende del tipo del resource record:

  • Tipo A: el nombre es un hostname, y el valor es su dirección IP.
  • Tipo NS: el nombre es un dominio y el valor es el hostname de un servidor DNS de mayor jerarquía que sabe cómo obtener la IP.
  • Tipo CNAME: el nombre es un alias de un host y el valor es el hostname canónico.
  • Tipo MX: el nombre es un alias del mail server y el valor es el hostname canónico.
22
Q

¿Qué es una CDN y qué busca? ¿Qué hacen algunas CDNs con los videos poco populares? ¿Cómo aprovechan DNS las CDNs?

A

Una CDN (content distribution network) es una red de servidores distribuidos por todo el mundo.

Una CDN busca acercar geográficamente el contenido a los clientes que consultan a un servidor, para:
- reducir la cantidad de enlaces y routers que recorren los paquetes,
- bajar la demanda de ancho de banda cuando un contenido es muy popular y debe enviarse muchas veces por los mismos enlaces.

Con los videos poco populares, algunas CDNs guardan los videos en clusters, y si un cluster necesita un video que no tiene, se lo pide a otro y guarda una copia local mientras hace el streaming del video.

Muchas CDNs aprovechan DNS para redirigir solicitudes.
Lo que sucede es lo siguiente:

  1. El usuario ingresa a la url y hace clic sobre un vínculo de video. El host envía la solicitud DNS para la url video.netcinema.com/id (por ejemplo).
  2. El DNS local del usuario envía la solicitud al servidor de mayor jerarquía de NetCinema. Y este, en vez de devolver la IP, devuelve otro hostname de un dominio CDN.
  3. El DNS local envía una segunda query, esta vez preguntando por el hostname de la CDN, y el sistema DNS de la CDN devuelve las direcciones IP de un servidor de contenido CDN.
  4. El DNS local le devuelve al host del usuario la IP del nodo CDN encargado de servir el contenido.
23
Q

Explique el proceso de descarga de un archivo por medio de BitTorrent

A

Sobre comportamiento y peers:
En BitTorrent, mientras un peer descarga porciones de archivo, también sube porciones a otros peers.

Cada torrent tiene un nodo llamado tracker, que lleva registro de los peers que están participando del torrent.

Cuando aparece un nuevo peer, el tracker selecciona un subset de peers y le envía al nuevo las IPs de los peers del subset. Con estas IPs, el nuevo puede establecer una conexión TCP con cada uno. Con el tiempo los peers van y vienen, y las conexiones van cambiando.

Sobre compartir entre vecinos:
Periódicamente se consulta a otros peers vecinos qué porciones del archivo tienen, se compara con los propios y se piden los que no se tenga.

Para decidir a qué vecinos pedirles datos, se usa el mecanismo rarest first, donde la idea es pedir los bits menos repetidos entre los vecinos, así se distribuyen equitativamente las partes.

Para decidir a qué vecinos enviarles información, se le da prioridad a aquellos que están compartiendo datos a más velocidad, y adicionalmente se incluye a uno seleccionado de manera aleatoria.