首先,在这里简单总结一下二者的区别:
1. TCP(传输控制协议)是一种面向连接的协议,提供客户与服务器的连接。而UDP(数据包协议),是一种无连接的协议,因为UDP客户端与服务器不存在长期的关系,例如一个UDP客户端创建一个套接字发送数据报给一个服务器,然后立刻用同一个套接字发送另一个数据报给另一个服务器。同样,一个UDP服务器也可以用一个UDP套接字同多个不同的客户端接收多个数据报。
UDP不是可靠的,不能保证最终到达他们的目的地,不能保证各个数据报跨网络传输后最后的顺序不变,也不保证每个数据报最后只到达一次。
2. TCP提供可靠性保障。当使用TCP向另一端发送数据时,他要求对方返回一个确认。如果没有收到确认,则自动设置等待更长时间。在数次重传失败后,TCP才放弃。
3. TCP通过给所发送字节流的每一个字节关联一个序号来实现排序。UDP提供不可靠的数据传送,不提供确认,序号,超时重传等机制。
4. TCP提供流量控制,告诉对端他能接收多少字节的数据,这称为通告窗口,这个窗口在任意时刻都将指出接收缓存区的大小,从而保证接收的数据不会溢出缓存区。
5. TCP是全双工的,UDP也可以是全双工的。同时,两者都既可以是IPV4也可以是IPV6。
UDP有以下优点:1. 对系统资源要求相对较少 2. 实时性好 3. 网络开销少 当某个程序需要尽可能多发出信息(其中任意给定数据的重要性要求相对较低)则应该用UDP