Diseño de Protocolos Prof. Wilmer Pereira.

1 Diseño de Protocolos Prof. Wilmer Pereira ...
Author: Ysabel Ortiz
0 downloads 3 Views

1 Diseño de Protocolos Prof. Wilmer Pereira

2 Protocolo Protocolo: Su misión es:Es un conjunto de normas y reglas, convenidas de mutuo acuerdo entre todos los participantes en una comunicación, estas reglas deben estar organizadas y no tener ambigüedad. Su misión es: Hacer que la comunicación entre computadoras de una red sea posible.

3 Elementos Claves de un ProtocoloPara que dos entidades se comuniquen con éxito, se requiere que hablen el mismo idioma. Las entidades deben seguir una serie de convenciones mutuamente aceptadas a fin de saber: Qué se comunican Cómo se comunican Cuándo se comunican

4 Elementos Claves de un ProtocoloLos puntos claves que definen o caracterizan a un protocolo son: Conjunto de mensajes válidos Características de cada tipo mensaje:  Aspectos Sintácticos  (campos que contiene + formato) y  Aspectos Semánticos (significado de los campos + acciones asociadas)‏

5 Elementos Claves al Diseñar un Protocolo de ComunicaciónIdentificar los actores y los roles que juegan. Identificar los servicios que cada actor va a ofrecer. ¿cómo “direccionar” cada actor? Definir los mensajes que usará el protocolo Definir el formato de las tramas de los mensajes Definir el significado o la interpretación de los campos de los mensajes Definir el intercambio de mensajes Definir como manejar los casos de error

6 ¿Qué aspectos se deben considerar al diseñar un Protocolo de comunicación a nivel de Aplicación?¿Cuales son las necesidades de información de la aplicación?. ¿Cómo es el esquema de comunicación que debe ocurrir entre los actores?: ¿Quien habla primero, quien escucha, quien habla luego? ¿Hay sólo una pregunta y una respuesta?, ¿la interacción incluye una secuencia de requerimientos y respuestas encadenados?, ¿se pide una confirmación de cada mensaje? o ¿se pide solamente una confirmación global?. ¿Cuál o cuáles son las secuencias correctas de comunicación? ¿Qué hacer cuando se rompe una secuencia correcta de comunicación? ¿Qué debe ocurrir en el caso de que se interrumpa una comunicación? ¿Qué debe ocurrir en el caso que una comunicación no pueda establecerse?

7 Principios de diseño para protocolosLos principios pueden resumirse en: 1) Asegurarse que la comunicación funciona Hacer prototipos para probar conceptos, no publicar el estándar y luego probarlo 2.) Mantener el protocolo simple Si hay duda, usar la solución mas simple. Evitar funcionalidades innecesarias. 3) Tomar decisiones claras Evitar múltiples formas de hacer una misma cosa. (En especial cuando los resultados pueden no ser los mismos) 4) Usar modularidad Esto lleva al diseño de protocolos en pilas 5) Esperar heterogeneidad En una red grande habrán diferentes tipos de hardware, medios, etc. Por esto el diseño debe ser simple, general y flexible.

8 Principios de diseño para protocolos de Red6) Evitar opciones y parámetros estáticos Si hay parámetros inevitables (e.g., tamaño de paquete), no dejarlos fijos, que los extremos negocien para llegar a un acuerdo. 7) Tener un buen diseño, sin necesariamente buscar que sea perfecto A veces es mejor no contemplar ciertas condiciones para mantener un diseño limpio y simple; las excepciones que se manejen aparte 8) Ser estrictos al enviar y tolerantes al recibir Enviar paquetes que se apeguen completamente a los estándares, pero ser capaces de recibir y manejar los que no lo hagan 9) Pensar en la escalabilidad del sistema Si se van a tener millones de nodos, no se puede pensar en bases de datos centralizadas y la carga deber distribuirse lo más posible 10) Considerar desempeño y costo Si una red o un aplicación tiene pobre desempeño o resulta muy cara, nadie la usará

9 Comportamiento de las entidades en el protocoloCada una de las entidades que emplean el protocolo debe: Aceptar todas las secuencias correctas de mensajes Detectar cualquier secuencia incorrecta de mensajes Recuperarse a partir de algún error que el protocolo detecte La automatización se puede describir mediante una máquinas o autómata de estados finitos. Definir el conjunto de las sentencias de entrada y salida Definir el conjunto de estados y las transiciones entre ellos

