Ensayo Datagramas
Datagrama
Introducción:
En este ensayo hablaremos de ¿qué es un datagrama? Explicaremos
como funciona y porque es necesario utilizarlo, así como cuáles son sus características
y elementos principales, un datagrama en el nivel OSI es una aplicación, pero
para poder acceder a lo siguiente que es comunicarse con otro dispositivo,
debemos de estar conectados a una IP, donde el que va a enviar el mensaje no es
necesario que sepa el puerto de donde sale, sin embargo hay que saber el puerto
para saber donde se va a recibir.
Desarrollo:
Primero empezaremos definiendo que es un datagrama, el
datagrama es la unidad básica de transferencia en una red IP, consiste de una
cabecera IP, y de un campo de datos y está encapsulado en el nivel de enlace,
cabe resaltar que los protocolos el protocolo de datagrama de usuario UDP, y el
TCP
Cada fragmento de un datagrama debe tener una cabecera,
que será una copia de la cabecera del datagrama original, un fragmento es
tratado como un datagrama IP normal mientras es transportado a su destino, pero
si uno de los fragmentos se pierde, se da por perdido el datagrama completo, al
ser descartados el resto de fragmentos por el host destino, esto quiere decir, si
se pierde un fragmento se debe retransmitir el datagrama completo. La
retransmisión no es tarea del protocolo IP, sino de los protocolos de nivel
superior.
Las cabeceras de los datagramas contienen una información
de direcciones de la capa de red, que después son examinadas para ver la
dirección de destino de la cabecera, para dirigir los datagramas al destino.
Fragmentación:
Cuando un datagrama IP viaja de un host a otro puede
cruzar distintas redes físicas. Las redes físicas imponen un tamaño máximo de
trama, llamado MTU (Maximum Transmission Unit), que limita la longitud de un
datagrama, existe un mecanismo para fragmentar los datagramas IP grandes en
otros más pequeños, y luego re-ensamblarlos en el host de destino, se requiere
que cada enlace tenga un MTU de al menos 68 bytes. Un datagrama sin fragmentar
tiene a cero toda la información de fragmentación. Es decir, los flags FC y FO están a 0. En el host de destino, los datos se tienen que re-ensamblar.
El datagrama para poder ser mandado se necesita meter en
un paquete el cual es llamado socket, un socket es un tipo especial de
manejador de fichero que utiliza un proceso para pedir servicios de red al
sistema operativo, el UDP permite que el paquete sea transportado incluso aún
cuando no hay conexión (datagrama), así cada datagrama transportado, es dirigido
y encaminado para que le lleva al receptor.
Hay dos tipos de socket, con conexión y sin:
Con Conexión:
Los sockets datagrama pueden dar soporte a comunicación
sin conexión o así también como a orientada a objetos en el nivel que habíamos mencionado
(aplicación), aunque los datagramas se envían sin la noción de conexiones en el
nivel de transporte el soporte del API de sockets mantiene conexiones lógicas
datagramas donde se intercambian entre dos procesos, para ello la clase que se
utiliza para instanciar un objeto es DatagramSocket para el socket y
DatagramPacket pata intercambiar datagramas, cada socket está enlazado a un
puerto UDP, un puerto es un número de 16 bits usado por el protocolo de un host
a otro.
Como algunos programas son de más alto nivel son
protocolos por sí mismos, estandarizados en la familia de protocolos TCP/IP,
como son telnet y ftp, usan el mismo número de puerto en todas las
realizaciones de TCP/IP. Aquellos números de puerto "asignados" se
denominan puertos bien-conocidos y las aplicaciones estándares servicios
bien-conocidos.
Para mandar un datagrama a otro proceso, debe crear un
objeto que representa el datagrama en sí mismo, este objeto puede crearse con
la instancia de un objeto DatagramPacket que lleve una referencia a un vector
de octetos que contiene los datos de la carga y la dirección al cual va.
Después que es creado el proceso manda a llamar por medio
del método send del objeto DatagramSocket dando así una referencia al objeto del
DatagramPacket.
Sin Conexión
Un socket cuando ya tiene un enlace puede servir para
mandar datagramas a varios destinos diferentes, pero también podemos decir que
varios procesos manden al mismo tiempo datagramas al mismo socket que está
enlazado a otro proceso receptor, el orden de la llegada de estos mensajes será
imprescindible, dependiendo d del protocolo UDP adyacente.
En las interfaces de programación de los sockets sin
importar el tipo de conexión, las operaciones send no se bloquean, mientras que
en las receive se bloquean. El proceso continuará con la ejecución cuando se
llama al método send pero si se llama al método receive el proceso se suspenderá
hasta que realmente se reciba un datagrama
Conclusión:
Los sockets son una forma de comunicación entre procesos
que se encuentran en diferentes máquinas de una red, los sockets proporcionan
un punto de comunicación por el cual se puede enviar o recibir información
entre procesos, pero para ello necesitan el datagrama, que se envía dentro de
un paquete y de este manera si el paquete no viene completo no se recibe de tal
manera que se tiene que volver a entrar, según lo que yo entendí puedo concluir
que los sockets pueden ser muy importantes para la arquitectura cliente
servidor, de esta manera se pueden prevenir malos entendidos a la hora de
mandar un mensaje.
Referencias:
M. L. Liu(2004)
El API de Sockets, obtenido de:
Computación Distribuida Fundamentos y Aplicaciones
Irving Bonilla (7/10/2012)
Sockets: Protocolos de comunicación TCP y UDP, obtenido
de:
Frida (12/6/2013)
Datagrama y Paquetes de Datos, obtenido de:
ENTEL (14/10/2017)
El datagrama IP, obtenido de:
Adobe(14/102017)
DatagramSocket- AS3, obtenido de:
Comentarios
Publicar un comentario