Documente Academic
Documente Profesional
Documente Cultură
2015300752
2015300703
PROTOCOLO UDP
RFC 768
PROTOCOLO TCP
RFC 793
Introducción
Internet tiene dos protocolos principales para la capa de transporte tanto como en el
modelo OSI como en el modelo TCP/IP. Estos protocolos se complementan entre sí. El
protocolo orientado a no conexión UDP que está basado en el intercambio de
datagramas. El protocolo orientado a conexión TCP realiza las conexiones y agrega
confiabilidad mediante las retransmisiones junto con el control de flujo y el control de
congestión.
Protocolo UDP
El protocolo UDP (User Datagram Protocol) es un protocolo de la capa de
transporte especificado en el RFC 768. UDP proporciona un servicio no orientado a
conexión para los procedimientos de la capa de aplicación. Así debido a lo anterior UDP
es un servicio no seguro ya que no posee las características de un servicio orientado a
conexión tales como el control de flujo, control de errores y una entrega en secuencia.
Debido a que es un protocolo no orientado a conexión y que la entrega de datos no está
garantizada se reduce la información suplementaria del protocolo.
UDP transmite segmentos que consisten en una cabecera de 8 bytes seguido de los
datos.
32 bits
Cabecera de UDP
Esta cabecera consta de cuatro campos de los cuales dos son opcionales los cuales
están marcados de color rojo. Cada uno de los cuatro campos son de 16 bits los cuales se
explican a continuación:
LONGITUD: Este campo indica la longitud del datagrama UDP incluyendo la cabecera y
los datos expresado en bytes. Cuyo valor mínimo es de 8 bytes esto para cubrir la
longitud de la cabecera. La longitud máxima es de 65 515 bytes debido a que la longitud
máxima de un datagrama IP es de 65 535 bytes con una cabecera estándar de 20 bytes.
DIRECCION DE ORIGEN
DIRECCION DE DESTINO
00000000 PROTOCOLO=17 LONGITUD UDP
0 7 8 15 16 31
Mencionando nuevamente algunas de las cosas que UDP no realiza tales como el control
de flujo, control de errores y entrega en secuencia. Todo lo anterior mencionado
corresponde a procesos de usuario. Lo que si realiza es proporcionar una interfaz para el
protocolo IP con la característica de demultiplexar varios procesos mediante el uso de los
puertos y la detección de errores de extremo a extremo opcional.
Para aplicaciones que necesitan tener un control preciso sobre el flujo de paquetes,
control de errores o temporizadores, UDP es la mejor opción para estas tareas.
Aplicaciones
INTERFAZ DE USUARIO
Esto supone una actividad que se realiza cada determinado tiempo tales como un
muestreo pasivo como lo hacen los sensores. En una situación de monitorización en
tiempo real, ya que en esta aplicación la perdida de una unidad de datos no causaría
ningún desastre debido a que las muestras llegan en periodos breves de tiempo.
PETICION-RESPUESTA
Puertos
UDP utiliza puertos para permitir la comunicación entre aplicaciones. El campo de puerto
tiene una longitud de 16 bits, por lo que el rango de valores válidos va de 0 a 65.535. El
puerto 0 está reservado, pero es un valor permitido como puerto origen si el proceso
emisor no espera recibir mensajes como respuesta.
Los puertos 1 a 1023 se llaman puertos "bien conocidos" y en sistemas operativos tipo
Unix enlazar con uno de estos puertos requiere acceso como superusuario.
Los puertos 49.152 a 65.535 son puertos dinámicos y son utilizados como puertos
temporales, sobre todo por los clientes al comunicarse con los servidores.
PROTOCOLO TCP
El "protocolo de control de transmisión" ('Transmission Control Protocol', TCP) está
pensado para ser utilizado como un protocolo 'host' a 'host' muy fiable entre miembros de
redes de comunicación de computadoras por intercambio de paquetes y en un sistema
interconectado de tales redes.
Operación
Como se ha hecho notar más arriba, el propósito principal de TCP consiste en
proporcionar un servicio de conexión o circuito lógico fiable y seguro entre pares de
procesos. Para proporcionar este servicio encima de un entorno de internet menos fiable,
el sistema de comunicación requiere de mecanismos relacionados con las siguientes
áreas:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Puerto de origen | Puerto de destino |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Número de secuencia |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Número de acuse de recibo |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Posic | |U|A|P|R|S|F| |
| de los| Reservado |R|C|S|S|Y|I| Ventana |
| datos | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Suma de control | Puntero urgente |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opciones | Relleno |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Datos |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+--------+--------+--------+--------+
| Dirección de origen |
+--------+--------+--------+--------+
| Dirección de destino |
+--------+--------+--------+--------+
| cero | PTCL | Longitud TCP |
+--------+
|00000000|
+--------+
Tipo=0
Este código de opción indica el final de la lista de opciones.
Éste podría no coincidir con el final de la cabecera de TCP deducida a partir del campo
"Posición de los datos". Esta opción se utiliza al final de todas las opciones, no al final de
cada opción, y sólo es necesario utilizarla si el final de las opciones restantes no coincide
con el final de la cabecera de TCP.
Sin operación
+--------+--------+---------+--------+
|00000010|00000100| max tam seg |
+--------+--------+---------+--------+
Tipo=2 Longitud=4
Comunicación de datos
Una vez establecida la conexión los datos se transmiten mediante el intercambio de
segmentos. Dado que los segmentos pueden perderse debido a errores (fallo en la suma
de comprobación) o congestión de la red, TCP utiliza la retransmisión (tras un tiempo de
espera) para asegurar la entrega de cada segmento. Pueden llegar segmentos duplicados
debido a la red o a la retransmisión de TCP. Tal y como se explica en la sección sobre
números de secuencia, TCP realiza ciertas comprobaciones sobre los números de
secuencia y de acuse de recibo en los segmentos para verificar su admisibilidad.
El emisor de los datos mantiene un registro del próximo número de secuencia a usar en la
variable SND.NXT. El receptor de los datos mantiene un registro del siguiente número de
secuencia esperado en la variable RCV.NXT. El emisor mantiene también un registro del
número de secuencia sin acuse de recibo menor en la variable SND.UNA. Si el flujo de
datos queda momentáneamente inactivo y de todos los datos enviados se tiene acuse de
recibo entonces las tres variables serán idénticas.
Cuando el emisor crea un segmento y lo transmite, incrementa SND.NXT.
Cuando el receptor acepta un segmento incrementa RCV.NXT y envía un acuse de
recibo. Cuando el emisor de los datos recibe un acuse de recibo incrementa SND.UNA.
La diferencia entre los valores de estas variables es una medida del retardo en la
comunicación. El valor en el cual se incrementan estas variables es el de la longitud de
los datos del segmento. Nótese que, una vez en el estado ESTABLISHED todos los
segmentos deben llevar la información del acuse de recibo actualizada.
La llamada de usuario CLOSE implica la función de entrega inmediata 'push', tal y como
sucede con el indicador de control FIN en un segmento entrante.
Tiempo de espera de retransmisión
Debido a la variabilidad de las redes que componen un sistema de redes de internet y la
gran cantidad de casos de conexiones TCP el tiempo de espera de retransmisión se debe
determinar dinámicamente. Se ilustra a continuación un procedimiento para determinar un
tiempo de espera de retransmisión
Cabecera IP:
Segmento TCP:
Datos (incluye Opciones y Campo Relleno):
La salida hexadecimal que vamos a analizar:
….UAPRSF
——————
00011000(en binario)
——————
76543210
los bytes 7 y 6 son los reservados. Vemos entonces que tenemos activados con 1 los
indicadores A y P que corresponden a SYN +PSH
NOTA: Esto último ya los estudiamos en el capítulo de filtros TCPDump/ WinDump
fd59 Window (ventana). (16 bits). Número de bytes que el emisor del segmento está
dispuesto a aceptar por parte del
destino. En este caso 64857.
2def Checksum o suma de verificación (16 bits). Suma de comprobación de errores
del segmento actual. Para su cálculo se utiliza una pseudo-cabecera que también
incluye las direcciones IP origen y destino.
0000 Urgent Pointer o Puntero urgente (16 bits). Se utiliza cuando se están enviando
datos urgentes que tienen preferencia sobre todos los demás e indica el siguiente byte
del campo Datos que sigue a los datos urgentes. Esto le permite al destino identificar
donde terminan los datos urgentes.
Nos quedan dos campos. Options y Padding o relleno
Opciones (variable). Si está presente únicamente se define una opción: el tamaño
máximo de segmento que será aceptado.
Relleno. Se utiliza para que la longitud de la cabecera sea múltiplo de 32 bits.
Inmediatamente después nos encontramos con los datos. En este caso vemos la
información del update de la base de datos mysql.
En los ejemplos veremos los campos del segmento TCP que acabamos de estudias de
una forma más práctica.
Veremos en este apéndice cómo se realiza una conexión TCP. Nos ayudará a
interpretar logs, trazas y técnicas de escaneo. Veremos también algunos componentes de
los paquetes TCP aparte de los puertos de la máquina origen y destino. Estos
componentes importantes son los números de secuencia y de confirmación (SEQ y ACK)
que se utilizan para asegurar la integridad de la conexión y los flags o banderas que son
los encargados de indicar la finalidad del paquete (para iniciar o finalizar una conexión,
para transmitir datos, etc.).
Una conexión TCP se realiza en tres pasos. Es lo que técnicamente se llama three-way
handshake:
1. En el sistema / host que inicia la conexión o cliente (TCP A), envía un paquete de
SYN con un número de secuencia inicial asociado a esta conexión al sistema / host
destinatario o servidor (TCP B).
2. Este responde con un paquete SYN-ACK (acuse de recibo) confirmando la recepción
del SYN inicial enviado por (TCP A) y enviándole a su vez su propio número de
secuencia.
3. Para finalizar, el cliente (TCP A) reconoce la recepción del SYN del servidor (TCP
B) mediante el envío de un ACK. Este es el momento en que queda establecida la
conexión. Ya se puede iniciar la transferencia de datos entre (TCP A) y (TCP B).
Conclusiones
El protocolo UDP si bien es un protocolo poco fiable ya que carece de muchas
funciones que el protocolo TCP si tiene, este tiene mucha utilidad en aplicaciones
donde se requiera un envió rápido de datos y donde sea un problema una
retransmisión de datos erróneos tal es el ejemplo de la transmisión de voz. Este
protocolo no necesita establecer una conexión para iniciar la transmisión de
información por lo que se pueden enviar datos sin asegurarse de que el receptor
está disponible y listo para recibir datos. Debido a esto se deberán enviar los datos
varias veces para asegurarse de que el receptor reciba los datos, por este tipo de
situaciones no se debe utilizar si se quiere una conexión fiable.
Bibliografía
https://www.rfc-es.org/rfc/rfc0768-es.txt
Tanebaum S., Andrew, David J., Wetherall (2012): Redes de computadoras. México: Pearson
educación (pp. 464-466)
Stallings, William (2002): Comunicaciones y redes de Computadoras Prentice Hall (pp. 599-600)
https://es.m.wikipedia.org/wiki/Protocolo_de_datagramas_de_usuario
http://neo.lcc.uma.es/evirtual/cdd/tutorial/transporte/udp.html
http://cv.uoc.edu/UOC/a/moduls/90/90_329/web/main/m2/v4_1.html
https://es.m.wikipedia.org/wiki/Anexo:Números_de_protocolo_IP
https://es.m.wikipedia.org/wiki/Protocolo_no_orientado_a_la_conexión
https://www.rfc-es.org/rfc/rfc0793-es.txt
https://seguridadyredes.wordpress.com/2008/01/29/analisis-capturas-trafico-de-red-
interpretacion-segmento-tcp-ii-establecimento-conexian-tcp/