Redes de Computadores 13 Formato y Manejo de Datos Prof. Javier Cañas R. Universidad Técnica Federico Santa María Departamento de Informática

Temario 1 Introducción 2 Tipos de Datos 3 Compresión de Datos 4 Compresión de Imágenes 5 Seguridad

Javier Cañas R. 2002

2

1

1 Introducción • Los mensajes que circulan en una red transportan datos. • Si bien los datos dependen de las aplicaciones, existen transformaciones comunes que se pueden aplicar antes de ser enviados. • Datos de distintos tipos deben ser codificados de forma tal que sean independientes de plataformas específicas. • Otro aspecto importante es la compresión que permite optimizar el BW disponible. • La encriptación de datos provee seguridad. Javier Cañas R. 2002

3

Formatos de Presentación • Desde la perspectiva de la red, los programas de aplicación se envían mensajes. • Desde la perspectiva de las aplicaciones, los mensajes contienen varios tipos de datos: números enteros, flotantes, texto, video, imágenes digitales, etc... • Para cada tipo de datos, existen formatos estándares. Javier Cañas R. 2002

4

2

Formatos Estándares • Video: – MPEG (Moving Pictures Experts Group)

• Imágenes: – JPEG ( Joint Photographics Experts Group) – GIF ( Graphical Interchange Format)

• Documentos Multimedia: – HTML ( HyperText Markup Language) – MIME (Multipurpose Internet Mail Extensions)

• Texto: – ASCII (American Standard Code for Information Interchange) Javier Cañas R. 2002

5

Transformación de datos • Los formatos de presentación involucran la transformación de los datos. • La transformación involucra la codificación (marshalling) y decodificación (unmarshalling) • ¿por qué es necesario transformar? – Formatos big-endian y little-endian – Diversos formatos para números flotantes

Javier Cañas R. 2002

6

3

Ejemplo: el número 34.677.374 2 Big-endian 00000010

126 Little-endian 01111110

17

34

126

00010001

00100010

34

17

2

00100010

00010001

00000010

01111110

Arquitecturas Big-endian:Macintosh, Sun Sparc, MIPS Arquitecturas Little-endian: Intel 80x86, DEC Station 3100 Javier Cañas R. 2002

7

Lenguajes y Compiladores • Las aplicaciones se escriben en diversos lenguajes de programación. • Para un mismo lenguaje existen diversos compiladores. • Cada lenguaje usa diversas estrategias para almacenar estructuras de datos en memoria. Por ejemplo struct. Esto significa que no es posible intercambiar struct sin hacer transformaciones Javier Cañas R. 2002

8

4

2 Tipos de Datos • ¿Qué tipos de datos debe soportar un sistema? – Los tipos de datos se pueden clasificar en tres niveles • Tipos bases: int, float, char (dificultades con big y little endian) • Tipos planos: struct y array (dificultades con rellenos “padding”) • Tipos complejos: Punteros (¿Cómo transmitir un árbol de búsqueda binaria?)

Javier Cañas R. 2002

9

Codificación de Argumentos struct int

Estructura de datos de la aplicación

array puntero

Codificador

Javier Cañas R. 2002

•Conversión •Empaquetamiento •Linealización

10

5

Etiquetas (Tags) • ¿Cómo sabe el receptor que tipo de datos contiene el mensaje que recibe? Existen dos soluciones a este tema: – Con etiquetas (Tags) – Sin etiquetas

• Una etiqueta es una información adicional que contiene el mensaje que ayuda al receptor decodificarlo. • Existen varios tipos de etiquetas: – De tipo: int, float, char, etc.. – De tamaño – De arquitectura Javier Cañas R. 2002

11

Solución sin Etiquetas (Untagged) • ¿Como sabe el receptor en este caso? Porque se programa para que así sea. Por ejemplo un RPC que tenga como argumentos dos enteros y un flotante, no hay necesidad de explicar nada • Falla al enviar arreglos variables. En este caso es necesario incorporar una etiqueta que indique el largo del arreglo

Javier Cañas R. 2002

12

6

Stubs • Un Stub (colilla) es código que permite empaquetar y desempaquetar argumentos en una forma estándar. Se usan principalmente en protocolos RPC. • Los Stubs pueden ser compilados o interpretados. • Si los Stubs son compilados, los procedimientos se pueden adaptar a las aplicaciones. Si utiliza un compilador la generación del stub es eficiente. Javier Cañas R. 2002