10 Bases del Modelo de capasCada capa del modelo tiene sus funciones Se definen protocolos para cada capa de manera que la capa C de una máquina pueda comunicarse con la capa C de otra máquina

11 Capas Aplicación HTTP, FTP, DNS Transporte TCP, UDP, RTP, SCTPInternet Para redes TCP/IP es el IP Enlace Ethernet, Token Ring, PPP, HDLC, Frame Relay, RDSI, ATM, IEEE , FDDI Físico medio físico, y técnicas de codificación

12 Ejemplo de un protocolo Orientado a bit y con tamaño fijoCaracterísticas Ejemplo de un protocolo Orientado a bit y con tamaño fijo

13 Capa de red: Datagrama IP

14 Protocolos de aplicaciónEjemplo de un protocolo Orientado a byte con tamaños de trama variables

15 Protocolo de aplicaciónProtocolos de Aplicación comunes son: HTTP: es el Protocolo de Transferencia de Hipertexto (en inglés HyperText Transfer Protocol). FTP: es el Protocolo de Transferencia de Archivos(en inglés File Transfer Protocol). SMTP: es el Protocolo de Transferencia de Correo (en inglés Simple Mail Transfer Protocol). IRC: es el Chat Basado en Internet (en inglés Internet Relay Chat).

16 Protocolos de AplicaciónFacilitan la comunicación entre una aplicación y un servidor. Tienden a consistir en estos tres puntos: Abrir la conexión. Hacer y satisfacer peticiones de servicio. Manejar e informar de errores. Cerrar la conexión

17 Protocolo de aplicación (HTTP)Cliente Servidor Establecimiento de la conexión GET HTTP/1.0 User-agent Mozilla/6.0 Accept: text/html, image/gif, image/jpg Accept-languaje:es HTTP/ OK Date: Thu, 23 Nov :00:15 GMT Server: Apache/2.0 (Unix) Last-Modified: Mon, 10 Sept 2007 Content-Length:6821 Content-Type: text/html Esta es la pagina de Respuesta Esta es la pagina de Respuesta

18 Ejemplo 1 … sencillo … Se requiere un servidor que sume varios números enteros y retorne el resultado. Ideas?

19 Consideraciones … Identificar los actores participantes en la comunicación. ¿Quién tiene y quién requiere la información del sistema? Identificar cuál es el rol de cada uno de los actores participantes ( cliente, servidor, cliente/servidor, pares o peer-to-peer). ¿Como se van a identificar o diferenciar estos actores? (direccionamiento) ¿Cuáles son las necesidades de información de la aplicación? ¿Cómo es el esquema de comunicación que debe ocurrir entre los actores?: ¿Quien habla primero, quien escucha, quien habla luego? ¿Hay sólo una pregunta y una respuesta, la interacción incluye una secuencia de requerimiento y respuestas encadenados, se pide confirmación de cada mensaje ? ¿Cuál o cuales son las secuencias correctas de comunicación ? ¿Qué hacer cuando se rompe una secuencia correcta de comunicación? ¿Qué debe ocurrir en el caso que se interrumpa una comunicación ? ¿Qué debe ocurrir en el caso que una comunicación no pueda establecerse ?

20 Posible solución … Debemos definir los tipos de mensajes:Request Responses Errors Se podría tomar un delimitador o conjunto de delimitadores para marcar inicio y fin de los elementos de cada mensaje

21 Posible solución … Request ResponseFormato: numOperan%operand1%operand2%...operanN% Ejemplo: 4%1%2%3%4% Response Formato: result% Ejemplo: 10% Error: con literales o códigos de error Ejemplo: “Overflow %” Ejemplo: “Unknow format %”

22 Ejemplo 2 Se requiere un servidor que tome los datos de una persona (nombre, cedula, edad, sexo, dirección, teléfono) y realice una inscripción en un curso y responda con la información sobre el curso: horarios, lugar. Ideas?

23 Soluciones? ¿Nos puede servir la solución anterior?¿Que pasa con el delimitador? ¿Podríamos colocar tamaño fijo a los campos de datos? ¿Que pasa con datos de tamaño variable?

24 Soluciones Este tipo de datos requieren un formato más sofisticadoY algunas veces de herramientas que permitan definir estas especificaciones Por ejemplo: usar un lenguaje de marcado como XML

25 Lenguajes de marcado XML

