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

Entradas más populares de este blog

Ensayo SIstemas Distribuidos

Ensayo Cliente-Servidor

Ensayo Modelo OSI y TCP/IP