TCP与UDP的区别

转载 2012年03月31日 16:06:28
这里先简单的说一下TCP与UDP的区别:
1。基于连接与无连接 
2。对系统资源的要求(TCP较多,UDP少) 
3。UDP程序结构较简单 
4。流模式与数据报模式 

5。TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证

TCP与UDP区别

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快 
从专业的角度说,TCP的可靠保证,是它的三次握手机制,这一机制保证校验了数据,保证了他的可靠性。而UDP就没有了,所以不可靠。不过UDP的速度是TCP比不了的,而且UDP的反应速度更快,QQ就是用UDP协议传输的,HTTP是用TCP协议传输的,不用我说什么,自己体验一下就能发现区别了。再有就是UDP和TCP的目的端口不一样(这句话好象是多余的),而且两个协议不在同一层,TCP在三层,UDP不是在四层就是七层。


另外结合GPRS网络的情况具体的谈一下他们的区别:
1。TCP传输存在一定的延时,大概是1600MS(移动提供),UDP响应速度稍微快一些。
2。TCP包头结构
源端口16位
目标端口 16位
序列号 32位
回应序号 32位
TCP头长度 4位
reserved 6位
控制代码6位
窗口大小16位
偏移量16位
校验和16位
选项 32位(可选) 
这样我们得出了TCP包头的最小大小.就是20字节. 

UDP包头结构
源端口16位
目的端口16位
长度 16位
校验和 16位
UDP的包小很多.确实如此.因为UDP是非可靠连接.设计初衷就是尽可能快的将数据包发送出去.所以UDP协议显得非常精简. 

3。GPRS网络端口资源,UDP十分紧缺,变化很快;而TCP采用可靠链路传输,不存在端口变化的问题



工业场合的应用一般都有以下特点,

1。要求时时传输,但也有一些场合是定时传输,总的来说在整个传输过程中要求服务器中心端和GPRS终端设备能相互的、时时的传输数据。
TCP本身就是可靠链路传输,提供一个时时的双向的传输通道,能很好的满足工业现场传输的要求。但是GPRS网络对TCP链路也存在一个限制:此条链路在长时间(大概20分钟左右,视具体情况而定)没有数据流量,会自动降低此链路的优先级直至强制断开此链路。所以在实际使用中也会采用心跳包(一般是一个字节的数据)来维持此链路。
UDP由于自身特点,以及GPRS网络UDP端口资源的有限性,在一段时间没有数据流量后,端口容易改变,产生的影响就是从服务器中心端向GPRS终端发送数据,GPRS终端接收不到。具体的原因就是移动网关从中作了中转,需要隔一定时间给主机发UDP包来维持这个IP和端口号,这样主机就能主动给GPRS发UDP包了并且我在测试中发现,这个间隔时间很短,我在1多分钟发一次UDP包才能够维持,但是再长可能移动网关那边就要丢失这个端口了,此时如果主机想主动发数据给GPRS,那肯定是不行的了,只有GPRS终端设备再发一个UDP包过去,移动重新给你分配一个中转IP和端口,才能够进行双向通讯。

2。要求数据的丢包率较校有些工业场合,例如电力、水务抄表,环保监测等等,不容许传输过程中的数据丢失或者最大限度的要求数据的可靠性。
从这一点来看,很显然在无线数据传输过程中,TCP比UDP更能保证数据的完整性、可靠性,存在更小的丢包率。在实际测试中也是如此。以厦门蓝斯通信有限公司提供的GPRS终端设备为例:TCP的在千分之9,UDP的在千分之17左右。

3。要求降低费用。目前有很大部分GPRS设备的应用都是取代前期无线数传电台,除了使用范围外,其考虑的主要问题就是费用。能降低费用当然都是大家最愿意接受的。和费用直接相关的就是流量了,流量低,费用就低了。
虽然TCP本身的包头要比UDP多,但是UDP在实际应用中往往需要维护双向通道,就必须要通过大量的心跳包数据来维护端口资源。总的比较起来,UDP的实际流量要比TCP还要大。很多使用者在初期的时候并不了解UDP需要大量心跳包来维持端口资源这个问题,往往都认为UDP要比TCP更节省流量,实际上这里存在着一个误区。

4。在某些特定的应用场合,例如一些银行的时时交互系统,对响应速度要求很高,此时数据传输频率较快,不需要大量心跳包维持UDP端口资源,采用UDP就比较有利了。

5。在目前的1:N的传输模式中,既有多个GPRS终端设备往一个服务器中心传输数据,此时采用UDP会比TCP要好的多,因为UDP耗用更少的系统资源。但是在实际应用中却发现,很多用户还是采用TCP的传输方式,建立二级中心1:A(1:N),即每一个分中心对应N/A台设备,独立处理数据,再统一将数据传送到主中心。这样既能保证了传输过程中采用了TCP的传输协议,又能很好处理了中心服务器的多链路的系统耗用的问题。

总的来说,我认为TCP/IP协议更能满足目

TCP 和 UDP区别

  • 2015年04月16日 22:11
  • 387KB
  • 下载

TCP与UDP的区别

  • 2017年08月15日 11:25
  • 269KB
  • 下载

TCP与UDP的特点和区别

面向连接的TCP       TCP面向连接通信,所以握手过程会消耗资源,过程为可靠连接,不会丢失数据,适合大数据量交换       “面向连接”就是在正式通信前必须要与对方建立起连接...

UDP和TCP区别详解

  • 2011年07月31日 19:06
  • 118KB
  • 下载

tcp和udp的区别测试实例

  • 2011年06月02日 15:38
  • 12KB
  • 下载

浅谈TCP和UDP的区别

作为运输层中两个主要的协议,TCP和UDP都能向应用层提供通信服务,然而它们提供的服务差别还是很大的。1、 TCP协议是面向连接的。也就是说,应用程序在使用 TCP协议之前,必须先建立起一个 TCP...
  • STFPHP
  • STFPHP
  • 2016年11月16日 23:40
  • 531

TCP与UDP的区别、用途、例子

  • 2012年08月03日 10:29
  • 6KB
  • 下载

TCP与UDP区别(socket编程)

  • 2011年11月07日 14:09
  • 17KB
  • 下载

TCP与 UDP区别及使用场景总结

UDP与TCP 区别点: UDP协议:发短信 只管发生,不确认对方是否接收到 每个数据大小限制在64k之内 因为无需链接,因此是不可靠协议 速度快应用场景(当对网络通讯质量有要求的时候,比...

UDP与TCP的区别

  • 2017年02月08日 13:46
  • 25KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP与UDP的区别
举报原因:
原因补充:

(最多只允许输入30个字)