26 Xml (eXtensible Markup Language)XML es un metalenguaje que define la sintaxis utilizada para definir otros lenguajes de etiquetas estructurados. Xml define la estructura del documento, en un lenguaje de descripción de datos. Es mucho mas estricto que HTML. No sustituye al HTML. Legible por usuarios humanos y aplicaciones informáticas. Permite la intercomunicación entre aplicaciones. Contiene metainformación (metadatos) Xml es extensible: puedes añadir las etiquetas que quieras. Hacer un ejemplo xml viendo esos puntos. Hacer el ejemplo de la biblioteca. El Quijote Cervantes assdaasdfsadfasdfasdf 1605 Entremeses

27 XML: Lo bueno. Es multiplataforma.Tiene curva de aprendizaje muy plana. Puede ser barato (muchos editores, visores, verificadores, etc., gratuitos y comerciales).

28 Formato Todo elemento esta delimitado Un elemento puede ser sencillo< /> Un elemento puede ser sencillo Tener un atributo Puede tener sub elementos El código inválido no es culpa del HTML sino de la falta de verificación formal durante su creación y lectura. Veremos como el XML resuelve este problema. Es como cuando usan Basic vs Pascal, no es culpa de Basic que la gente escriba código mal con él, simplemente que favorece la creación de código incorrecto. Escribir HTML, igual que cualquier trabajo de programación, requiere que se pueda reciclar código de manera limpia y lo más automatizadamente posible. Es posible usar herramientas externas para lograrlo con HTML, pero el XML (como veremos más adelante) lo facilita. Es importante recordar que cuando se creo el HTML no se hizo como un mecanismo de diseño gráfico, sino como una herramienta de presentación de hipertexto, es decir solo describía el formato básico del texto y qué elementos del texto estaban relacionados (por hiperenlaces) con otros texto. Su propósito era describir el hipertexto de manera independiente de la plataforma.

29 XML Ejemplo

30 Estructura lógica courses course course codc student student codcAs a first example, let’s see a university database. [Describe the Example] In this case, if we know is an identifier for students, we are storing redundant information. In this case, the student with number “st1” appears twice codc student student codc student “cs100” . . . “cs225” id name grade id name grade “123” “Pepe” “3” “124” “Luís” “4

31 Estructura del XML cs100 123 Pepe 3 124 Luis 5 ... cs225 124 Luis 4 125 Ana ...

32 Ahora... otro ejemplo. Lo que importa es el delimitado de xmlLos espacios, los LF, CR, líneas en blanco no importan

33 Otro ejemplo diferente ...

34 El Otro ejemplo diferente ...

35 Recapitulemos: EjemploSe requiere un servidor que tome los datos de una persona (curso,nombre, cedula, edad, sexo, dirección, teléfono) y realice una inscripción en un curso y responda con la información sobre el curso, horarios, lugar.

36 Request: Format ...

37 Request: EspecificacionesPara cursos: ID es un valor entero Para Estudiante: ...

38 Request: Ejemplo ...

39 Response: Format

40 Response: EspecificacionesPara cursos: ID es un valor entero ...

41 Response: Ejemplo En la esquina de X con Y, edificio ZZ, piso 666, etc

42 Response mas detallado (dos formas diferentes de anotar la misma información)

43 El procesador XML (parser).Software que reconoce e interpreta las reglas del XML. También se le llama analizador o intérprete XML. Con XML bien formado: Revisa que el documento siga las reglas del XML para considerarse bien formado.

44 Protocolos y Herramientas para describir los protocolosDiagrama de secuencia Diagrama de estados (autómata de estado finitos)

45 Diagramas de secuenciaDiagrama que muestra las interacciones entre los objetos organizadas en una secuencia temporal. En particular muestra los objetos participantes en la interacción y la secuencia de mensajes intercambiados. Se usa para indicar cuál es el intercambio de mensajes que debe ocurrir entre los componentes involucrados

46

47

48 Diagrama de estados de una cafetera

49 Diagrama de estados Inicio Diagrama de secuencia fallo Login+claveCliente Servidor Login+clave fallo Inicio Diagrama de secuencia Espera autenticación autenticado quit Recibe comandos comando Espera respuesta quit respuesta

50 Redes de Computadores Tema 4HTTP Prof. Ricardo Gonzalez Redes de Computadores Tema 4

