用户数据报协议UDP
UDP主要特点 :
-
无连接
-
尽最大努力交付
-
面向报文 : 应用层交下来的报文直接加上UDP头部就往IP层扔, 不合并也不拆分
-
没有拥塞控制
-
支持一对一, 一对多, 多对一和多对多的交互通信
-
首部开销小, 只有8个字节
UDP首部
UDP首部格式
-
源端口 : 源端口号. 在需要对方回信时选用, 不需要则全0
-
目的端口 : 目的端口号. 这在终点交付报文时必须要使用到
-
长度 : UDP数据报的长度, 最小值为8(仅有首部)
-
检验和 : 与IP数据报只检验首部不同的是, UDP需要把首部和数据部分一起检验
下面分别介绍三种使用UDP进行可靠数据传输的协议
1、RUDP(Reliable User Datagram Protocol)
可靠用户数据报协议(RUDP)是一种基于可靠数据协议(RDP: RFC908 和 1151 (第二版))的简单分组传输协议。作为一个可靠传输协议,RUDP 用于传输 IP 网络间的电话信号。它允许独立配置每个连接属性,这样在不同的平台可以同时实施不同传输需求下的协议。
RUDP 提供一组数据服务质量增强机制,如拥塞控制的改进、重发机制及淡化服务器算法等,从而在包丢失和网络拥塞的情况下, RTP 客户机(实时位置)面前呈现的就是一个高质量的 RTP 流。在不干扰协议的实时特性的同时,可靠 UDP 的拥塞控制机制允许 TCP 方式下的流控制行为。
为了与网络 TCP 通信量同时工作, RUDP 使用类似于 TCP 的重发机制和拥塞控制算法。 在最大化利用可用带宽上,这些算法都得到了很好的证明。
RUDP特性
客户机确认响应服务器发送给客户机的包;
视窗和拥塞控制,服务器不能超出当前允许带宽; 一旦发生包丢失,服务器重发给客户机; 比实时流更快速,称为“缓存溢出”。 用户数据报协议(UDP)
2、RTP(Real Time Protocol)
RTP,实时协议被用来为应用程序如音频,视频等的实时数据的传输提供端到端(end to end)的网络传输功能。传输的模型可以是单点传送或是多点传送。数据传输被一个姐妹协议——实时控制协议(RTCP)来监控,后者允许在一个大的多点传送网络上监视数据传送,并且提供最小限度的控制和识别功能。
RTP是被IETF在RFC1889中提出来的。顺带提及,RTP已经被接受为实时多媒体传送的通用标准。ITU-T跟IETF都在各自的系统中将这一协议标准化。
1.1 为何需要RTP?
TCP不能支持像交互视频,会议等的实时服务,这一原因是由于TCP只是一个“慢”协议,需要三次握手。就此在IP层上UDP是一个比TCP更好的选择。但是UDP是本质上是一个不可靠协议,不支持在包丢情况下的重传机制。诚然,UDP有一些特性,比如多路复用跟校验和服务,这些都是对实时服务很有利的。为了消除UDP的缺点,RTP是作为应用层而被提出来的。
RTP提供的各种服务包括有效负载识别,序列编号,时间戳和投递监听。RTP能够序列化包,当这些包在收端不是按顺序到达的时。序列号也能被用来识别包丢失。时间戳被用于媒体有效的播放。到达的数据一直被RTCP监听,以通知RTP层来校正其编码和传输的参数。例如,如果RTCP层检测到包丢失,它会通知RTP层减缓发送速率。
尽管RTP有助于实时媒体的有效的播放 ,但是要注意的是RTP自身并不提供任何机制来确保及时传递或提供其他服务质量(QoS)的保证,而是依靠低层服务来完成这些。同样,RTP也不保证投递或防止无序投递。RTP被设计出来主要是为了满足有多个参加者的多媒体会议的需要。RTP也同样适合于象持续数据的储存,分布式交互仿真,主动标记以及应用程序的控制和测量。
1.2 RTP特性一览
RTP提供有效负荷类型识别,乱序重排和利用时间戳的媒体有效播放。
RTCP监控服务质量,也提供在一个当前进行的会话中传送关于参加者的信息作用。
RTP对于下层协议是独立的,它能够工作在像TCP/IP,ATM,帧时延等类型的网络上。
如果被下层网络支持,RTP支持利用多路技术的对于多点的数据传输。
RTP序列号也能被用来确定包的合适位置。例如在视频解码,包无需按序解码。