TCP与UDP的区别

这里先简单的说一下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协议更能满足目
在Socket编程中,TCPUDP是两种不同的传输协议。TCPTransmission Control Protocol)是一种面向连接的协议,而UDP(User Datagram Protocol)是一种无连接的协议。它们在以下几个方面有所不同: 1. 连接性:TCP是面向连接的,它在通信之前需要先建立连接,然后在可靠的双向通信中保持这个连接。UDP是无连接的,每个数据包都是独立的,发送者和接收者之间没有建立连接的过程。 2. 可靠性:TCP提供可靠的数据传输,它使用确认和重传机制来确保数据的准确性和完整性。UDP不保证数据的可靠性,因此在传输过程中可能会丢失数据包。 3. 速度和效率:由于TCP提供的可靠性和连接管理的机制,它的速度相对较慢,而UDP不需要连接建立和维护的开销,因此速度更快。 4. 应用场景:TCP适用于需要可靠传输和顺序传输的应用,例如文件传输,电子邮件等。UDP适用于实时应用,例如音频和视频流,游戏等,对于这些应用来说,速度和实时性更为重要,而可靠性可以通过应用层来处理。 总结起来,TCP提供了可靠的、面向连接的传输,适用于重要数据的传输,而UDP提供了快速的、无连接的传输,适用于实时性要求较高的应用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Scoket编程基础 -- TCPUDP 的 简介及其区别](https://blog.csdn.net/Czhenya/article/details/78299152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [TCPUDP 在socket编程中的区别(转载)](https://blog.csdn.net/LIN943168247/article/details/120264124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值