51 Web y HTTP Una página Web consta de objetosAlgunos términos Una página Web consta de objetos Los objetos pueden ser un archivo HTML, una imagen JPEG, un applet Java, un archivo de audio,… Una página Web consta de un archivo HTML base que incluye diversos objetos referenciados Cada objeto se direcciona con un URL Ejemplo de un URL: Protocolo Nombre del host Nombre del path Prof. Ricardo Gonzalez Redes de Computadores

52 Redes de Computadores Tema 4Panorámica de HTTP HTTP: Protocolo de Transferencia de HiperTexto Es el protocolo de la capa de aplicación para el Web Usa el modelo cliente/servidor Cliente: browser o navegador que solicita, recibe y muestra los objetos Web Servidor: Servidor www que envía objetos en respuesta a las solicitudes del browser HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 Solicitud HTTP PC ejecutando IE Explorer Respuesta HTTP Solicitud HTTP Servidor ejecutando El servidor Web Apache Respuesta HTTP Mac ejecutando Netscape Navigator Prof. Ricardo Gonzalez Redes de Computadores Tema 4

53 Funcionamiento de HTTP1. El cliente realiza una petición o apertura activa (request) al servidor (puerto 80, por defecto) 2. Solicita la transacción (request) con HTTP: GET, POST, HEAD, PUT, … 3. El servidor envía la respuesta (response) en HTML 4. Se cierra la conexión (en HTTP/1.0) Prof. Ricardo Gonzalez Redes de Computadores

54 Mensajes HTTP Dos tipos de mensajes usando ASCII (texto plano):Request (Solicitud) Response (Respuesta) Solicitudes HTTP/1.0 Prof. Ricardo Gonzalez Redes de Computadores

55 Redes de Computadores Tema 4Mensajes HTTP Respuestas HTTP/1.0 Prof. Ricardo Gonzalez Redes de Computadores Tema 4

56 Redes de Computadores Tema 4Mensajes HTTP Ejemplo real de mensajes HTTP Prof. Ricardo Gonzalez Redes de Computadores Tema 4

57 Modelamiento del tiempo de respuestaDefinición de RTT: tiempo para enviar un pequeño paquete y que este viaje desde el cliente hasta el servidor y que regrese. Tiempo de respuesta: Un RTT para iniciar la conexión TCP Un RTT para la solicitud HTTP y para que los primeros bytes de la respuesta HTTP regresen Tiempo de transmisión del archivo tiempo para transmitir archivo Inicia Conexión TCP RTT solicita recibido tiempo total = 2RTT+tiempo de transmisión Prof. Ricardo Gonzalez Redes de Computadores Tema 4

58 Mensaje de solicitud HTTP: formato generalProf. Ricardo Gonzalez Redes de Computadores Tema 4

59 Mensaje de respuesta de HTTPLínea de estado (código de estado del Protocolo, frase de estado) HTTP/ OK Connection close Date: Thu, 06 Aug :00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html datos datos datos datos datos ... Líneas de encabezado datos, es decir, archivo HTML solicitado Prof. Ricardo Gonzalez Redes de Computadores Tema 4

60 Redes de Computadores Tema 4 Prof. Ricardo Gonzalez Redes de Computadores Tema 4

61 Redes de Computadores Tema 4 Arquitectura de un sistema de correo electrónico SMTP POP3 IMAP RFC 822 Prof. Ricardo Gonzalez Redes de Computadores Tema 4

62 Arquitectura del sistema de correoFunciones (o servicios) del sistema de correo: edición de mensajes Transferencia de mensajes generación de informes Subsistemas de distribución (SMTP, ESMTP) de entrega final (POP3, IMAP) Agentes de transferencia (demonios) Prof. Ricardo Gonzalez Redes de Computadores Tema 4

63 Protocolos de entrega final de usuarioSolución: un buzón en el servidor PC receptor Agente de usuario conexión NO permanente PC emisor Agente de transferencia (SMTP) Internet Servidor (con buzón) conexión permanente POP3 Solución: POP3 Problema: obtener correo del buzón Prof. Ricardo Gonzalez Redes de Computadores Tema 4

64 Agentes de transferencia de distribución (SMTP)El SMTP protocolo sencillo cliente/servidor formato ASCII Establecer comunicación TCP al puerto 25 Prof. Ricardo Gonzalez Redes de Computadores Tema 4

