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
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.
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
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
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
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
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.