The My Opera forums have been replaced with forums.opera.com. Please head over there to discuss Opera's products and features
See the new ForumsYou need to be logged in to post in the forums. If you do not have an account, please sign up first.
为什么RTP往往是使用UDP,而不是使用TCP封装
为什么RTP往往是使用UDP,而不是使用TCP封装,接下来简单的解释一下,先摘录一些基本概念,然后使用一个表格进行对比,进一步探讨这个问题。计算机网络OSI模型中,TCP和UDP为第四层传输层的功能。
简单的说:TCP传输控制协议(Transmission Control Protocol)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。TCP协议能为应用程序提供可靠的通信连接,使一台计算机 发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。
必须要经过三次“对话”才能建立。
第1次对话
A–> 发连接请求数据包 –>B
第2次对话
A<– 发送同意连接和要求同步 <–B
第3次对话
A–> 发数据包确认B的要求的同步 –>B
UDP用户数据报协议(User Data Protocol)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。
UDP例子:“ping”命令测试两台主机之间TCP/IP通信是否正常,就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。
几个使用TCP重要的优点:
1.TCP速率控(TCP rate control)制有经过证明是具有的稳定性和可扩展性。
2.TCP提供保证delivery, deleting the packet loss efficiently。
3.TCP是可以助于的越过防火墙。
4.流量控制(The flow control)。
5.The transmission windows system有助于优化网络资源的使用。
从网上摘抄一段关于TCP协议的主要功能:
TCP协议的主要功能是完成对数据报的确认、流量控制和网络拥塞;自动检测数据报,并提供错误重发的功能;将多条路径传送的数据报按照原来的顺序进行排列,并对重复数据进行择取;控制超时重发,自动调整超时值;提供自动恢复丢失数据的功能。
相对TCP,UDP显然更好地使用于实时应用,原因如下:
1.最低开销(Minimum overhead)。
2.在最大数据从传输速率开始发送。
3.不重复请求,所以就没有重传(一个单一的数据包丢失在一个的实时应用中并不重要)。
4.低处理时间(low processing time)。不需要缓冲(No buffers)。
与TCP不同,UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。由于UDP 比较简单,UDP头包含很少的字节,比TCP负载消耗少。下图为TCP的头和UDP的头的格式:


参考:
深入浅出讲解TCP/UDP协议:http://tech.163.com/05/0913/11/1THDB8DO00091589.html
http://zh.wikipedia.org/zh-cn/传输控制协议
http://zh.wikipedia.org/zh-cn/用户数据报协议
[/SIZE]