Mujahed Sebai
Interactive Secure Communication      
Main
University
iPIX Folder

 

Cover Abstract  Introduction Research Design Implementation Testing Conclusion Bibliography Class Definitions

Chapter 2: Research

<<   Page  1  2   >>

2.1.         Client/Server Model

 2.1.1.      Definition

Client/Server model describes the communication between computing processes that act as service providers, also known as servers, and service consumers, known as clients. Clients and servers are functional modules that are implemented by a set of software modules, hardware components, or a combination of both. They may run on the same machine as well as on separate machines. In the case of the latter, they form a distributed client/server system.

The communication between the two modules is established as the client module initiates a service request (SR) to the server module. However, once the communication is established, the two modules cannot reverse roles (i.e. the client remains as the client module, and in turn, the server remains as the server module). In addition, a server can become a client for another server. [1] 

 

Figure 2.1: Conceptual client/server model.

 Client/server model provides an extremely crucial feature as information is placed into messages and then exchanged between clients and servers, i.e. no global variables. Typically, messages are exchanged in an interactive manner between online processes; real-time message exchange.

 2.1.2.      Client/Server Infrastructures

Client/server architecture can be implemented in various means depending on the scope and complexity of the system. Generally, client/server systems can be built upon two kinds of infrastructures: two-tier architecture and three-tier architecture. Both architectures are described below: [5]

 2.1.2.1.      Two-Tier Client/Server Architecture

In the early 80’s, file sharing systems were one of the primary systems that are used for computer communication. However, due to their drawbacks, it was essential to develop an alternative solution to overcome the disadvantages of file sharing and to direct the tend towards Graphical User Interfaces (GUIs); hence, the two-tier approach on client/server architecture was adopted.

The two-tier architecture contains two primary modules: service consumer (client module) and service provider (server module). [13] 

 

Figure 2.2: Two-tier client/server system.

 2.1.2.1.1.      Modules

As discussed earlier, client/server systems consist of two primary modules: the client module and the server module. The two modules are discussed in more details as follows:

 2.1.2.1.1.1.      Client Module

The client module is primarily a consumer of the services provided by server(s). It is the front-end of the client/server application that users use and interact with, thus, it almost always provides presentation services. This portion of the application usually manages the user-interface, validates data entered by the user, dispatches requests to the server, and sometimes executes some logic. It also manages the local resources that the user interacts with, i.e. keyboard, monitor, workstation CPU, and peripherals.

 2.1.2.1.1.2.      Server Module

A server module is the process (program) that fulfills clients’ requests as it performs the tasks requested. Thus, it is primarily a provider of the services requested by clients. Generally, it receives requests from the client module, executes the required tasks, manages data integrity, and dispatches responses to clients’ requests. It acts as a software engine that manages shared resources such as communication links, hardware devices (i.e. printers), and databases.

It is worth mentioning that a server is an architectural concept and not a physical implementation description; it focuses primarily on the applications rather than the hardware. Thus, in client/server model, clients and servers functions can be provided by the same physical device.

 2.1.2.1.2.      Limitation of the Two-Tier Systems

         Since the application logic of a two-tier system is distributed amongst the client and server applications, two-tier architecture best suites homogonous-static environments where constant updates do not exist.

        The two-tier architecture may lead to limit the security level that is required as it requires complex modules to handle security issues.

 2.1.2.2.      Three-Tier Client/Server Architecture

Due to the limitation of the two-tier architecture, the tree-tier approach was developed to overcome the drawbacks of its successor by introducing a middle logical layer that may be located on a separate machine to reside between client and server modules.

The tree-tier architecture contains tree module: presentation tier (client module), functionality tier (agent), and data tier (server module), as shown in figure 2.3. 

 

Figure 2.3: Three-tier client/server system.

 2.1.2.2.1.      Pros and Cons of the Three-Tier Systems

+       Modular applications: as three-tier systems deploy the application logic on several machines, three-tier architecture provides a better scalability.

+       Security: due to its ability to implement security on multiple levels, three-tier architecture minimizes the possibility of accessing unauthorised data.

+       Data integrity: since all databases updates are forwarded by the middle layer, invalid/corrupted data can be prevented from updating the database; hence, removing the risk of data corruption.

+       Distribution: since most of the system logic is implemented on the middle layer, the constant updates of the system can be implemented on one place; hence, reduce distribution effort.

+       Transparency: since the database is hidden from clients of the system, potential improvements on the database is performed transparently to clients.

        Network traffic management: the tree-tier architecture may result to overload network traffic; hence, increases the need of network traffic management.

 2.1.3.      Middleware and Connectivity

Connectivity is the ability to enable processes (programs) to communicate and interact with each other transparently, with no regard to their physical location, across a network. However, middleware is a set of common un-aware services that provides connectivity between end-users and server processes; it simplifies the development of a distributed computer system by eliminating the confusion caused from heterogeneous operating systems, communication protocols, implementation languages, and hardware platforms. [11]

The services of middleware are provided for applications through Application Programming Interfaces (APIs) and for users through commands or Graphical User Interfaces (GUI). In essence, middleware is the software that resides above the network and below the application software as shown in the figure 2.4. 

 

Figure 2.4: Middleware. 

The key element of connectivity is the Network Operating System (NOS), which relies on communication protocols to provide specific services. These protocols can be classified into the following three groups as follows:

2.1.3.1.      Media Protocols

The media protocols define the physical connections between computing devices on a network to communicate. Examples of the evolving network communication technologies are Ethernet, Token Ring, Fiber Distributed Data Interface (FDDI), Asynchronous Transfer Mode (ATM), coaxial, and twisted-pair.

 2.1.3.2.      Transport Protocols

