TCP 和 UDP 的区别

OSI模型将网络分为七层,由下到上依次是物理层( Physical )、数据链路层(Data Link)、网络层(Network)、传输层(Transport)、会话层(Session)、表示层(Presentation)和应用层(Application)。
TCP协议和UDP协议都位于网络七层模型中的传输层。

1. TCP(Transmission Control Protocol 传输控制协议)
TCP 是一种面向连接的、可靠的、基于字节流的传输协议。
面向连接是指两个使用TCP的应用(通常是一个客户端和一个服务器)在相互交换数据包之前必须先建立一个TCP连接。建立连接是通过“三次握手”来实现的,这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。
TCP 通过将数据分割为合适的数据块、启动定时器、报文丢包重发、校验和、数据包重新排序、流量控制等机制实现可靠性传输。
在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用TCP。

2. UDP(User Datagram Protocol 用户数据报协议)
UDP 是一种无连接的、不可靠的、基于数据报模式的传输协议。
UDP 提供无连接通信,传输数据之前,双方不会确认建立连接。这一过程和发短信很相似。
UDP 不会对数据进行分割、排序和重发,也就是说,当报文发送之后,是无法得知其是否安全完整地到达了。它不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。
UDP 协议没有可靠性保证、顺序保证、流量控制等,可靠性较差。但正因为UDP协议的控制选项较少,在数据传输过程中延迟较小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。
由于 UDP 不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传输时使用 UDP 较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如:QQ、网络视频会议系统使用的就是UDP协议。

3. TCP 和 UDP 的区别
  • TCP是面向连接的,UDP是无连接的
  • TCP保证数据传输的可靠性,UDP并不保证,可能出现数据包丢失的问题
  • TCP对系统资源消耗较大,数据传输效率低、延迟大、速度慢;UDP资源消耗较小,数据传输效率高、延迟小、速度快
  • TCP是基于字节流模式传输的,UDP是基于数据报模式传输的
  • 每一个TCP连接只有双方通信,是一对一的;而UDP支持一对一、一对多、多对一、多对多的交互通信

你可能感兴趣的:(tcp,UDP)