如何理解UDP的“无连接”特性?
面试中经常会被问到UDP和TCP的区别,其中一个区别就是:UDP是无连接的,而TCP是有连接的。
只知道这一句话是不够的,更应该理解它真正的意思。
首先看UDP发送消息的过程:
套接字本身比较抽象,可以理解为操作系统为应用程序提供一组应用程序接口(API),应用程序可以通过套接字接口,来使用网络套接字,以进行数据交换。
之所以说UDP是无连接的,因为使用UDP协议的发送者和接受者之间不必存在任何长期的关系。它们没有建立连接过程,整个消息传输过程简单来说就是“发送即结束”。对于发送者而言,一个UDP套接字可以向多个客户端发送消息;对于接受者而言,一个UDP套接字也可以接受多个服务器发来的消息。通信者双方并没有保持一个固定的连接,所以说“UDP是无连接的”。
最后,为了防止我描述不清,用《UNIX网络编程》中的话解释如下:
举例来说,一个UDP客户可以创建一个套接字并发送一个数据报给一个给定的服务器,让后立即用同一个套接字发送另一个数据报给另一个服务器。同样的一个UDP服务器可以用同一个UDP套接字从若干个不同的客户接收数据报,每个客户一个数据包。