当软件开发者在因特网上开发一个应用时,首先要决定的是,选择UDP还是TCP。
1.TCP提供的服务
TCP提供的服务包括面向连接服务和可靠数据传输服务。当某个应用程序调用TCP作为其运输协议时,该应用程序就能获得TCP提供的这两种服务。
-
面向连接的服务: 再应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息。这个所谓的握手过程提醒客户和服务器,让它们为大量分组的到来做准备。在握手阶段之后,一个TCP连接就在两个进程的套接字之间建立了。这条连接是全双工的,即连接双方的进程可以在此连接上同时收发报文。当应用程序结束报文发送时,必须拆除该连接。 -
可靠的数据传输服务: 通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。当应用程序的一端将字节传进套接字时,它能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节的丢失和冗余。 -
TCP协议还具有拥塞控制机制,这种服务不一定通信进程带来直接好处,但能为因特网带来整体好处。当接收方和发送方之间的网络出现拥塞时,TCP拥塞控制会抑制发送进程。
2.UDP提供的服务
UDP是一种不提供不必要服务的轻量级运输协议,它仅能提供最小服务。UDP是无连接的,因此在两个进程通信之前没有握手阶段。UDP协议提供一种不可靠的数据传输服务,也就是说,当进程将一个报文发送进UDP套接字时,UDP协议并不保证该报文将到达接收进程。不仅如此,到达接收进程的报文也可能是乱序的。 UDP没有包括拥塞控制机制,所以UDP的发送端可以用它选定的任何速率向其下层注入数据。(然而,值得注意的是实际端到端的吞吐量可能小于该速率,这可能是因为中间的链路宽带受限或是因为拥塞而造成的)
|