65 Redes de Computadores Tema 4Correo electrónico Tres componentes principales: Agentes de usuario Servidores de correo Protocolo simple de transferencia de correo: SMTP Agente de usuario Conocido como “lector de correo” Permite elaborar, editar y leer mensajes de correo. Ejemplos: Eudora, Outlook, elm, Netscape Messanger Recupera los mensajes colocados en el servidor Agente de usuario servidor de correo Agente de usuario SMTP servidor de correo Agente de usuario SMTP SMTP Agente de usuario Agente de usuario servidor de correo Buzón del usuario Cola de mensajes salientes Agente de usuario Prof. Ricardo Gonzalez Redes de Computadores Tema 4

66 Correo electrónico: SMTP [RFC 2821]Utiliza TCP para transferir confiablemente mensajes de correo desde el cliente al servidor, utiliza el puerto 25 Transferencia directa: entre el servidor que envía y el servidor que recibe La transferencia tiene tres fases handshaking (saludo) Transferencia de los mensajes cierre Interacción comando/respuesta Comandos: texto ASCII Respuesta: códigos de estado y frase Los mensajes deben estar en ASCII de 7 bits Prof. Ricardo Gonzalez Redes de Computadores Tema 4

67 Agentes de transferencia de distribución (SMTP) : protocoloEl servidor comienza por enviar una línea de texto que proporciona su identidad e indica si está preparado o no para recibir correo: a.- Si no lo está, el cliente libera la conexión y lo intenta después. b.- Si está dispuesto a aceptar correo electrónico, el cliente anuncia de quién viene el mensaje, y a quién está dirigido. Si existe tal destinatario en el destino, el servidor da al cliente permiso para enviar el mensaje. Entonces el cliente envía el mensaje y el servidor genera un acuse de recibo. Si existe más correo electrónico también se envía ahora. Una vez que todo el correo ha sido intercambiado en ambas direcciones, se libera la conexión. Prof. Ricardo Gonzalez Redes de Computadores Tema 4

68 Comandos SMTP: clienteDescripción HELO Identifica el remitente al destinatario. MAIL FROM: Identifica una transacción de correo e identifica al emisor. RCPT TO: Se utiliza para identificar un destinatario individual . Si se necesita identificar múltiples destinatarios es necesario repetir el comando. DATA Permite enviar una serie de líneas de texto. El tamaño máximo de una línea es de caracteres. Cada línea va seguida de un retorno de carro y avance de línea . La última línea debe llevar únicamente el carácter punto “.” seguido de . RSET Aborta la transacción de correo actual. NOOP No operación. Indica al extremo que envíe una respuesta positiva . Keepalives QUIT Pide al otro extremo que envíe una respuesta positiva y cierre la conexión. VRFY Pide al receptor que confirme que un nombre identifica a un destinatario válido EXPN Pide al receptor la confirmación de una lista de correo y que devuelva los nombres de los usuarios de dicha lista. HELP Pide al otro extremo información sobre los comandos disponibles TURN El emisor pide que se inviertan los papeles , para poder actuar como receptor. El receptor puede negarse a dicha petición. SOML Si el destinatario está conectado, entrega el mensaje directamente al terminal, en caso contrario lo entrega como correo convencional. SAML Entrega del mensaje en el buzón del destinatario. En caso de estar conectado también lo hace al terminal. SEND Si el destinatario está conectado, entrega el mensaje directamente al terminal. Prof. Ricardo Gonzalez Redes de Computadores Tema 4

69 Códigos de respuesta SMTP: servidorProf. Ricardo Gonzalez Redes de Computadores Tema 4

70 Ejemplo del uso de comandos SMTPProf. Ricardo Gonzalez Redes de Computadores Tema 4

71 Ejemplo de la interacción SMTPS: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: S: 250 Sender ok C: RCPT TO: S: Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: ¿Te gusta la salsa de tomate? C: ¿y los pepinillos? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection C -> S C <- S Prof. Ricardo Gonzalez Redes de Computadores Tema 4

72 Interacción SMTP hecha “a mano” :telnet nombre_servidor 25 Se observa el código 220 como respuesta del servidor Se digitan los comandos HELO, MAIL FROM, RCPT TO, DATA, QUIT Lo anterior le permite enviar un mensaje de correo electrónico sin utilizar el cliente de correo Prof. Ricardo Gonzalez Redes de Computadores Tema 4

73 Links Algunos protocolos de capa aplicación Tutoriales XMLHTML FTP SSH SMTP Tutoriales XML Introducción al lenguaje XML Documentos XML bien formados Algunos ejemplos!!!

74 Fuentes Protocolos en Internet. Clase de Diseño de Protocolos del Prof. Eduardo Blanco. Xinu. Protocol Design.