TCP 和 UDP
1、TCP 和 UDP 的区别?
TCP: TCP 时面向连接的协议,在传输数据之前,需要双方建立可靠的连接,即通过三次握手建立 TCP 连接
UDP: UDP 是非连接的协议,即发送端和接收端之间不建立连接,他只负责将数据包发送出去,不保证数据包的到达,因此数据包可能存在丢失、乱序、重复,也没有错误或者纠正机制
2、两者的使用场景
TCP 适用于对可靠性要求比较高的应用,比如网页浏览、远程调用、文件传输等
UDP 适用于对实时性要求较高的应用,比如视频、直播等场景,偶尔丢失数据相对于连接建立和恢复带来的延迟更加可以接收
3、两者的实时性谁更好一些?
UDP 的实时性更好一些,UDP 主要从以下几个方面来保证了较好实时性:
- 无连接: UDP 传输数据不需要建立连接,因此速度是比较快的
- 低延迟: UDP 发送数据时,不需要等待确认、恢复重传,因此大大降低了传输过程中的延迟
- 简单的协议头: UDP 的协议头只有 8 字节,TCP 的协议头至少 20 字节,因此 UDP 传输时的开销也比较小
4、如果 TCP 建立连接之后,TCP 和 UDP 的实时性谁会更好一些呢?
上边已经说了 UDP 保证实时性的几个方面,可以看到并不只是因为建立连接才会导致 TCP 的实时性较差
还有其他因素,因为 TCP 是保证 数据可靠、有序 ,因此 TCP 发送数据之后需要等待接收方确认,并且有重传机制,来保证数据到达接收方,这些都会导致在传输过程中的延时较高
TCP 还有 流量控制 和 拥塞控制 ,因此会根据网络拥堵情况调整数据包发送速率,在保证了数据包可靠性的同时,也带来了一定的传输延时
因此,TCP 建立连接之后,UDP 的实时性还是比 TCP 好得多,因为实时性好并不只是因为 UDP 是无连接的