TCP和UDP的区别

来源:互联网 发布:局域网故障检测软件 编辑:程序博客网 时间:2024/04/26 18:23

TCP和UDP都是传输层的协议,他们的区别主要如下:

1、TCP,全名“传输控制协议”,是面向连接的,也就是说在发送方和接收方在发送数据之前,必须通过三次握手建立连接,相当于现实生活中的打电话功能,必须先拨号,接通后才能说话,UDP,全名“用户数据报协议”,是无连接的,其中一方向向另一方发送数据时不需要建立连接,直接发送,相当于现实中的发短信

2、TCP是可靠的传输协议:TCP在IP协议的基础之上添加了序号机制,确认机制,超时重传机制,数据校验,从而保证传输的可靠性,而UDP是不可靠的协议,UDP协议仅仅就是在IP协议的基础上添加了端口和差错检查的功能,由于IP协议时尽最大努力传输,从而导致了UDP的不可靠性

3、TCP协议是面向字节流的,TCP将应用层传递下来的数据仅仅当做无结构的数据流,并不知道所传数据流的含义,它可能将应用程序的两个数据块拼接到一起组成一个段发送。UDP是面向报文的,应用程序交给UDP多长的报文,UDP就加上首部后发送,如果报文过大,就会导致IP层分片,从而降低了IP层的效率。

4、TCP是一对一通信的,而UDP支持一对一和一对多以及多对多通信

首先还是把协议特性说一下,明白了特性自然知道应用场合了,嘿嘿!两种协议都是传输层协议,为应用层提供信息载体。TCP协议是基于连接的可靠协议,有流量控制和差错控制,也正因为有可靠性的保证和控制手段,所以传输效率比UDP低;UDP协议是基于无连接的不可靠协议,没有控制手段,仅仅是将数据发送给对方,因此效率比TCP要高。基于上述特性,不难得到结论,TCP协议适用于对效率要求相对低,但对准确性要求相对高的场景下,或者是有一种连接概念的场景下;而UDP协议适用于对效率要求相对高,对准确性要求相对低的场景。好了,现在回到你的问题,举几个应用的例子。TCP一般用于文件传输(FTP HTTP 对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用),远程登录(TELNET SSH 对数据准确性有一定要求,有连接的概念)等等;UDP一般用于即时通信(QQ聊天 对数据准确性和丢包要求比较低,但速度必须快),在线视频(RTSP 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的),网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等。作为知识的扩展,可以再说一些其他应用。比如,TCP可以用于网络数据库,分布式高精度计算系统的数据传输;UDP可以用于服务系统内部之间的数据传输,因为数据可能比较多,内部系统局域网内的丢包错包率又很低,即便丢包,顶多是操作无效,这种情况下,UDP经常被使用。