diseño de protocolos prof. wilmer pereira 1. protocolo protocolo: –es un conjunto de normas y...

Post on 02-Apr-2015

112 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

eMail

Prof. Ricardo Gonzalez

Redes de Computadores Tema 4 61

email

• 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: <alicia@crepes.fr> S: 250 alicia@crepes.fr... Sender ok C: RCPT TO: <beto@hamburger.edu> S: 250 beto@hamburger.edu ... 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

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

top related