Knowing the components of Net8 is only part of the story. You also need to understand how Net8 fits into the architecture of your networking environment. Communication in a networked environment always flows through what is referred to as a stack. A communications stack is a collection of software and hardware layers, each of which plays a specific role in the transmission of information from one application to another. Figure 1.7 shows the typical client and server communications stacks for an Oracle environment.
In the environment shown in Figure 1.7, communications from a client application to an Oracle server must flow down through all the layers on the client side, go across the physical network link, and then flow up through all the layers on the server side. The three layers shaded light gray in Figure 1.7 represent the Net8 portion of the stack.
The first Net8 layer in the stack, the Network Interface (NI) layer, provides a generic interface to Net8 functionality. The bottom Net8 layer is the Transparent Network Substrate (TNS). The TNS layer plays a very important role in Net8 communications. It implements a set of generic functions that can be translated to any standard network protocol such as TCP/IP or SPX. You could think of TNS as a generic protocol. Oracle supplies network adapters that then translate TNS functions into protocol-specific calls for the underlying network protocol being used.
Oracle8i supports Java in the database. It also supports Enterprise JavaBeans (EJB) and the Common Object Request Broker Architecture (CORBA). CORBA applications connect to CORBA objects via the Internet Inter-ORB Protocol (IIOP). To support these connections, Net8 supports a new presentation layer known as the General Inter-ORB Protocol (GIOP). The IIOP is then an implementation of GIOP that runs over TCP/IP. The resulting communication stacks are much simpler than the stacks used for typical Oracle applications, and are illustrated in Figure 1.8.
A final variation on the theme of communication stacks revolves around Java Database Connectivity ( JDBC). Java applications can access an Oracle database via the industry-standard JDBC interface, and Oracle provides two sets of drivers to support this: the JDBC OCI (Thick) drivers and the JDBC Thin drivers. The difference lies in whether or not the communications are routed through the Oracle Call Interface (OCI). Figure 1.9 illustrates the two possible JDBC client stacks.
The left side of the figure shows the stack used for the JDBC OCI drivers. You can see that communications are quickly routed through the OCI, and that the remainder of the stack looks just like the typical stack shown earlier in Figure 1.7. The OCI version of the JDBC drivers requires that the Oracle Net8 software be installed on the client machine.
When the thin JDBC drivers are used, however, things are quite different. The thin drivers were designed to function without any Oracle-specific software installed. They are implemented entirely in Java and support only TCP/IP. To make this work, Oracle had to implement the requisite Net8 functionality in Java, the result of which is called Java Net. The right side of Figure 1.9 shows the Java Net version of the JDBC stack.