TCP与UDP对比、区别、优缺点及应用场景
TCP与UDP
1.相同点
- tcp与udp都是传输层协议,直接与应用层交互。
2.不同点
-
TCP面向连接,在发送数据之前,会先发送报文确定双方能通信并且双方创建一些资源来保障和控制接下来的通信。
想了解具体连接过程点击这里!UDP面向无连接,不事先与对方沟通。不管对方存在与否,都能直接发送到互联网中。
-
TCP是一对一通信。
之所以是一对一通信,也正是因为他是面向连接的。就像打电话,如果已经和一个人在通信,那就不能在接听另一个电话。UDP可以一对一、一对多、多对一通信。
因为是无连接协议,每发送一次数据就是一次单独的通信。 -
TCP是以数据流的方式传输数据
UDP是以数据报文的方式传输数据千万不要把数据流理解为在网络中以一点一点的数据发送,这里的数据流是指可以按不同的大小收发数据,在网络中一个包的大小还是和UDP差不多的
数据流的原理:通信双方都有发送缓冲区和接收缓冲区。举个例子,A分成两次向B发送数据,这两次数据不是直接发送到网络,而是先放到发送缓冲区,TCP在处理的时候,是从发送缓冲区取数据,再发送。这样发送缓冲区就好像一个流。
数据报:UDP协议没有真正意义上的发送缓冲区,所以,在每次发送数据时,就直接发送到网络中,写的啥都在这一个数据报中(不考虑网络层拆分)。
-
TCP保证可靠性传输
保证机制:面向连接,确认应答机制,超时重传机制,滑动窗口,拥塞控制,差错校验机制。
想详细了解可靠性点这里
UDP不能保证可靠性
3.优缺点
优缺点都是相较于对方
- TCP:
优点:保证数据有序可靠的交付给应用层
缺点:开销大,速度慢, - UDP:
优点:传输速率快,能广播和组播
缺点:不可靠,不能保证数据到达接收方,也不能保证数据的正确性
4.应用场景
TCP:对数据的正确性要求高、不用频繁的交互数据的应用。
UDP:对实时性要求高的应用。如视频通话,游戏。当然,一般选用UDP做这些东西时,都会在应用层保证数据的可靠性,不易开发。