14.1.2 协议

14.1.2 协议

当你同朋友交谈时,你们遵循一些暗含的规则(或协议)。例如,你们俩不能同时开始说话,或不能连续不间断地说话。如果你们这样做的话,谁也不能理解对方所说的意图。当你说话时,你的朋友倾听,反之亦然,你们以双方都能理解的语言和速度进行对话。

当计算机之间进行通信的时候,也需要遵循一定的规则。数据以包的形式从一台机器发送到另一台。这些规则管理数据打包、数据传输速度、和重新创建数据将其恢复成原始形式。这些规则被称为网络协议。网络协议是通过网络进行通信的系统所遵循的一系列规则和惯例。联网软件通常实现有高低层次之分的多层协议。网络协议的例子有:TCP/IP、UDP、Apple Talk和NetBEUI。

Java提供了一个丰富的、支持网络的类库,这些类使得应用程序能方便地访问网络资源。Java提供了两种通信工具。它们是:用户数据报协议(UDP)和使用传输控制协议/因特网协议(TCP/IP)的Sockets(套接字)。

数据报是一个字节数组从一个程序(发送程序)传送到另一个程序(接受程序)。由于数据报遵守UDP,不保证发出的数据包必须到达目的地。数据报并不可信赖,因此,仅当传送少量数据时才使用,而且发送者和接收者之间的距离间隔不大,假如是网络交通高峰,或接受程序正处理来自其他程序的多个请求,就有机会出现数据报包的丢失。

Sockets用TCP进行交流。Sockets模型同其他模型相比,优越性在于其不受客户请求来自何处的影响。只要客户机遵循TCP/IP协议,服务器就会对它的请求提供服务。这意味着客户机可以是任何类型的计算机。客户机不再局限为UNIX、Windows、DOS或 Macintosh平台,因此,网上所有遵循TCP/IP协议的计算机可以通过Sockets互相通信。