UDP与TCP的差异

来源:互联网 发布:js验证是否是数字 编辑:程序博客网 时间:2024/04/28 13:02
UDP协议有如下的特点:
  1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。
  2、UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的信息(如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排起。
  3、UDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收,也不会重发数据。
  4、UDP传送数据较TCP快速,系统开销也少。
  5、由于缺乏拥塞控制(congestion control),需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。数据报拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制来减小这个潜在的问题。
  从以上特点可知,UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而为的数据交付服务。
   UDP服务与应用场合
  UDP提供的服务是不可靠的、无连接的服务,UDP适用于无须应答并且通常一次只传送少量数据的情况。由于UDP协议在数据传输过程中无须建立逻辑连接,对数据报也不进行检查,因此UDP具有较好的实时性,效率高。在有些情况下,包括视频电话会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
   UDP协议的几个特性
  

  [1](1) UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
  (2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
  (3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
  (4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
  虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。例如,在屏幕上报告股票市场、在屏幕上显示航空信息等等。UDP也用在路由信息协议RIP(Routing Information Protocol)中修改路由表。在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。UDP广泛用在多媒体应用中,例如,Progressive Networks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的RealAudio audio-on-demand protocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP之上。
   UDP协议的应用
  [2]UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实不然,在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。
  关于UDP协议的最早规范是RFC768,1980年发布。尽管时间已经很长,但是UDP协议仍然继续在主流应用中发挥着作用。包括视频电话会议系统在内的许多应用都证明了UDP协议的存在价值。因为相对于可靠性来说,这些应用更加注重实际性能,所以为了获得更好的使用效果(例如,更高的画面帧刷新速率)往往可以牺牲一定的可靠性(例如,会面质量)。这就是UDP和TCP两种协议的权衡之处。根据不同的环境和特点,两种传输协议都将在今后的网络世界中发挥更加重要的作用。
  UDP协议和TCP协议的区别
  TCP协议的中文名称是 传输控制协议 。而UDP协议的中文名称是 用户数据报协议
  TCP协议是互联网发展过程中非常重要的一个协议,当使用TCP协议作为底层协议时,他能够保证你发送的数据按照一定的时序到达目的地,并且目的地会根据TCP协议的控制数据来校验数据的完整性和正确性。同时TCP协议在网络流量比较拥堵的时候,可以控制数据的流量来防止丢包的发生。需要了解,TCP协议是一个非常严谨的协议,他能够保证数据在恶劣介质的网络(比如wifi,grps连接等)上传送的时候保证数据安全到达。
  然而,TCP协议这种严谨性同时带来了一个问题,由于对数据完整性和正确性的苛刻要求,TCP协议不得不在协议自身中加入大量控制内容。这些控制内容可以用于检验数据包的时序,完整性,正确性等。由于这些数据的加入,导致发送端和接收端的计算量加大,并且,由于这些控制数据的加入,使得传输数据的体积也加大了很多。加重了对网络的负载。这些问题最后都指向一个致命的问题:数据的延迟性被增大了。
  对于网络游戏,视频聊天,语音聊天这种应用,由于用户对数据实时性的要求很高,而对数据完全正确性的要求又有所降低。(比如,聊天的时候,如果有个别数据包丢失或者有误,充其量你就得到一些声音不清楚,不会影响聊天的体验。) UDP协议就诞生在这种需求下。
  所以,总结起来,UDP协议被广泛的使用在对网络数据传输实时性很高而对数据准确性要求不是非常高的场合。而当今网络传输物理介质的高速提升(光纤)也降低了数据包丢失的几率。当网络状态很好的时候,UDP协议的这两个缺点又可以很大程度上被克服
原创粉丝点击