Domanda

Volevo sapere perché UDP è utilizzato in RTP, piuttosto che il protocollo TCP?. I principali strumenti VoIP utilizzati solo UDP come ho inciso alcuni dei OSS VoIP.

È stato utile?

Soluzione

Come DJ ha sottolineato, TCP è di ottenere un flusso di dati affidabili, e rallenterà la trasmissione, e ri-trasmissione corrotto i pacchetti, al fine di raggiungere questo obiettivo.

UDP non si preoccupa affidabilità della comunicazione, e non rallentare o ri-trasmettere dati.

Se l'applicazione ha bisogno di un flusso di dati affidabili, ad esempio, per recuperare un file da un server web, si sceglie il protocollo TCP.

Se l'applicazione non si preoccupa di pacchetti danneggiati o persi, e non è necessario sostenere l'overhead aggiuntivo per fornire l'affidabilità supplementare, è possibile scegliere invece UDP.

VOIP non è significativamente migliorata con trasmissione a pacchetto affidabile, e di fatto, in alcuni casi le cose in TCP come ritrasmissione e backoff esponenziale possa realmente danneggiare la qualità VOIP. Pertanto, UDP è stata una scelta migliore.

Altri suggerimenti

Un sacco di buone risposte sono state date, ma vorrei sottolineare una cosa esplicitamente:

In sostanza un flusso di dati completo è una bella cosa da avere in tempo reale audio / video, ma la sua non è strettamente necessario (come altri hanno fatto notare):

Il fatto importante è che alcuni dati che arriva troppo tardi è inutile. A che serve i dati mancanti per una struttura che avrebbe dovuto essere visualizzato un secondo fa?

