PDF de programación - El paquete de comunicaciones Lower Layer UDP - Programación de Sistemas de Telecomunicación Informática II

Imágen de pdf El paquete de comunicaciones Lower Layer UDP - Programación de Sistemas de Telecomunicación Informática II

El paquete de comunicaciones Lower Layer UDP - Programación de Sistemas de Telecomunicación Informática IIgráfica de visualizaciones

Publicado el 14 de Diciembre del 2018
506 visualizaciones desde el 14 de Diciembre del 2018
391,8 KB
28 paginas
Creado hace 6a (04/10/2017)
El paquete de comunicaciones Lower Layer UDP

Programación de Sistemas de Telecomunicación

Informática II

Departamento de Sistemas Telemáticos y Computación (GSyC)

Octubre de 2017

GSyC - 2017

Lower Layer UDP

1

c2017 Grupo de Sistemas y Comunicaciones.
Algunos derechos reservados.
Este trabajo se distribuye bajo la licencia
Creative Commons Attribution Share-Alike
disponible en http://creativecommons.org/licenses/by-sa/3.0/es

GSyC - 2017

Lower Layer UDP

2

Contenidos

1

Introducción

2 Gestión de direcciones IP y puertos: End Point Type

3 Gestión de mensajes: LLU.Buffer Type

4 Atarse a un End Point para poder recibir mensajes: LLU.Bind

5 Envío y recepción de mensajes: LLU.Send, LLU.Receive

6 Terminación del uso de Lower Layer: LLU.Finalize

GSyC - 2017

Lower Layer UDP

3

Contenidos

Introducción

1

Introducción

2 Gestión de direcciones IP y puertos: End Point Type

3 Gestión de mensajes: LLU.Buffer Type

4 Atarse a un End Point para poder recibir mensajes: LLU.Bind

5 Envío y recepción de mensajes: LLU.Send, LLU.Receive

6 Terminación del uso de Lower Layer: LLU.Finalize

GSyC - 2017

Lower Layer UDP

4

Introducción: Modelo Cliente-Servidor

Introducción

En el modelo cliente-servidor hay dos roles diferenciados para
los procesos que intercambian mensajes a través de la red:
El servidor espera a recibir un mensaje, y entonces contesta
enviando una respuesta
El cliente envía mensajes de petición al servidor, esperando
recibir un mensaje de respuesta.

GSyC - 2017

Lower Layer UDP

5

clienteservidorPETICIÓN a (dirIP1, puerto1)RESPUESTA a (dirIP2, puerto2) Introducción: LLU

Introducción

GSyC - 2017

Lower Layer UDP

6

UDPUDPProtocolo UDPPráctica 1Protocolo Práctica 1Lower_Layer_UDPLower_Layer_UDPPráctica 1 Lower Layer UDP

Introducción

Es un paquete de comunicaciones que ofrece un servicio de
mensajes en el nivel de transporte:

extremo a extremo
no orientado a conexión
no fiable

Ofrece un servicio similar a UDP con una interfaz más fácil de
usar que permite:

Construir End_Points (dirección IP + puerto)
Construir y procesar mensajes
Enviar y recibir mensajes

A partir de ahora utilizaremos LLU para hacer referencia a los
tipos, funciones y procedimientos de este paquete:

package LLU renames Lower_Layer_UDP;

GSyC - 2017

Lower Layer UDP

7

Gestión de direcciones IP y puertos: End Point Type

Contenidos

1

Introducción

2 Gestión de direcciones IP y puertos: End Point Type

3 Gestión de mensajes: LLU.Buffer Type

4 Atarse a un End Point para poder recibir mensajes: LLU.Bind

5 Envío y recepción de mensajes: LLU.Send, LLU.Receive

6 Terminación del uso de Lower Layer: LLU.Finalize

GSyC - 2017

Lower Layer UDP

8

Gestión de direcciones IP y puertos: End Point Type

End Point

Un End_Point es el destino de los datos que envía un proceso
de una máquina a otro proceso de otra máquina.
Se construye a partir de la Dirección IP de la máquina y el
puerto elegido por el proceso al que van dirigidos los datos.
Un End_Point identifica de forma unívoca al proceso al que
van dirigidos los mensajes que transportan datos.
Se construye de la siguiente forma con la función Build:

