浅谈TCP和UDP的区别

作为运输层中两个主要的协议,TCP和UDP都能向应用层提供通信服务,然而它们提供的服务差别还是很大的。

1、
TCP协议是面向连接的。也就是说,应用程序在使用 TCP协议之前,必须先建立起一个 TCP连接,之后才能进行通信活动。因此,使用 TCP协议通讯就好像是打电话,通话前先要拨号,然后等对端拿起电话,建立好连接后才能开始通话,通话结束后将电话机扣上,此时相当于断开连接。

而 UDP协议是无连接的。不需要建立和断开连接,发送端可以在任何时候自由地发送数据,这就好像用手机发信息,它不需要号码是正确的,全凭发送端意愿进行发送,结果是什么并不能保证。

2、
UDP协议支持一对一、一对多、多对一和多对多的交互通信。 而 TCP协议仅支持一对一的交互通信。

3、
UDP协议是面向报文的。发送方的 UDP对应用程序交付下来的报文,再添加了首部信息之后就向下交付给 IP层。这就是说,应用层交给 UDP多长的报文,UDP会照原样发送,即一次发送一个报文。可以看出,应用程序必须控制报文的长度。

而 TCP协议是面向字节流的,就是说虽然应用程序交付给 TCP协议的是大小若干数据块,但是 TCP协议把这些数据看成仅仅是一连串无结构的字节流,然后 TCP协议根据当前情况选择性地将字节流分组并发送。

4、
UDP协议只是在 IP服务之上增加了很少的一点功能,因此 UDP和 IP协议一样,都是尽最大努力交付,即不保证可靠交付。

而 TCP则是可靠交付的服务,TCP协议能保证传送的数据无差错、不丢失、不重复、有序到达。

猜你喜欢

转载自blog.csdn.net/stfphp/article/details/53193205