Pregunta

Yo quería saber por qué se utiliza UDP en lugar de TCP RTP?. Las principales herramientas de VoIP utilizados solamente UDP como Pirateé algunos de los OSS de VoIP.

¿Fue útil?

Solución

Como DJ señaló, el TCP se trata de obtener un flujo de datos fiable, y se ralentizará la transmisión, y los paquetes corruptos retransmitir, con el fin de lograr eso.

UDP no se preocupa por la fiabilidad de la comunicación, y no ralentizar o volver a transmitir datos.

Si la aplicación necesita un flujo de datos fiable, por ejemplo, para recuperar un archivo desde un servidor Web, elija TCP.

Si la aplicación no se preocupa por los paquetes defectuosos o perdidos, y no es necesario incurrir en la sobrecarga adicional para proporcionar la fiabilidad adicional, se puede elegir en lugar de UDP.

VoIP no se mejora de manera significativa por la transmisión de paquetes fiable, y de hecho, en algunos casos, las cosas en TCP como retransmisión y retardo exponencial en realidad puede dañar la calidad de VoIP. Por lo tanto, UDP era una mejor opción.

Otros consejos

Una gran cantidad de buenas respuestas se han dado, pero me gustaría señalar una cosa explícitamente:

Básicamente un flujo de datos completo es una cosa agradable para tener en tiempo real de audio / vídeo, pero no es estrictamente necesario (como otros han señalado):

El hecho importante es que algunos datos que llegan demasiado tarde no sirve para nada. Lo bueno es que faltan los datos para una trama que se debería haber mostrado hace un segundo?

Si se va a utilizar TCP (que también garantiza el orden correcto de todos los datos), entonces no sería capaz de llegar a los datos más hasta a la fecha, hasta el viejo se transmite correctamente. Esto es doblemente mala: hay que esperar a la retransmisión de los datos antiguos y los nuevos datos (que ahora se retrasó) probablemente será igual de inútil

.

Así RTP hace algún tipo de transmisión de mejor esfuerzo, ya que trata de transferir todos los datos disponibles en el momento, pero no intenta retransmitir los datos que se perdió / dañado durante la transferencia (*). Simplemente va adelante con la vida y espera que los datos actuales más importantes llegue correctamente.

(*), en realidad no sé los detalles de RTP. A lo mejor no tratar de volver a transmitir, pero si lo hace, entonces no será tan agresivo como TCP es (que no siempre va a aceptar ninguna pérdida de datos).

Los demás son correctas, sin embargo, la realidad no te dice la verdadera razón de por qué. Saua tipo de alusión a ella, pero aquí hay una respuesta más completa.

Audio y Vídeo es en tiempo real. Si está escuchando la radio o ver la televisión, y la señal se interrumpe, no recoger donde lo dejó .. Está a "observar" la señal a medida que fluye, y si no puede observar que en un momento dado, lo pierde.

La razón, es simple. Retrasar. VOIP se esforzaba mucho para minimizar la cantidad de demora desde el momento que alguien habla en un extremo y se obtiene que en su final, y su respuesta de nuevo. De lo contrario, ya que se han producido errores, la cantidad de retardo entre el momento en que la persona habla y cuando se recibió la señal crecería de forma continua hasta que se convirtió en inútil.

Recuerde, cada retraso de una retransmisión tiene que ser repetido, y que provoca más datos para ser retrasados, y luego otro error provoca un retraso aún mayor. La única solución viable es a caer simplemente los datos que no se pueden mostrar en tiempo real.

Un retardo de 1 segundo de retransmisión significaría que sería ahora ser de 1 segundo desde el momento en que dije algo hasta que lo escucharon. Un segundo retardo de 1 segundo ahora significa que es 2 segundos desde el momento en que dicen algo hasta que lo escuche. Esto es acumulativo ya que los datos se reproduce a la misma velocidad a la que se habla, y así sucesivamente ...

RTP podría ser orientado a la conexión, pero entonces tendría que caer (o saltar) de datos para mantenerse al día con los errores de retransmisión de todos modos, ¿por qué molestarse con la sobrecarga adicional?