13

Generación de Stubs (RPC) Descripción de la interfaz de P Llamar a P especificaciones

P

argumentos

Stub del Cliente

Compilador de Stub código

RPC

Stub del Servidor RPC

mensaje Javier Cañas R. 2002

14

7

XDR (External Data Representation) • XDR es el formato de datos que se utiliza en SunRPC. Soporta tipos de datos de C, pero sin punteros. • Usa etiquetas (tags) sólo para el largo de arreglos y los stubs son compilados • Un entero en XDR se representa en complemento 2 con 32 bits en formato big endian. Al igual que el lenguaje C soporta enteros con y sin signo Javier Cañas R. 2002

15

Arreglos y Estructuras en XDR • Primero se especifica el número de elementos del arreglo mediante un entero de 4B sin signo, seguido por los elementos del tipo apropiado. • Los componentes de una estructura se codifican en el mismo orden de su declaración. Al igual que los arreglos, el tamaño de cada elemento componente se representa en múltiplos de 4 Bytes. Estructuras más pequeñas son rellenadas con ceros • La excepción son los char (caracteres) que se codifican uno por byte

Javier Cañas R. 2002

16

8

Ejemplo: estructura en XDR #define MAXNOMBRE 256; #define MAXLISTA 100; struct item { int cuenta; char nombre[MAXNOMBRE]; int lista[MAXLISTA]; };

cuenta 3

nombre c a r m o n a

7

lista 3

219

385

Javier Cañas R. 2002

1847 17

3 Compresión de Datos • Muchas aplicaciones requieren enviar más datos en un período de tiempo que lo puede soportar el ancho de banda. Por ejemplo un flujo de 10Mbps de video en un link que sólo dispone de 1Mbps. • Estas aplicaciones requieren de dos procesos: compresión y descompresión. • En forma simple, compresión significa remover datos redundantes de la información Javier Cañas R. 2002

18

9

Códigos de Huffman • Si se requiere enviar un bloque de datos cuyos símbolos son letras: A, B,....Z, si todos los símbolos tienen la misma probabilidad de ocurrencia, se requiere de 5 bits para cada símbolo. • Si la E ocurre el 50% de las veces, es mejor utilizar menos bits para la E que los demás símbolos. • Conociendo la probabilidad relativa de cada símbolo se puede asignar un número de bits que minimice el total de bits transmitidos. • Esta es la idea central de los Códigos de Huffman

Javier Cañas R. 2002

19

Compresión con pérdida y sin pérdida • La compresión sin pérdida asegura que los datos recuperados del proceso decompresión/descompresión es exactamente los datos originales. Ejemplo: programas ejecutables, archivos de texto, datos numéricos, etc... • La compresión con pérdida puede remover información imposible de recuperar. Ej. imágenes, video, audio.

Javier Cañas R. 2002

20

10

¿Cuándo Comprimir? • El proceso de compresión y descompresión involucra tiempo. ¿vale la pena hacerlo? • Sea BWdato el Ancho de banda promedio al cual se alimenta el compresor y el descompresor. • BWlink es el Ancho de banda de la red para datos sin compresión • rd es la razón de compresión promedio

Javier Cañas R. 2002

21

Transmisión de x bytes • La compresión es benéfica cuando: x x x + < BWdato rd × BWlink BWlink • Lo cual es equivalente a:

BWdato >

rd rd −1

× BWlink

Por ejemplo, si rd=2, para que la compresión tenga sentido, BWdato > 2 ×BWlink

Javier Cañas R. 2002

22

11

Compresión Sin Pérdida • Se describen tres algoritmos de compresión sin pérdida: – RLE (Run Length Encoding) – DPCM (Differential Pulse Code Modulation) – Métodos basados en diccionarios

Javier Cañas R. 2002

23

RLE • Se reemplazan ocurrencias consecutivas de un mismo símbolo por una copia del símbolo más una cuenta del número de veces que ocurre • Por ejemplo: AAABBCDDDDD se codifica como: 3A2B1C5D • RLE se aplica a imágenes digitales comparando pixeles adyacentes y codificando sólo cambios. • RLE se utiliza en transmisión de FAX e imágenes. Es posible lograr relaciones de 8:1 Javier Cañas R. 2002

24

12