The transport protocols provide the mechanism to exchange packets of data between clients and servers. As the available network architectures differ, network architecture standards are required to interconnect networks from different vendors with different capabilities to exchange information between interconnected computers. The Open System Interconnection (OSI) reference model specifies standers that provide the ability to interconnect different network architectures by casting needed functions in terms of seven layers, as shown in figure 2.5. 

Figure 2.5: The OSI reference model.

Examples of other network architectures are Transmission Control Protocol / Internet Protocol (TCP/IP), Government Open Systems Interconnection Profile (GOSIP), Novell’s IPX/SPX.

 2.1.3.2.1.      Transmission Control Protocol/Internet Protocol

The Transmission Control Protocol/Internet Protocol, known as TCP/IP, is a family of protocols developed to allow cooperating computer systems within a network to share resources amongst each other. This family of communication protocols is a WAN protocol suit that uses packet switching as a method of communication. It takes its name from its two key protocols: the Transmission Control Protocol and the Internet Protocol.

 It is most commonly used as the protocol suite for the Internet, which is the global system of many LANs and packet switched networks connected together, to allow internetworking. The Internet is a huge collection of networks that differ in their architectures, including NSFnet, NYsernet, LANs, Arpanet, and some military networks. All of these networks are connected to each other to form the universal ‘Internet’. In addition, they enable their users to send messages amongst each other, except where there is security or other policy restriction on access.

 The TCP/IP protocol was originally defined by the US Department of Defense (DoD) in the late 1960s. The main purpose of this definition was to ensure that connections will remain intact as along as the source and destination machines were functioning, even if some of the machines or the transmission lines in between were suddenly put out of operation. In other words, a flexible architecture was essential as applications with divergent requirements were envisioned, ranging from transferring files to real-time speech transmission. However, the standard TCP/IP was implemented by the University of California at Berkeley and it was released in 1983.

 2.1.3.2.1.1.      The TCP/IP Model

The TCP/IP suit is a layered set of protocols; a protocol suit that is built on several levels of protocols, each of which is called a layer, that interact in some sequential and hierarchical way, with each layer having an interface to the layer above it and another one to the layer below it, as shown in figure 2.6. [4] 

Figure 2.6: TCP/IP protocol suite layers.

 o             Application Layer

The application layer provides a set of programs, each of which offers a particular network service, e.g. SMTP, Telnet, FTP, SNMP, and Ping.

 o             Transport Layer

The transport layer contains two protocols: TCP and UDP. TCP provides a virtual circuit service. It takes a stream of data from an application layer protocol and performs the following operations:

Ž          Segments the data to make a TCP Protocol Data Unit with TCP header and application data.

Ž          Sends each packet using IP

Ž          Reassembles the application data.

However, since TCP uses the services provided by IP, TCP must compensate by ensuring that lost packets are retransmitted and by re-sequencing IP packets if necessary.

 o             Network Layer

The network layer contains low level protocols, such as IP along with other associated protocols. IP provides a best effort but unreliable datagram service; hence, no guarantee of delivery. Since it provides datagram services, packets may be delivered out of sequence. Furthermore, the network layer is concerned with for packets routing. Thus, it contains routing protocols, such as RIP, OSPF, and EGP.

 o             Link Layer

The lowest layer, link layer, is concerned with the actual transmission of packets as well as IP to Ethernet address translation.

 2.1.3.2.2.      Real-Time Transfer Protocol

Real-Time Transfer Protocol, RTP, is used to transmit digitised real-time data, such as audio and video, over the Internet. RTP provides two main facilities: a sequence number in each packet for out of order or loss detection and a timestamp field for the receiver to control playback. The other important feature of RTP is its ability to receive streams of data from multiple sources, combine them into a single stream, and send it as one. Such a feature is considered to be important for real-time applications such as audio conferencing over IP. Further more, RTP runs over UDP as RTP packets are encapsulated in a UDP datagram providing concurrency. See figure 2.7. 

 

Figure 2.7: RTP architecture.

 RTP Control Protocol, RTCP, is a companion protocol runs with RTP in order to enable senders and receivers to exchange reports that include information about the data being transferred and the performance of the network.

 2.1.3.3.      Client/Server Protocols

Client/server protocols (middleware) determine the manner in which clients requests are sent to server(s), and on the other hand, how server(s) replies are send back to clients. It also provides additional functionality for applications such as security, compression/decompression, and failure handling. Two types of middleware can be viewed in terms of client middleware that resides on the client platform and server middleware that resides on the server platform.

 TCP/IP Sockets, Named Pipes, Remote Procedure Call (RPC), Advanced Program-to-Program Communication (APPC), and NetBIOS are examples of client/server protocols.

 2.1.4.      Pros and Cons of Client/Server Computing

+       Enhanced data sharing: this is achieved as data is collected and maintained by the server, and at the same time, it is available for clients to access; allow more users to share data simultaneously.

+       Integrated services: client/server model makes it possible to integrate multiple services into a single application that is available for clients to use. Thus, it elements the need to change terminals or even log into another processor to access information as all authorized information and processes are directly available through a single application.

+       Transparency: client/server application provides the ability to hide all the implementation issues from clients such as failures, data replication, data processing, etc. In addition, it enables clients to communicate and exchange information with no concern to the physical location of the computer systems (local or remote).

+       Security: client/server model support various security issues such as authentication, authorization, data protection, privacy, and encryption.

+       Modular applications: it also supports modular applications (so-called two-tier and three-tier) where the software application is separated into modular pieces, and each piece is installed on hardware specialized for that subsystem.

         System management: it is hard to keep the configuration information up-to-date with distributed applications across the network, i.e. upgrading to newer versions of the client/server application can be challenging to synchronize or stage appropriately.

       Network reliability: client/server model rely heavily on the network reliability.

<<   Page  1  2   >>