A protocol is simply an agreed-upon set of standards that enables two or more software components to communicate. There are low-level protocols such as TCP and UDP, and high-level protocols such as HTTP, FTP, and SMTP. Protocol layering is a common technique for simplifying network design and promoting extensibility. Protocol layering allows common functions to be defined, and the responsibility for implementing those functions mapped to a specific layer of the model or architecture. A layered approach is considered better practice than implementing a large "brick" of code that is difficult to understand. Layered architectures promote reuse, exchangeability, incremental development, and offer the advantage of localizing changes to specific layers. As the network evolves, layers can be replaced or exchanged without re-engineering the entire communication architecture. Chapter 7, "Transports and Protocols," explores the protocol and service maze that exists in current P2P applications. As Project JXTA has pointed out, there is a need for standards to promote interoperability in common P2P functions. However, it should be noted that JXTA does not define a specific transport binding. For instance, JXTA does not dictate or assume TCP/IP as the underlying network transport because the goal of the JXTA project is to promote interoperability with a minimal amount of constraints and assumptions about hardware, software, and the network environment. The JXTA protocols are composed of six protocols that work together to enable the discovery, organization, monitoring, and communication between peers (see Table 5.1).
All of these protocols are implemented using a common messaging layer. It is the messaging layer that binds the JXTA protocols to various network transports. Each of the JXTA protocols is independent of the others, and a peer is not required to implement all protocols. A peer just needs to implement the protocols that it needs to use. Per the specification:
However, it should be noted that many important services supporting P2P have yet to be defined. For instance, as of this writing, presence and identity services for JXTA do not exist. The degree with which implementations of the protocol will be able to work without a "digital heartbeat" has yet to be determined. |