DPCM • La idea es sacar un símbolo de referencia y posteriormente, por cada símbolo de dato sacar sólo la diferencia entre el símbolo actual y el símbolo de referencia. Por ejemplo si A es el símbolo de referencia, la codificación del string: AAABBCDDDDD es: A00011233333

• Cuando la diferencia es pequeña se requieren pocos bits. Si la diferencia llega a ser muy grande se saca una nueva referencia. En imágenes trabaja mejor que RLE Javier Cañas R. 2002

25

Método basado en Diccionarios • Dentro de estos métodos, el más conocido es el llamado Lempel-Ziv (LZ). • La idea es construir un diccionario (tabla) de strings de largo variable que se espera encontrar en los datos. Reemplazar los datos por el índice a la tabla. • Por ejemplo si el diccionario tiene 25000 palabras, se requiere 15 bits para codificar el índice. • Por ejemplo si se quiere codificar el string informática se requieren 15 bits en vez de 77 Javier Cañas R. 2002

26

13

4 Compresión de Imágenes • Las imágenes digitales son utilizadas extensivamente. • ISO definió un formato estándar llamado JPEG (Joint Photograhics Experts Group) • JPEG, al igual que GIF y MPEG no son sólo algoritmos de compresión sino que definen formatos de representación de datos al igual que XDR • JPEG contiene tres fases: – TDC (Transformada Discreta de Coseno) – Cuantización – Codificación

Javier Cañas R. 2002

27

Compresión JPEG

TDC

cuantización codificación JPEG

Las tres fases se alimentan en bloques de 8 x 8 por vez Javier Cañas R. 2002

28

14

JPEG: Fase TCD • Se puede pensar en que una imagen es una señal en un dominio espacial. La TCD transforma esta señal en una señal equivalente en un dominio espacial de frecuencia • En este sentido, la TCD es muy similar a la FFT. • La TCD toma una matriz de 8 x 8 valores de pixeles y genera una matriz de salida de 8 x 8 coeficientes. Javier Cañas R. 2002

29

JPEG: Fase TCD • Se puede pensar en una señal bidimensional x-y de 64 puntos (8 x 8). Esta señal se descompone en 64 “frecuencias espaciales”. • Intuitivamente se puede pensar en un pixel como una función en x. Si este valor cambia lentamente con x, tiene una baja frecuencia espacial y si cambia abruptamente, tiene una alta frecuencia espacial. • Las bajas frecuencias corresponden a la parte gruesa de una imagen y las altas frecuencias a los detalles Javier Cañas R. 2002

30

15

La Transformada TCD y su inversa TCD(i,j) =

pixel( x, y) =

C( x) =

1

(

)

(

)

N −1 N −1  2 x + 1 iπ   2 y + 1 iπ  ∑ pixel(x,y) cos C(i)C(j) ∑  2 N  cos  2 N  2N x=0y=0 1

(

)

(

)

N − 1N − 1  2x + 1 iπ   2 y + 1 iπ  ∑ ∑ C(i)C( j )TCD(i, j ) cos  2N  cos 2N  2N i = 0 j = 0 1

si x = 0, sino, 1 si

x>0

2

Javier Cañas R. 2002

31

Observación • El primer coeficiente de frecuencia se ubica en la posición (0,0) de la matriz de salida. Este coeficiente se denomina Coeficiente DC. Representa una medida del promedio de los demás valores • Los 63 elementos restantes se denominan coeficientes AC • Los componentes de alta frecuencia van dejando de ser importantes en la calidad global de la imagen Javier Cañas R. 2002

32

16

JPEG: Fase de Cuantización • La segunda fase es donde la compresión presenta pérdidas. La transformada TCD no pierde información ya que solo transforma. • La idea en forma simple es la siguiente: Supongamos que queremos comprimir números enteros menores que 100: 45, 68, 8 y 21. Si decidimos truncar al múltiplo más cercano de 10 es suficiente considerar: 4, 6, 0, 2. En vez de 7 bits para representar cada número ahora se requieren sólo 4. • JPEG utiliza cuantización para cada uno de los 64 coeficientes de la TCD a través de una Tabla

Javier Cañas R. 2002

33

Ecuaciones de Cuantización ValorCuantizado(i, j ) = RedondeoEntero(

TCD(i, j ) ) Cuantum(i, j )

x≥o x + 0.5 si RedondeoEntero( x) =  x