Se si sceglie di usare il protocollo TCP (che garantisce anche l'ordine corretto di tutti i dati), allora non sarebbe in grado di raggiungere i dati più up-to-date fino a quando il vecchio viene trasmessa in modo corretto. Questo è doppiamente male: bisogna aspettare per la ritrasmissione dei vecchi dati e i nuovi dati (che ora è in ritardo) sarà probabilmente altrettanto inutile

.

Quindi, RTP fa un qualche tipo di trasmissione best-effort in quanto cerca di trasferire tutti i dati disponibili in tempo, ma non tenta di ritrasmettere i dati che è stato perso / danneggiato durante il trasferimento (*). Si va avanti con la vita e si augura che i dati correnti più importante arriva correttamente.

(*) in realtà non so le specifiche di RTP. Forse non tenta di ritrasmettere, ma se lo fa allora non sarà così aggressivo come TCP è (che non potrà mai accettare qualsiasi perdita di dati).

Gli altri sono corrette, ma la realtà non vi dico la vera ragione per cui. Saua tipo di suggerimenti in esso, ma qui è una risposta più completa.

Video Audio ed è in tempo reale. Se si sta ascoltando una radio o guardare la TV, e il segnale è interrotto, non riprendere da dove si era interrotto .. Sei solo ad "osservare" il segnale in quanto i flussi, e se non si possono osservare che in un dato momento, si perde.

La ragione, è semplice. Ritardo. VOIP prova molto difficile da ridurre al minimo la quantità di ritardo tra il momento qualcuno parla in un'estremità e si scarica su fine, e la vostra risposta indietro. In caso contrario, come errori durante, la quantità di ritardo tra quando la persona ha parlato e quando il segnale è stato ricevuto sarebbe continuamente crescere fino a diventare inutile.

Ricordare, ciascun ritardo da una ritrasmissione deve essere riprodotto, e che causa ulteriori dati a ritardare, poi un altro errore provoca un ritardo ancora maggiore. L'unica soluzione praticabile è quella di eliminare semplicemente tutti i dati che non possono essere visualizzati in tempo reale.

A 1 secondo di ritardo dalla ritrasmissione significherebbe che sarebbe ora di 1 secondo da quando ho detto qualcosa fino a quando non sentito. Un secondo ritardo di 1 secondo la società significa che è 2 secondi dalla volta che dico qualcosa fino a quando si sente. Questo è cumulativo perché i dati vengono riprodotti alla stessa velocità con cui si è parlato, e così via ...

RTP potrebbe essere orientato alla connessione, ma poi avrebbe dovuto far cadere (o saltare) i dati per tenere il passo con gli errori di ritrasmissione in ogni modo, e allora perché perdere tempo con il sovraccarico?

pacchetti RTP Tecnicamente possono essere intercalate su una connessione TCP. Ci sono un sacco di grandi risposte qui riportati. Due punti minori addizionali:

RFC 4588 descrive come si potrebbe usare ritrasmissione con i dati RTP. La maggior parte dei clienti che ricevono flussi RTP utilizzano un buffer per tenere conto di jitter nella rete che è in genere lunga 1-5 secondi e che significa che c'è tempo a disposizione per una ritrasmissione per ricevere i dati desiderati.

traffico RTP può essere intercalati su una connessione TCP. In pratica quando questo è fatto, la differenza tra Interleaved RTP (cioè su TCP) e RTP inviato attraverso UDP è come questi due eseguire su una rete con larghezza di banda lossy insufficiente disponibile per l'utente. Il flusso Interleaved TCP finirà per essere a scatti come il giocatore attende continuamente in uno stato di bufferizzazione per i pacchetti per arrivare. A seconda del lettore può saltare avanti per recuperare il ritardo. Con una connessione RTP otterrete artefatti (sbavature / lacerazione) nel video.

UDP viene spesso utilizzato per i vari tipi di traffico in tempo reale che non ha bisogno rigoroso ordinamento per essere utile. Questo perché il protocollo TCP impone un ordinamento prima di passare i dati a un'applicazione (per impostazione predefinita, è possibile aggirare il problema impostando il puntatore URG, ma nessuno sembra fare mai questo) e che può essere altamente indesiderabile in un ambiente dove ci si piuttosto ottenere i dati in tempo reale corrente di ottenere i vecchi dati in modo affidabile.

RTP è abbastanza insensibile alla perdita di pacchetti, quindi non richiede l'affidabilità del TCP.

UDP ha meno overhead per le intestazioni in modo che un pacchetto può trasportare più dati, in modo che la larghezza di banda viene utilizzata in modo più efficiente.

UDP fornisce anche la trasmissione veloce dei dati.

Quindi UDP è la scelta più ovvia, in casi come questo.

Oltre a tutte le altre risposte belle e corrette questo articolo dà una buona comprensione circa le differenze tra TCP e UDP.

UDP viene utilizzato laddove i dati viene inviato, che non ha bisogno di essere esattamente ricevuta sul bersaglio, o dove è necessaria alcuna connessione stabile.

TCP viene usato se i dati devono essere esattamente ricevuto, bit per bit, nessuna perdita di bit.

Per video e lo streaming audio, alcuni bit che si perdono lungo la strada non influiscono il risultato in un modo, cioè mentionable, alcuni pixel in mancanza di una foto di un torrente, nulla che colpisce un utente, su DVD il perduti bit rate è più alto.

solo un'osservazione: Ogni pacchetto inviato in un flusso RTP viene assegnato un numero superiore sue predecessor.This permette thr destinazione per determinare se i pacchetti sono mancanti. Se un pacchetto mancano alcune, l'azione migliore per la destinazione di prendere è quello di approssimare il vaue mancanti per interpolazione. Retranmission non è un'opzione proctical in quanto il pacchetto ritrasmesso sarebbe troppo tardi per essere utile.

Mi piacerebbe aggiungere rapidamente a ciò che ha detto Matt H in risposta alla risposta di Stobor. Matt H detto che RTP su pacchetti UDP può essere checksum'ed in modo che se sono corrotti, che riceveranno risentirsi. Questo è in realtà una funzione opzionale sulla maggior parte dei centralini. In Asterisk, per esempio, è possibile attivare / disattivare checksum sul RTP su traffico UDP nel file di configurazione rtp.conf con la seguente riga:

rtpchecksums=yes ; or no if you prefer

Cheers!

Il Real-time Transport Protocol è un protocollo di rete utilizzato per fornire lo streaming audio e video mezzi su internet, consentendo in tal modo il Voice Over Internet Protocol (VoIP).

RTP è generalmente utilizzato con un protocollo di segnalazione, come SIP, che imposta connessioni attraverso la rete. applicazioni RTP possono utilizzare il Transmission Control Protocol (TCP), ma la maggior parte utilizzare il protocollo User Datagram (UDP), invece, perché UDP consente la consegna più veloce dei dati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top