Socket Datagrama
Para comenzar con el
ensayo, se escribirá la definición de un Socket, así como un socket de
datagrama, se mostraran los protocolos TCP y UDP, ejemplos del código de un
socket para iniciar comenzaremos con la definición de un socket:
“Un socket es un extremo
de comunicación, es decir, un objeto a través del cual una aplicación envía o
recibe los paquetes de datos a través de una red. Un socket tiene un tipo y se
asocia a un proceso en ejecución y puede tener un nombre. Actualmente, los
sockets intercambian datos normalmente solo con otros sockets del mismo
"dominio de comunicación", que utiliza el conjunto de protocolos de
Internet.” (Microsoft, 2017)
Los sockets son muy
importantes pues es la base de las aplicaciones de mensajería instantánea,
permiten la comunicación entre dos host y también son un componente principal
del modelo cliente-servidor.
Los sockets se ayudan de
los protocolos de comunicación para su funcionamiento. Aquello que utilizan UDP
(este protocolo se especificará más adelante) son conocidos como sockets
datagrama por su parte los que usan TCP (se comentará más adelante) se les
conoce como sockets stream. Se diferencian en que el socket datagrama tiene una
estructura mucho más simple que el socket stream.
SOCKET DATAGRAMA
“Los sockets de
datagrama admiten un flujo de datos bidireccional que no se garantiza que sea
ordenada o para unduplicated (sin duplicar). Los datagramas también no está
garantizado que sean confiables; no pueda para proteger. Los datos de datagrama
pueden llegar desordenados y duplicado posiblemente, pero los límites del
registro en los datos se conservan, mientras los registros son menores que el
límite interno del tamaño del receptor. Es responsable de la secuencia y la
confiabilidad administrar. (La confiabilidad suele ser buena en redes de área
local [LAN] solo menos tan en redes de área extendida [el WAN], como
internet.)” (Microsoft, 2017)
Java proporciona clases
para dar soporte a la comunicación vía datagramas UDP, todas ellas contenidas
en el paquete java.net. Estas clases son:
---DatagramSocket
---DatagramPacket
PROTOCOLO TCP
Transmission Control Protocol (TCP) es uno de los
protocolos fundamentales en Internet. Fue creado entre los años 1973 y 1974 por
Vint Cerf y Robert Kahn.
Muchos programas dentro de una red de datos compuesta por
computadoras, pueden usar TCP para crear conexiones entre ellos a través de las
cuales puede enviarse un flujo de datos. El protocolo garantiza que los datos
serán entregados en su destino sin errores y en el mismo orden en que se
transmitieron. También proporciona un mecanismo para distinguir distintas
aplicaciones dentro de una misma máquina, a través del concepto de puerto.
“TCP da soporte a muchas de las aplicaciones más
populares de Internet (navegadores, intercambio de ficheros, programas de
mensajería, etc.) y protocolos de aplicación como HTTP, SMTP, SSH y FTP.”
(Cinestav, 2017)
Las principales características principales TCP son:
· ---ORIENTADO
A LA CONEXIÓN: dos computadoras establecen una conexión para intercambiar
datos. Los sistemas de los extremos se sincronizan con el otro para manejar el
flujo de paquetes y adaptarse a la congestión de la red. (González, 2017)
· ---CONTROL
DE FLUJO: si el transmisor está desbordando el buffer del receptor por transmitir demasiado rápido, el receptor descarta paquetes. Los acuses fallidos
que llegan al transmisor le alertan para bajar la tasa de transferencia o dejar
de transmitir. (González, 2017)
· ---SERVICIO
DE RECUPERACIÓN DE PAQUETES: el receptor puede pedir la retransmisión de un
paquete. Si el paquete no es notificado como recibido (ACK), el transmisor
envía de nuevo el paquete. (González,
2017)
PROTOCOLO UDP
User Datagram Protocol (UDP) es un
protocolo del nivel de transporte basado en el intercambio de datagramas.
Permite el envío de dichos datagramas a través de la red sin que se haya
establecido previamente una conexión, ya que el propio datagrama incorpora
suficiente información de direccionamiento en su cabecera. (Cinestav, 2017)
Su uso principal
es para protocolos como DHCP, BOOTP, DNS y demás protocolos en los que el
intercambio de paquetes de la conexión/desconexión son mayores, o no son
rentables con respecto a la información transmitida, así como para la
transmisión de audio y vídeo en tiempo real, donde no es posible realizar
retransmisiones por los estrictos requisitos de retardo que se tiene en estos
casos.
Sus principales
características son:
**Es un protocolo mínimo de nivel de
transporte orientado a mensajes.
**Proporciona una sencilla interfaz
entre la capa de red y la capa de aplicación.
**No otorga garantías para la entrega de
sus mensajes.
**Se utiliza, por ejemplo, cuando se
necesita transmitir voz o vídeo y resulta más importante transmitir con
velocidad que garantizar el hecho de que lleguen absolutamente todos los bytes.
DATAGRAM PACKET
La clase
DatagramPacket proporciona un constructor que permite crear instancias de un
array de bytes parar: el mensaje, la longitud del mensaje, la dirección
Internet y el puerto local del socket de destino. (Nereida, 2017)
Los objetos del
tipo DatagramPacket se pueden transmitir entre procesos cuando un proceso los
envía y otro los recibe.
Esta clase
proporciona otro constructor para usarlo cuando se recibe un mensaje. Sus
argumentos especifican un array de bytes en el que recibir el mensaje y la
longitud del array. Cuando se recibe un mensaje se pone en el DatagramPacket
junto con su longitud, la dirección de Internet y el puerto del socket de
envío.
Se puede obtener
el mensaje del objeto DatagramPacket mediante el método getData(). Los métodos
getPort() y getAddress() permiten obtener el puerto y la dirección Internet del
objeto de tipo DatagramPacket. (Nereida, 2017)
DATAGRAM SOCKET
La clase
DatagramSocket da soporte a sockets para el envío y recepción de datagramas
UDP.
Se proporciona un
constructor que toma un puerto como argumento, para que sea usado por los
procesos que necesitan usar un puerto particular. También se proporciona un
constructor sin argumentos que permite al sistema escoger un puerto local
libre. Estos constructores pueden lanzar una excepción del tipo SocketException
si el puerto ya está en uso o si está reservado.
Esta clase cuenta
con los siguientes métodos:
-send() y receive().
Estos métodos
permiten transmitir datagramas entre un par de sockets. El argumento del send
es una instancia de un DatagramPacket que contiene un mensaje y su destino. El
argumento del receive es un objeto DatagramPacket vacío en el cual se pondrá el
mensaje, su longitud y su origen. Tanto el método send() como el receive()
pueden lanzar una IOException. (Nereida, 2017)
-setSoTimeout().
Este método
permite establecer un tiempo de espera. Con un tiempo de espera establecido, el
método receive() se bloqueará por el tiempo especificado y entonces lanzará una
InterruptedIOException().(Nereida, 2017)
-connect().
Este método se
utiliza para conectar a un puerto remoto particular y una dirección de
Internet, en este caso el socket sólo es capaz de enviar y recibir mensajes
desde esa dirección. (Nereida, 2017)
Los sockets son parte vital para la conformación de comunicación en una red, son la base de las aplicaciones de mensajería instántanea, si una aplicación no tiene sockets entonces la comunicación posibles. También nos dimos cuenta que existen dos tipos de sockets los socket datagrama y los socket stream siendon los datagrama los más usados debido a su estructura simple administran los mensajes de manera bidireccional.Además los sockets datagrama pueden usarse en dos protocolos distintos el UTP y el TCP, el primero permite el envió de datagramas sin una conexión preestablecida y el TCP establece la conexión entre computadoras para después comunicarse. Los sockets son parte vital de la comunicación actual.
Los sockets son parte vital para la conformación de comunicación en una red, son la base de las aplicaciones de mensajería instántanea, si una aplicación no tiene sockets entonces la comunicación posibles. También nos dimos cuenta que existen dos tipos de sockets los socket datagrama y los socket stream siendon los datagrama los más usados debido a su estructura simple administran los mensajes de manera bidireccional.Además los sockets datagrama pueden usarse en dos protocolos distintos el UTP y el TCP, el primero permite el envió de datagramas sin una conexión preestablecida y el TCP establece la conexión entre computadoras para después comunicarse. Los sockets son parte vital de la comunicación actual.
A continuación se
mostrará el ejemplo del código de un Socket Datagrama:
![]() |
| Emisor |
![]() |
| Receptor |
Bibliografía
Cinestav. (15 de agosto de 2017). Cinestav.
Obtenido de Tamaulipas:
cinvestav.mx/~vjsosa/clases/sd/sistemas_distribuidos_panorama.pdf
Coulouris, G. (2001). Sistemas
Distribuidos: Conceptos y Diseño. EUA: Pearson Addison-Wesley.
González, A. (14 de 10
de 2017). UC3M. Obtenido de
http://www.it.uc3m.es/lpgonzal/protocolos/transporte.php
M.L.Liu. (2001). Computacion
Distribuida:Fundamentos y Aplicaciones. EUA: Pearson Addison-Wesley.
Microsoft. (12 de 10 de
2017). MSDN Microsoft. Obtenido de https://msdn.microsoft.com/es-es/library/z4eykh88.aspx#_core_definition_of_a_socket
Nereida. (15 de 10 de
2017). TesisDoctorado. Obtenido de
http://nereida.deioc.ull.es/~cleon/doctorado/doc06/doc06/html/node8.html


Comentarios
Publicar un comentario