|< Day Day Up >|| |
A deeper understanding of LDAP requires some concept of network protocols. This section provides only a brief overview. Readers seeking greater detail can consult either Internetworking with TCP/IP by D.E. Comer  or TCP/IP Illustrated by R.W. Stevens. 
Protocols are formal rules dictating the format of messages so that they can be understood by the sending and receiving partners (the computers). Note that protocols are only rules. Protocols are not software or a piece of software; they simply specify how the software should behave. Thus it is the job of the programmer to write the software so that it can implement the protocol.
Why do we need protocols? In a middle-sized enterprise, you normally have several hundred computers running different operating systems on different platforms. (Consider the number of UNIX dialects or the different versions of Microsoft systems.) These differences prevent us from simply plugging these computers on the same line and letting them talk to each other. What is needed is a common way of communicating at a higher level. This higher level of communication is provided by the internetworking protocol.
At the time of this writing, the most important internetworking protocol is the Transmission Control Protocol/Internet Protocol (TCP/IP). The TCP/IP protocol is an open standard, i.e., the specifications of the TCP/IP standard are available to everyone. Consequently, every vendor can develop its products to obey these internetworking standards and thus be able to communicate with any machine operating the same protocol. This is very important because it allows different computers from different suppliers using different operating systems to be connected so that they can "speak" with each other. It also allows software developers to use any number of application programming interfaces (APIs) and still be able to communicate with each other without caring about the underlying hardware or operating system.
The story of networking began in the late 1960s. At that time, networking and network design were at the cutting edge of modern technology. Within the next few years, there was a substantial increase in the number of projects, with a consequential increase in the number of network protocols, nearly all of them different from each other. These early protocols spanned the range from very complex and highly specialized protocols to simple protocols designed for high-speed networks with no error checking. This was a very innovative and productive time, but soon technicians and research people recognized that the diversity of protocols was a big problem. With the various network systems using different protocols, there was no way to exchange information between the systems. The enormity of the problem becomes clear when you consider today's computing environment, where electronic mail, file transfers, and Web services are routine activities made possible by the development of robust interoperating protocols. For example, people exchange e-mail through intermediate systems without worrying about compatibility issues between different operating systems and different types of e-mail software.
Universities and research institutes were not the only organizations interested in connecting different computer systems. Government agencies as well as business enterprises were also hobbled by the lack of interconnectivity. Efforts to solve this problem led DARPA (Defense Advanced Research Projects Agency) to fund an important research project in the mid 1970s that resulted in the development of the ARPANet. Once it was completed in 1983, the ARPANet took a new turn in development. DCA (Defense Communication Agency), the owner of the project, split the project in two. One part, called MILNet, was destined to focus on the military application of the project. DARPA, on the other hand, made the ARPANet available for further development by universities. This led to the development of the Internet Protocol, known today as TCP/IP.
The Transmission Control Protocol/Internet Protocol (TCP/IP) is organized in several layers. Each layer has a well-defined functionality (as shown in Exhibit 3) and clearly defined interfaces to the layers situated above and below. This makes it possible to develop each layer separately or to exchange for particular applications one of the layers without affecting the other ones. Thus one can develop a layer without knowledge of the inner working of the other layers. This is particularly helpful if one wants to develop a high-level protocol because there is no need to touch the lower levels. The programmer simply uses the interfaces offered by the lower levels. Programmers commonly use the socket interface because it offers them the convenience of accessing network services with a comfortable library of system calls.
Network Access Layer
TCP/IP is organized in a stack of four layers, as seen in Exhibit 3. Data moving on the Internet travels in packets called "datagrams." On the sending end, each layer takes the datagram from the layer above and adds information to this datagram in the form of a header. It then hands the new datagram over to the next lower level. The act of adding a header to the datagram received from the higher level is called "data encapsulation." On the receiving end, the sequence is reversed. Each layer takes the datagram from the layer below, extracts the header to understand what to do with the datagram, and then hands it over to the layer above. In this way, information arrives from one layer at the sending end to the corresponding layer at the receiving end.
The four layers in the TCP/IP stack are as follows, starting at the bottom layer:
Network interface layer: This lowest layer is responsible for accessing the underlying hardware. The network interface layer is constantly revised as new hardware is developed. TCP/IP does not prescribe any specific interface for the actual hardware. You can find Ethernet, token-ring, X.25, ATM, or other systems. This layer also maps IP addresses into physical addresses and transforms the data into frames before transmission.
Internet layer: This next higher level is the heart of the TCP/IP protocol. The IP (Internet Protocol), described in RFC 791 (RFCs are discussed later in this chapter), is the most important protocol of this layer. IP facilitates fast delivery of packets by ignoring the details of datagram delivery. It does not care whether the datagrams arrive in the correct order, whether they arrive more than once, or whether they arrive at all. The IP level can afford to be unreliable because it depends on other levels to align the packets in the correct order.
Transport layer: This is the layer just above the internet layer, which facilitates the datagram delivery from one computer to another. The transport layer delivers the data to the correct application, providing end-to-end communication between applications. There are two substantially different protocols that can do this:
User Datagram Protocol (UDP), an unreliable, connectionless protocol
Transmission Control Protocol (TCP), which provides a reliable stream of delivery. TCP guarantees that the packets are delivered in the correct order and ensures the retransmission of any packets that do not arrive from the underlying IP layer. This guarantee comes at the cost of a certain overhead. For short messages sent across the network, this overhead is too high, and UDP is used instead. UDP avoids these time-consuming controls. If necessary, the application layer can provide these controls.
Application layer: The application layer can be one or several of a series of well-known protocols, including:
FTP: the File Transfer Protocol that facilitates file transfer from one computer to another
SMTP: the Simple Mail Transfer Protocol that makes e-mail possible
Telnet: a remote terminal protocol
HTTP: the Hypertext Transfer Protocol used by Web servers and browsers
LDAP: the Lightweight Directory Access Protocol, which is the subject of this book
There are many, many other application-layer protocols. For a complete list, refer to a book about networking, such as the one by Comer.  By now it should be clear that TCP/IP is a combination of the two most important protocols — TCP and IP.
Parallel to these efforts to develop TCP/IP, two other institutions — the ISO (International Standardization Organization) and the CCITT (Consultative Committee in International Telephony and Telegraphy) — began work on internetworking standards. The work of these institutions resulted in the Open Systems Interconnection (OSI) model.
The OSI protocol stack has seven layers, as seen in Exhibit 4. It is similar to the architecture of TCP/IP. To facilitate communication, every protocol layer offers a set of functions to the layer above and uses the functions provided by the layer below. The OSI protocol stack is as follows, starting at the bottom layer:
Physical layer: As in the TCP/IP protocol stack, the lowest level is the level accessing the hardware.
Data link layer: The next higher level, this layer is responsible for putting the data into datagrams and error checking.
Network layer: Sometimes called "communication layer," this layer is responsible for the packet delivery. It isolates the upper levels from network details, such as routing, and provides just at this level reliable transfer of information.
Transport layer: This next layer has functions corresponding to the TCP protocol providing end-to-end reliability. This is a second check for reliability at a higher level. For details, see Comer. 
Session layer: As the name suggests, this layer is responsible for the management of sessions, i.e., the setup, the maintenance, and the correct closing of sessions. This can be, for example, remote terminal access.
Presentation layer: This layer handles such issues as data decription and encryption, text or graphics compression, conversion, and formatting.
Application layer: In this top layer, we encounter old friends like telnet or file transfer applications.
Data Link Layer
TCP/IP and OSI can be considered as two different approaches to the internetworking problem. OSI defines a standard in a formal taskforce approach without requiring practical implementations. The TCP/IP approach is instead based on practical implementations. The OSI model is a complete protocol stack offering the services needed in a large, distributed computing environment. These services include security services, distributed file services, global directory services, time services, and many others. Since OSI offers the complete spectrum of services, including even seldom-used facilities, it is much heavier and much more resource consuming than TCP/IP. This was a big problem for small clients such as PCs. At the time TCP/IP became important, limitations in disk space and main memory were real issues, so it is no wonder why the tinier TCP/IP became the industry standard.
The OSI stack is included in this discussion because it is a full implementation of the protocol stack and serves as a reference implementation of a network protocol stack. As such, it addresses issues important in large distributed systems. One of these issues addressed by OSI is the global directory service standard, also known as the X.500 standard. As we will see throughout this book, LDAP inherited its fundamental concepts from the X.500 standard.
In this section, we learned that computers use communication protocols to communicate with each other. The OSI and TCP/IP protocols have been evolving since the late 1960s. TCP/IP became the industry standard because it is easier to implement. Nevertheless, OSI provides some very interesting features, such as the X.500 global directory service standard. LDAP is a direct descendent of X.500.
Comer, D.E., Internetworking with TCP/IP, 3 vols., Prentice Hall.
Stevens, R.W., TCP/IP Illustrated, 3 vols., Addison-Wesley.
Carter, G., LDAP System Administration, O'Reilly, Sebastopol, CA, 2003.
Carter, G., LDAP System Administration, O'Reilly, Sebastopol, CA, 2003.
|< Day Day Up >|| |