paquetes Técnicamente RTP pueden ser intercalados través de una conexión TCP. Hay un montón de grandes respuestas que se dan aquí. Dos puntos de menor importancia adicionales:

RFC 4588 describe cómo se puede utilizar la retransmisión con los datos RTP. La mayoría de los clientes que reciben flujos RTP emplean una memoria intermedia para tener en cuenta la fluctuación en la red que es típicamente 1-5 segundos de largo y que significa que hay tiempo disponible para una retransmisión para recibir los datos deseados.

tráfico RTP puede ser intercalada en una conexión TCP. En la práctica, cuando se hace esto, la diferencia entre Intercalado RTP (es decir, a través de TCP) y RTP envía a través de UDP es cómo estos dos realizar sobre una red con pérdida con ancho de banda suficiente disponible para el usuario. El flujo entrelazado TCP va a terminar siendo desigual como el jugador espera continuamente en un estado del búfer para los paquetes en llegar. Según el reproductor puede ir por delante para ponerse al día. Con una conexión RTP obtendrá artefactos (manchas / desgarro) en el video.

UDP se utiliza a menudo para diversos tipos de tráfico en tiempo real que no es necesario un estricto orden para ser útil. Esto se debe a TCP impone una ordenación antes de pasar datos a una aplicación (por defecto, se puede evitar esto ajustando el puntero URG, pero nadie parece hacer nunca este) y que puede ser altamente deseable en un entorno en el que había en lugar de obtener datos en tiempo real actual de obtener datos antiguos de forma fiable.

RTP es bastante insensible a la pérdida de paquetes, por lo que no requiere la confiabilidad de TCP.

UDP tiene menos sobrecarga para las cabeceras de modo que un paquete puede llevar más datos, por lo que el ancho de banda de la red se utiliza de manera más eficiente.

UDP proporciona una transmisión de datos rápida también.

Así que UDP es la elección obvia en casos como este.

Además de todos los otros agradables y respuestas correctas este artículo da una buena comprensión de las diferencias entre TCP y UDP.

UDP se utiliza cuando los datos se envían, que no necesita ser recibido exactamente en el objetivo, o cuando no se necesita conexión estable.

TCP se utiliza si los datos necesitan ser recibido exactamente, bit por bit, no hay pérdida de bits.

Para Reproducción de vídeo y de sonido, algunos bits que se pierden en el camino no afectan el resultado de una manera, que es digna de mención, algunos píxeles en su defecto, en una imagen de una corriente, nada de lo que afecta a un usuario, en los DVD del perdidos velocidad de bits es mayor.

Sólo una observación: Cada paquete enviado en un flujo RTP se le da un número uno más alto que sus predecessor.This permite thr de destino para determinar si todos los paquetes que faltan. Si un paquete se Mising, la mejor acción para el destino de tomar es la aproximación de la vaue falta por interpolación. Retranmission no es una opción proctical ya que el paquete retransmitido sería demasiado tarde para ser útil.

Me gustaría añadir rápidamente a lo que dijo Matt H en respuesta a la respuesta de Stobor. Matt H mencionó que RTP sobre paquetes UDP puede checksum'ed por lo que si están dañados, obtendrán resentirse. Esto es en realidad una característica opcional en la mayoría de PBX. En el asterisco, por ejemplo, puede activar / desactivar las sumas de comprobación en su RTP sobre el tráfico UDP en el fichero de configuración rtp.conf con la siguiente línea:

rtpchecksums=yes ; or no if you prefer

Saludos!

El tiempo real Protocolo de transporte es un protocolo de red que se utiliza para entregar streaming de audio y vídeo de los medios de comunicación en internet, permitiendo así que el Protocolo de Voz sobre Internet (VoIP).

RTP se usa generalmente con un protocolo de señalización, tal como SIP, que establece conexiones a través de la red. RTP aplicaciones pueden utilizar el Protocolo de Control de Transmisión (TCP), pero la mayoría utiliza el protocolo de datagramas de usuario (UDP) en lugar de UDP porque permite una entrega más rápida de los datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top