﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-willpower88-随笔分类-Network Program</title><link>http://www.blogjava.net/willpower88/category/26665.html</link><description>对JAVA有点理解了……</description><language>zh-cn</language><lastBuildDate>Fri, 19 Oct 2007 04:29:05 GMT</lastBuildDate><pubDate>Fri, 19 Oct 2007 04:29:05 GMT</pubDate><ttl>60</ttl><item><title>TCP与UDP的区别(转载)</title><link>http://www.blogjava.net/willpower88/archive/2007/10/19/154127.html</link><dc:creator>一凡</dc:creator><author>一凡</author><pubDate>Fri, 19 Oct 2007 03:02:00 GMT</pubDate><guid>http://www.blogjava.net/willpower88/archive/2007/10/19/154127.html</guid><wfw:comment>http://www.blogjava.net/willpower88/comments/154127.html</wfw:comment><comments>http://www.blogjava.net/willpower88/archive/2007/10/19/154127.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/willpower88/comments/commentRss/154127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/willpower88/services/trackbacks/154127.html</trackback:ping><description><![CDATA[<p>中国移动、中国联通推行的GPRS网络、CDMA网络已覆盖大量的区域，通过无线网络实现数据传输成为可能。无线Modem采用GPRS、CDMA
模块通过中国移动、中国联通的GPRS、CDMA网络进行数据传输，并通TCP/IP协议进行数据封包，可灵活地实现多种设备接入，工程安装简单，在工业
现场数据传输的应用中，能很好的解决偏远无网络无电话线路地区的数据传输的难题。同传统的数传电台想比较，更具有简便性、灵活性、易操作性，同时还降低了
成本，无线Modem传输方案是现代化工业现场数据传输最好的选择方案。<br />
&nbsp;&nbsp;&nbsp;&nbsp;
目前中国移动、中国联通提供的GPRS网络、CDMA网络的数据传输带宽在40Kbps左右，且受带宽的限制，数据采集方案最好采用于主动告警、数据轮巡
采集、告警主动回叫等对传输带宽占用较少的采集方式。同时考虑对前置机实时采集方案的支持，无线Modem传输方案只能作为目前传输方案的补充。<br />
&nbsp;&nbsp;&nbsp; 随着无线通讯技术的不断发展，无线传输数据带宽将不断提高，采用3G无线网络，数据传输带宽将达到2M，无线传输方案将逐渐成为监控传输组网的主要应用方案。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 目前，由于GPRS和CDMA固有的特性，在各个领域中GPRS和CDMA的应用也越来越广泛，但是关于传输中使用TCP/IP协议还是UDP协议，却争论很多。 </p>
<p>这里先简单的说一下TCP与UDP的区别：<br />
&nbsp; 1。基于连接与无连接 <br />
&nbsp; 2。对系统资源的要求（TCP较多，UDP少） <br />
&nbsp; 3。UDP程序结构较简单 <br />
&nbsp; 4。流模式与数据报模式 <br />
&nbsp; 5。TCP保证数据正确性，UDP可能丢包，TCP保证数据顺序，UDP不保证<br />
<br />
另外结合GPRS网络的情况具体的谈一下他们的区别：<br />
&nbsp;1。TCP传输存在一定的延时，大概是1600MS（移动提供），UDP响应速度稍微快一些。<br />
&nbsp;2。TCP包头结构<br />
源端口16位<br />
目标端口 16位<br />
序列号 32位<br />
回应序号 32位<br />
TCP头长度 4位<br />
reserved 6位<br />
控制代码6位<br />
窗口大小16位<br />
偏移量16位<br />
校验和16位<br />
选项 32位(可选) <br />
这样我们得出了TCP包头的最小大小.就是20字节. </p>
<p>　　UDP包头结构<br />
源端口16位<br />
目的端口16位<br />
长度 16位<br />
校验和 16位<br />
UDP的包小很多.确实如此.因为UDP是非可靠连接.设计初衷就是尽可能快的将数据包发送出去.所以UDP协</p>
<p>议显得非常精简. </p>
<p>&nbsp;3。GPRS网络端口资源，UDP十分紧缺，变化很快；而TCP采用可靠链路传输，不存在端口变化的问题工业场合的应用一般都有以下特点，</p>
<p>&nbsp;1。要求时时传输，但也有一些场合是定时传输，总的来说在整个传输过程中要求服务器中心端和GPRS终端设备能相互的、时时的传输数据。<br />
TCP
本身就是可靠链路传输，提供一个时时的双向的传输通道，能很好的满足工业现场传输的要求。但是GPRS网络对TCP链路也存在一个限制：此条链路在长时间
（大概20分钟左右，视具体情况而定）没有数据流量，会自动降低此链路的优先级直至强制断开此链路。所以在实际使用中也会采用心跳包（一般是一个字节的数
据）来维持此链路。<br />
UDP由于自身特点，以及GPRS网络UDP端口资源的有限性，在一段时间没有数据流量后，端口容易改变，产生的影响就是从服
务器中心端向GPRS终端发送数据，GPRS终端接收不到。具体的原因就是移动网关从中作了中转，需要隔一定时间给主机发UDP包来维持这个IP和端口
号,这样主机就能主动给GPRS发UDP包了并且我在测试中发现,这个间隔时间很短,我在1多分钟发一次UDP包才能够维持,但是再长可能移动网关那边就
要丢失这个端口了,此时如果主机想主动发数据给GPRS,那肯定是不行的了,只有GPRS终端设备再发一个UDP包过去,移动重新给你分配一个中转IP和
端口,才能够进行双向通讯。</p>
<p>&nbsp;2。要求数据的丢包率较小。有些工业场合，例如电力、水务抄表，环保监测等等，不容许传输过程中的数据丢失或者最大限度的要求数据的可靠性。从这
一点来看，很显然在无线数据传输过程中，TCP比UDP更能保证数据的完整性、可靠性，存在更小的丢包率。在实际测试中也是如此。以厦门桑荣科技有限公司
提供的GPRS终端设备为例：TCP的在千分之9，UDP的在千分之17左右。</p>
<p>3。要求降低费用。目前有很大部分GPRS设备的应用都是取代前期无线数传电台，除了使用范围外，其考虑的主要问题就是费用。能降低费用当然都是大
家最愿意接受的。和费用直接相关的就是流量了，流量低，费用就低了。虽然TCP本身的包头要比UDP多，但是UDP在实际应用中往往需要维护双向通道，就
必须要通过大量的心跳包数据来维护端口资源。总的比较起来，UDP的实际流量要比TCP还要大。很多使用者在初期的时候并不了解UDP需要大量心跳包来维
持端口资源这个问题，往往都认为UDP要比TCP更节省流量，实际上这里存在着一个误区。</p>
<p>4。在某些特定的应用场合，例如一些银行的时时交互系统，对响应速度要求很高，此时数据传输频率较快，不需要大量心跳包维持UDP端口资源，采用UDP就比较有利了。</p>
5。在目前的1：N的传输模式中，既有多个GPRS终端设备往一个服务器中心传输数据，此时采用UDP会比TCP要好的多，因为UDP耗用更少的系
统资源。但是在实际应用中却发现，很多用户还是采用TCP的传输方式，建立二级中心1：A（1：N），即每一个分中心对应N/A台设备，独立处理数据，再
统一将数据传送到主中心。这样既能保证了传输过程中采用了TCP的传输协议，又能很好处理了中心服务器的多链路的系统耗用的问题。<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 总的来说，我认为TCP/IP协议更能满足目前各行业对远程数据传输的要求，它提供更稳定更便利的传输通道，很好的满足了远程数据传输的要求。
<img src ="http://www.blogjava.net/willpower88/aggbug/154127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/willpower88/" target="_blank">一凡</a> 2007-10-19 11:02 <a href="http://www.blogjava.net/willpower88/archive/2007/10/19/154127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>