Server_EP: LLU.End_Point_Type;

...

Server_EP := LLU.Build("212.128.4.1", 6002);

GSyC - 2017

Lower Layer UDP

9

Gestión de direcciones IP y puertos: End Point Type

Funciones auxiliares: Get Host Name

La función Get Host Name devuelve el nombre de la máquina
donde se está ejecutando un programa.

function Get Host Name return String;

Ejemplo de uso:

Maquina : ASU.Unbounded_String;
...
Maquina := ASU.To_Unbounded_String (LLU.Get Host Name);
Ada.Text_IO.Put_Line ("Estoy en: " & ASU.To_String(Maquina));

GSyC - 2017

Lower Layer UDP

10

Gestión de direcciones IP y puertos: End Point Type

Funciones auxiliares: To IP

La función To IP devuelve la direccción IP del nombre de la
máquina que se le pasa como argumento.

function To IP (Name: in String) return String;

Si el argumento que se le pasa a To IP es una dirección IP, la
función devuelve la misma dirección IP.
Ejemplo de uso:

Maquina : ASU.Unbounded_String;
Dir_IP : ASU.Unbounded_String;
...
Maquina := ASU.To_Unbounded_String ("zeta12");
Dir_IP := ASU.To_Unbounded_String (LLU.To IP(ASU.To_String(Maquina));
Ada.Text_IO.Put_Line ("Dirección IP:" & ASU.To_String(Dir_IP));

GSyC - 2017

Lower Layer UDP

11

Gestión de mensajes: LLU.Buffer Type

Contenidos

1

Introducción

2 Gestión de direcciones IP y puertos: End Point Type

3 Gestión de mensajes: LLU.Buffer Type

4 Atarse a un End Point para poder recibir mensajes: LLU.Bind

5 Envío y recepción de mensajes: LLU.Send, LLU.Receive

6 Terminación del uso de Lower Layer: LLU.Finalize

GSyC - 2017

Lower Layer UDP

12

Gestión de mensajes: LLU.Buffer Type

Buffer

Un buffer es un fragmento de posiciones de memoria
contiguas que utilizaremos en:

Envío: para almacenar en el buffer los datos que queremos
enviar. Una vez almacenados, realizaremos el envío.
Recepción: para recibir los datos que nos estén enviando. El
buffer inicialmente estará vacío y después de realizar la
recepción contendrá los datos que nos hayan enviado.

Accederemos al buffer según el modelo FIFO (First In First
Out).

GSyC - 2017

Lower Layer UDP

13

Gestión de mensajes: LLU.Buffer Type

Declaración de un Buffer

Utilizaremos el tipo LLU.Buffer Type.
Para declarar un buffer es necesario proporcionale el tamaño
en bytes que se reservará para almacenar datos en él:

Es necesario que el tamaño del buffer sea suficiente como para
contener todos los datos que vamos a almacenar en él.

Buffer: aliased LLU.Buffer_Type(1024);

Utilizaremos el atributo ’Access del Buffer para meter y
sacar datos en él. Por este motivo, es necesario que lo
declaremos como aliased.

GSyC - 2017

Lower Layer UDP

14

1024 bytes Gestión de mensajes: LLU.Buffer Type

Inicialización de un Buffer

El procedimiento Reset vacía los datos que hay en un buffer.

Buffer: aliased LLU.Buffer_Type(1024);

...

LLU.Reset(Buffer);

Utilizaremos Reset en las siguientes situaciones:

Envío: antes de utilizar un buffer para componer un mensaje y
meter los datos que queremos enviar.
Recepción: antes de utilizar un buffer para recibir un mensaje.

GSyC - 2017

Lower Layer UDP

15

Puntero deinserciónPuntero deextracción11024 Gestión de mensajes: LLU.Buffer Type

Inserción de datos en un Buffer

Se invoca el atributo ’Output del tipo del dato que queremos
introducir en el buffer.

Buffer: aliased LLU.Buffer_Type(1024);
I: Integer;

...

I:=5;
LLU.Reset(Buffer);
Integer’Output(Buffer’Access, I);

...

<Enviar los datos del buffer>

...

Después de introducir un dato en un buffer, el siguiente dato
que se introduzca se almacenará a continuación del anterior.
Si intentamos introducir un dato en un buffer y no hay espacio
suficiente en el buffer se elevará la excepción End_Error.

GSyC - 2017

Lower Layer UDP

16

Gestión de mensajes: LLU.Buffer Type

Ejemplo de inserción de datos en un Buffer

Buffer: aliased LLU.Buffer_Type(1024);
I: Integer;
EP: LLU.End_Point_Type;
N: Natural;

...

LLU.Reset(Buffer);

I := -1;
Integer’Output(Buffer’Access, I);

EP := LLU.Build("212.128.4.1", 6001);
LLU.End Point Type’Output(Buffer’Access, EP);

N := 5;
Natural’Output(Buffer’Access, N);

...

<Enviar los datos del buffer>

...

GSyC - 2017

Lower Layer UDP

17

-1-1212.128.4.16001-1212.128.4.160015IntegerIntegerIntegerEnd_Point_TypeEnd_Point_TypeNatural Gestión de mensajes: LLU.Buffer Type

Extracción de datos de un Buffer

Se invoca el atributo ’Input del tipo del dato que queremos extraer del buffer.

Buffer: aliased LLU.Buffer_Type(1024);
I: Integer;

...

LLU.Reset(Buffer);

...

<Recibir datos en el buffer>

...

I := Integer’Input(Buffer’Access);

Después de extraer un dato de un buffer, el siguiente dato que se extraiga será el
que se encuentre a continuación del anterior.
Si intentamos extraer un dato de un buffer en el que no hay más datos, se elevará la
excepción End Error.
Si el tipo de dato que hay en el buffer no coincide con el tipo de datos que se
está intentando extraer puede ocurrir:

La extracción se realiza y la variable destino toma un valor sin sentido.
Se eleva alguna excepción, ej: Constraint Error
Se produce un fallo de segmentación: Segmentation Fault

GSyC - 2017

Lower Layer UDP

18

Gestión de mensajes: LLU.Buffer Type

Ejemplo de extracción de datos en un Buffer

Buffer: aliased LLU.Buffer_Type(1024);
I: Integer;
EP: LLU.End_Point_Type;
N: Natural;
...

LLU.Reset(Buffer);

...

<Recibir datos en el buffer>

...

I := Integer’Input(Buffer’Access);
EP := LLU.End Point Type’Input(Buffer’Access);
N := Natural’Input(Buffer’Access);

GSyC - 2017

Lower Layer UDP

19

-1212.128.4.160015-1212.128.4.160015-1212.128.4.160015-1212.128.4.160015IntegerEnd_Point_TypeNaturalIntegerEnd_Point_TypeNaturalIntegerEnd_Point_TypeNaturalIntegerEnd_Point_TypeNatural Atarse a un End Point para poder recibir mensajes: LLU.Bind

Contenidos

1

Introducción

2 Gestión de direcciones IP y puertos: End Point Type

3 Gestión de mensajes: LLU.Buffer Type

4 Atarse a un End Point para poder recibir mensajes: LLU.Bind

5 Envío y recepción de mensajes: LLU.Send, LLU.Receive

6 Terminación del uso de Lower Layer: LLU.Finalize

GSyC - 2017

Lower Layer UDP

20

Atarse a un End Point para poder recibir mensajes: LLU.Bind

Atarse a un End Point (I)

Para que un proceso pueda recibir
datos de otros, es necesario que
previamente se ate a un End_Point.
De esta forma ”escucha” los mensajes
dirigidos a ese End_Point.
La operación atarse a un End_Point
tiene sentido en el ámbito local de una
máquina:

Cuando un proceso que se ejecuta en
una máquina se ata a un
End_Point, el proceso queda ligado
a una dirección IP de esa máquina y
a un puerto de esa máquina.

GSyC - 2017

Lower Layer UDP

21

UDP IP Lower_Layer_UDP p1 p2 p3 p4 ETHERNET eth0 lo Puertos Dir. IP 212.128.4.1 127.0.0.1 127.0.1.1 ordenador A puerto1 puerto2 puerto3 pu
  • Links de descarga
http://lwp-l.com/pdf14533

Comentarios de: El paquete de comunicaciones Lower Layer UDP - Programación de Sistemas de Telecomunicación Informática II (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad