Real Time Transport Protocol, not to be confused with Reliable Transport Protocol, is the protocol of choice when using time sensitive applications such as transmitting streaming media, voice and video. Common applications for RTP are voice and video conferencing, IP TV and push-to-talk web communications. Indeed RTP is one of the technical foundations of VoIP and internet telephony and is often used in conjunction with SIP (session initiation protocol)
The reason that RTP became a necessity in transporting voice and video is due to the inherent weakness in TCP/IP when transmitting time sensitive data packets. TCP/IP was designed as an internet working transport protocol in the early days or computer communications where data was traversing telephone lines using modem technology. Consequently, TCP/IP has many reliability and corrective actions that it can perform on the data to ensure reliable delivery. These reliability mechanisms, such as resending of lost packets and reordering of packets into the correct sequence are vital for transmitting data across unreliable communication links such as old modems and the Internet. However, TCP/IP’s reliability mechanisms are of no use when transmitting real time voice or video, after all there is no point resending lost voice or video packets in a real time scenario. Consequently, there was a need to provide a reliable and simple lightweight protocol without any of this resend or reorder management functions for use with real time applications.
RTP specification actually refers to two separate components RTP and RTCP. The data transfer protocol, RTP, facilitates the transfer of real time data by providing mechanisms for synchronization and payload formatting. RTCP on the other hand provides quality of service feedback and synchronization of the data streams. RTCP is typically only around 5% of the RTP traffic.
An RTP session is established for each multimedia stream, each session consists of an IP address and a pair of RTP and RTCP UDP ports. According to the RTP specification, the RTP port should be even and the RTCP port the next available odd number UDP port. By using distinct sessions per data stream allows individual streams to be identified and deselected which gives the application greater control and scalability.