TCP和UDP的区别
1.TCP的特点
- TCP是面向连接的可靠性传输协议。
- 面向连接:需要进行三次握手进行连接,四次挥手断开连接
- 可靠性:TCP通过快速重传机制,同时有自身的流量控制和拥塞控制设计,因此数据的传输可靠性较高。
- TCP是面向字节流的传输协议。
- TCP是面向面向字节流,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。
- TCP传输效率低,传输速度慢 。
- 传输效率低,速度慢:因为TCP通过各种流量控制,拥塞控制机制去保证了数据传输的可靠性,这些都是需要消耗时间和资源的,因此传输效率低,传输速度慢。
- TCP是全双工性的传输协议。
- 全双工:即一对一的连接
2.UDP的特点
-
UDP是无连接的,不可靠的传输协议
- 无连接:即不需要向TCP一样提前建立连接,只要目的地址,端口号,源地址,端口号确定了,就可以直接发送信息报文,
- 不可靠:对方不一定能收到数据或者收到完整的数据。它仅仅提供了校验和机制来保障报文是否完整,若校验失败,则直接将报文丢弃,不做任何处理。
-
UDP是面向报文的传输协议。
- 面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
-
UDP传输效率高,可一对多传输
- UDP没有TCP那么繁琐的保证数据可靠的机制,因此传输效率比TCP高。可以一次对多个目的地址进行发送报文。
3.TCP和UDP的应用场景
3.1 TCP的应用场景
TCP的应用场景对效率要求不高,对准确性要求高或者要求有连接的场景。
例如:
- SMTP:电子邮件
- TELNET: 远程终端接入
- HTTP: 万维网
- FTP: 文件传输
3.2 UDP的应用场景
- DNS:域名转换
- TFTP:文件传输
- SNMP:网络管理
- NFS:远程文件服务器