温馨提示
该文章距离上次更新已经过去了 1246 天,文章内容可能已经过时。
TCP和UDP的区别
1、TCP保证了数据的正确性,UDP可能会丢包
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。 一个TCP连接必须要经过三次挥手才能建立起来,而断开连接需要经过四次挥手。可以看出TCP使用面向连接的通信方式, 大大提高了数据通信的可靠性,使发送数据端和接收端在数据正式传输前就有了交互, 为数据正式传输打下了可靠的基础。
UDP(User Data Protocol,用户数据报协议)是一个非连接的协议,它没有TCP的三次握手和四次挥手,所以它在传输数据的时候速度非常快,因为没有这些机制,UDP相对于TCP也会安全一点,也因为没有这些机制,UDP也没有TCP那么可靠,所以在网络质量差的时候可能会出现丢包的情况。
2、TCP保证了数据的顺序性,UDP不保证
3、TCP是基于连接的协议、UDP是基于非连接的协议
TCP是面向连接的协议,UDP是无连接的,及发送数据前不需要先建立连接
4、TCP的每条连接只支持点对点连接,而UDP支持一对一,一对多,多对一和多对多的交互通信
UDP由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等, 因此一台服务机可同时向多个客户机传输相同的消息。
5、TCP对系统资源的占用大,UDP占用小
由于TCP发起每一条连接都需要进行三次握手和四次挥手,这会消耗大量的时间,而且每台设备需要对这些连接进行维护,这会占用系统的CPU、内存等硬件资源。
6、TCP为流模式,UDP为数据报模式
TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
TCP和UDP的使用场景
TCP会将数据准确无误的传送给对方,所以就应用于以下需要对数据准确性高的应用,例如:POP、SMTP的邮件传输或者FTP的文件传输等。
UDP适用于对于网络传输速度要求较高的场景,例如:语音通话、视频通话等