Upload
ysabel-ortiz
View
109
Download
1
Embed Size (px)
Citation preview
Diseño de Protocolos
Prof. Wilmer Pereira
1
Protocolo
Protocolo: – 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.
2
Elementos Claves de un Protocolo
Para 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
3
Elementos Claves de un Protocolo
Los 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)4
Elementos Claves al Diseñar un Protocolo de Comunicación
1) Identificar los actores y los roles que juegan.2) Identificar los servicios que cada actor va a
ofrecer.3) ¿cómo “direccionar” cada actor?4) Definir los mensajes que usará el protocolo5) Definir el formato de las tramas de los
mensajes6) Definir el significado o la interpretación de
los campos de los mensajes7) Definir el intercambio de mensajes8) Definir como manejar los casos de error
5
¿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?6
Principios de diseño para protocolos
Los 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 simpleSi hay duda, usar la solución mas simple. Evitar funcionalidades innecesarias.
3) Tomar decisiones clarasEvitar múltiples formas de hacer una misma cosa. (En especial cuando los resultados pueden no ser los mismos)
4) Usar modularidadEsto lleva al diseño de protocolos en pilas
5) Esperar heterogeneidadEn una red grande habrán diferentes tipos de hardware, medios, etc. Por esto el diseño debe ser simple, general y flexible.
7
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 perfectoA 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 recibirEnviar 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 sistemaSi 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 costoSi una red o un aplicación tiene pobre desempeño o resulta muy cara, nadie la usará
8
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
9
Bases del Modelo de capas
Cada 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
10
CapasAplicación HTTP, FTP, DNS
Transporte TCP, UDP, RTP, SCTP
Internet Para redes TCP/IP es el IP
Enlace Ethernet, Token Ring, PPP, HDLC, Frame Relay, RDSI, ATM, IEEE 802.11, FDDI
Físico medio físico, y técnicas de codificación
11
Características
Ejemplo de un protocolo Orientado a bit y con tamaño fijo
12
Capa de red: Datagrama IP
13
Protocolos de aplicación
Ejemplo de un protocolo Orientado a byte con tamaños de trama variables
14
Protocolo de aplicación
Protocolos 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).
15
Protocolos de Aplicación
Facilitan 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
16
Protocolo de aplicación (HTTP)
Cliente Servidor
GET http:// www.ldc.usb.ve/redes1/material.html HTTP/1.0<CR><LF>User-agent Mozilla/6.0<CR><LF>Accept: text/html, image/gif, image/jpg<CR><LF>Accept-languaje:es<CR><LF><CR><LF><CR><LF>
HTTP/1.0 200 OKDate: Thu, 23 Nov 2008 12:00:15 GMTServer: Apache/2.0 (Unix)Last-Modified: Mon, 10 Sept 2007Content-Length:6821Content-Type: text/html<html> <body> Esta es la pagina de Respuesta</body><body> Esta es la pagina de Respuesta</body></html>
Establecimiento de la conexión
17
Ejemplo 1 … sencillo …
Se requiere un servidor que sume varios números enteros y retorne el resultado.
Ideas?
18
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 ?
19
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
20
Posible solución …
Request– Formato: 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 %”
21
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?
22
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?
23
Soluciones
Este tipo de datos requieren un formato más sofisticado
Y algunas veces de herramientas que permitan definir estas especificaciones
Por ejemplo: usar un lenguaje de marcado como XML
24
Lenguajes de marcado
XML
25
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)
26
XML: Lo bueno.
Es multiplataforma.
Tiene curva de aprendizaje muy plana.
Puede ser barato (muchos editores, visores, verificadores, etc., gratuitos y comerciales).
27
Formato Todo elemento esta delimitado
< /> Un elemento puede ser sencillo
<elemento/> Tener un atributo
<elemento campo=“valor entre comillas”/> Puede tener sub elementos
<elemento><sub …/>
</elemento>28
XML
Ejemplo
29
Estructura lógicacourses
coursecourse
codc codcstudent student
idname gradegrade nameid
student. . .
“123” “124” “4“3”
“cs100” “cs225”
“Luís”“Pepe”
30
Estructura del XML<courses><course> <codc>cs100</codc> <student> <id>123</id> <name>Pepe<name/>
<grade>3<grade/> </student>
<student> <id>124</id> <name>Luis<name/>
<grade>5<grade/> </student>
</course>
...
...
<course> <codc>cs225</codc> <student> <id>124</id> <name>Luis<name/>
<grade>4<grade/> </student> <student>
<id>125</id> <name>Ana<name/>
<grade>4<grade/> </student>
...</course>...</courses>
31
Ahora... otro ejemplo.
Lo que importa es el delimitado de xml
Los espacios, los LF, CR, líneas en blanco no importan
32
Otro ejemplo diferente<Courses><Course ID=“@cno”><student ID=“123”><grade=“3”/><name=“Pepe”/></estudent><student ID=“124”><grade=“2”/><name=“Paco”/></student>...</Course>...</Courses>
33
El Otro ejemplo diferente<Courses> <Course ID=“@cno”>
<student ID=“123”> <grade=“3”/> <name=“Pepe”/> </student>
<student ID=“124”> <grade=“2”/> <name=“Paco”/> </student> ... </Course> ...</Courses>
34
Recapitulemos: Ejemplo
Se 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.
35
Request: Format<inscripcion> <Curso ID= “”/>
<estudiante ID=“”> <ci val=“”/> <nombre val=“”/> <telefono val=“”/> <direccion val=“”/> ... </estudiante> ...</inscripcion>
36
Request: Especificaciones
Para cursos:ID es un valor entero
Para Estudiante:...
...
37
Request: Ejemplo<inscripcion> <Curso ID= “123”/>
<estudiante ID=“123”> <ci val=“11”/> <nombre val=“Pepe”/> <telefono val=“99”/> <direccion val=“por ahi”/> ... </estudiante> ...</inscripcion>
38
Response: Format<inscripcionOK> <Curso ID= “”> <lugar> </lugar>
<horario> <dia ID=“” hora=“”/> <dia ID=“” hora=“” /> </horario> </Curso>
</inscripcionOK>
39
Response: Especificaciones
Para cursos:ID es un valor entero...
...
40
Response: Ejemplo<inscripcionOK> <Curso ID= “123”> <lugar>
En la esquina de X con Y, edificio ZZ, piso 666, etc
</lugar> <horario> <dia ID=“lun” hora=“5pm-7pm”/> <dia ID=“vie” hora=“5pm-7pm” /> </horario> </Curso>
</inscripcionOK>
41
Response mas detallado (dos formas diferentes de anotar la misma información)<horario> <dia ID=“lun” hora=“5pm-7pm”/> <dia ID=“vie” hora=“5pm-7pm”/></horario>
<horario> <dia d=“lun”> <hora inc=“5pm” fin=“7pm”/> </dia> <dia ID=“vie”> <hora inc=“5pm” fin=“7pm”/> </dia></horario> 42
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.
43
Protocolos y Herramientas para describir los protocolos
Diagrama de secuenciaDiagrama de estados (autómata de estado finitos)
44
Diagramas de secuencia
Diagrama 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
45
46
47
Diagrama de estados de una cafetera
48
Diagrama de estados
Inicio
Recibe comandos
Espera autenticación
Esperarespuesta
Login+clave
autenticado
comando
respuesta
quit
quit
fallo
Cliente Servidor
49
Diagrama de secuencia
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 50
HTTP
Prof. Ricardo Gonzalez
Redes de Computadores 51
Web y HTTP
Algunos 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:
www.algunsitio.edu:80/algunaFacultad/pic.gif
Nombre del host Nombre del path
http://
Protocolo
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 52
Panorámica de HTTPHTTP: 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
PC ejecutandoIE Explorer
Servidorejecutando
El servidor WebApache
Mac ejecutandoNetscape Navigator
Solicitud HTTP
Solicitud HTTP
Respuesta HTTP
Respuesta HTTP
Prof. Ricardo Gonzalez
Redes de Computadores 53
Funcionamiento de HTTP
Funcionamiento
1. 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 Tema 4 55
Mensajes HTTP
Respuestas HTTP/1.0
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 56
Mensajes HTTPEjemplo real de mensajes HTTP
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 57
Modelamiento del tiempo de respuesta
Definició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
solicitaarchivo
RTT
archivorecibido
tiempo tiempototal = 2RTT+tiempo de transmisión
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 58
Mensaje de solicitud HTTP: formato general
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 59
Mensaje de respuesta de HTTP
HTTP/1.1 200 OK Connection closeDate: Thu, 06 Aug 1998 12: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ínea de estado(código deestado delProtocolo,
frase de estado)
Líneas de encabezado
datos, es decir, archivo HTML
solicitado
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 60
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 61
• 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 correo
• Funciones (o servicios) del sistema de correo:• edición de mensajes• Transferencia de mensajes• generación de informes
• Subsistemas
Agentes de transferencia(demonios)
• de distribución (SMTP, ESMTP)
• de entrega final (POP3, IMAP)
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 63
Protocolos de entrega final de usuario
Problema: obtener correo del buzón
Solución: un buzón en el servidor
PC emisor
Agente de transferencia
(SMTP)Internet
Servidor(con buzón)
conexión permanente
PC receptor
Agente de usuario
conexión NO permanente
POP3
Solución: POP3
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
Correo electrónicoTres 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
SMTP
Buzón del usuario
Cola de mensajes salientes
servidor decorreo
Agente de usuario
SMTP
SMTP
Agente de usuario
Agente de usuario
Agente de usuario
servidor decorreo
Agente de usuario
Agente de usuario
servidor decorreo
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) : protocolo
El 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: cliente
Comando Descripció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 1.000 caracteres. Cada línea va seguida de un retorno de carro y avance de línea <CR><LF>. La última línea debe llevar únicamente el carácter punto “.”
seguido de <CR><LF>. 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: servidor
Código Descripción
211 Estado del sistema. 214 Mensaje de ayuda. 220 Servicio preparado. 221 Servicio cerrando el canal de transmisión. 250 Solicitud completada con éxito. 251 Usuario no local, se enviará a <dirección de reenvío> 354 Introduzca el texto, finalice con <CR><LF>.<CR><LF>. 421 Servicio no disponible. 450 Solicitud de correo no ejecutada, servicio no disponible (buzón ocupado). 451 Acción no ejecutada, error local de procesamiento. 452 Acción no ejecutada, insuficiente espacio de almacenamiento en el sistema. 500 Error de sintaxis, comando no reconocido. 501 Error de sintaxis. P.ej contestación de SMTP a ESMTP 502 Comando no implementado. 503 Secuencia de comandos errónea. 504 Parámetro no implementado. 550 Solicitud no ejecutada, buzón no disponible. 551 Usuario no local, pruebe <dirección de reenvío>. Si no se tiene cuenta 552 Acción de correo solicitada abortada. 553 Solicitud no realizada (error de sintaxis). 554 Fallo en la transacción.
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 70
Ejemplo del uso de comandos SMTP
Prof. Ricardo Gonzalez
Redes de Computadores Tema 4 71
Ejemplo de la interacción SMTP
S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected]> S: 250 [email protected] ... 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 -> SC <- S C -> SC <- S C -> SC <- S C -> SC <- S C -> SC <- S
C -> SC <- SC -> SC <- 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
Links
Algunos protocolos de capa aplicación– HTML 1.0 1.1– FTP – SSH– SMTP
Tutoriales XML– Introducción al lenguaje XML– Documentos XML bien formados – Algunos ejemplos!!!
73
Fuentes
Protocolos en Internet. http://fcqi.tij.uabc.mx/docentes/lpalafox/cursos/redes/protInternet.pdf
Clase de Diseño de Protocolos del Prof. Eduardo Blanco.
Xinu. Protocol Design. http://www.tml.tkk.fi/Opinnot/T-110.300/2003/Luennot/145-management.pdf
74