# RTP/RTCP

RTP es la abreviación de Real-time Transport Protocol, por su denominación en inglés. Es un estándar creado por la IETF para la transmisión confiable de voz y video a través de Internet. La primera versión fue publicada en 1996 en el documento RFC 1889 y fue reemplazado por el estándar RFC 3550 en 2003.
En aplicaciones de Voz sobre IP, RTP es el protocolo responsable de la transmisión de los datos. La digitalización y compresión de la voz y el video es realizada por el CODEC. Para el manejo de señalización o establecimiento de llamada existe el protocolo SIP.
Dentro del estándar RFC 3550 se define un protocolo adicional para el envío de datos de control y datos de mediciones realizadas durante la transmisión. Se conoce como RTCP RTP Control Protocol. los paquetes RTCP se envián periódicamente dentro de la secuencia de paquetes RTP.

## Características generales

Aunque RTP tiene algunas características de protocolo de nivel de transporte (Según el modelo OSI), es transportado usando UDP. UDP no maneja sesiones ni mecanismos que garanticen la recepción de los paquetes, pero es usado por RTP en lugar de TCP debido a que reduce el tiempo de envío de los paquetes a través de la red. En aplicaciones de voz y video es más importante una transmisión rápida que la pérdida de algunos paquetes durante el recorrido.
RTP implementa dos mecanismos principales para garantizar una transmisión de voz: El uso de Número de secuencia y un Registro de tiempo. En redes IP es común que los paquetes tomen caminos diferentes para llegar al destino. En aplicaciones de datos esto no es demasiado importante pero para voz y video puede representar una falla detectable por el oído del usuario final. Por esto RTP usa el número de secuencia para reorganizar los paquetes en caso de que lleguen en desorden y el Registro de tiempo es usado para ajustar los intervalos de muestreo de acuerdo a la secuencia original.

### Formato y valores de encabezado

El paquete RTP se ubica en el espacio de datos de UDP. RTP no tiene asignado un puerto UDP específico, debido a que es posible que varias aplicaciones de un mismo usuario utilicen RTP. Existen sistemas que no soportan el uso de un mismo puerto por aplicativos diferentes. De acuerdo a las especificaciones se utiliza un número par elegido al azar, y RTCP utiliza el número impar consecutivo.
Los campos más importantes en el encabezado RTP son los siguientes:
* Número de secuencia: de 2 bytes, es un número que se incrementa por cada paquete enviado. Es usado para determinar pérdida de paquetes y recuperar correctamente la secuencia de voz.
* Registro de tiempo: Más conocido como Timestamp, es un campo de 32 bits asignado en el momento del envío con base en un reloj del sistema. El valor inicial es seleccionado aleatoriamente para evitar confusión con otras secuencias RTP presentes. Existe la posibilidad de sincronizar los relojes de envío y recepción usando el protocolo NTP.

## RTCP

RTCP es utilizado para enviar datos de control entre el emisor y receptor de una secuencia RTP. Los paquetes RTCP son enviados aproximadamente cada cinco segundos, y contienen datos que ayudan a verificar las condiciones de transmisión en el extremo remoto.