0% found this document useful (0 votes)
25 views40 pages

ch25 5th

Uploaded by

Charanjeet Singh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views40 pages

ch25 5th

Uploaded by

Charanjeet Singh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 40

Chapter 25

Introduction
To
Application
Layer
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Chapter 25: Outline

25.1 INTRODUCTION

25.2 CLIENT-SERVER PROGRAMMING

25.3 ITERATIVE PROGRAMMING IN C

25.4 ITERATIVE PROGRAMMING IN JAVA


25-1 INTRODUCTION

The application layer provides


services to the user.
Communication is provided using
a logical connection, which means
that the two application layers
assume that there is an imaginary
direct connection through which
they can send and receive
messages. Figure 25.1 shows the
idea behind this logical
25.3
Figure 25.1: Logical connection at the application
layer

25.4
25.25.1 Providing Services

All communication networks that started before the


Internet were designed to provide services to
network users. Most of these networks, however,
were originally designed to provide one specific
service. For example, the telephone network was
originally designed to provide voice service: to allow
people all over the world to talk to each other. This
network, however, was later used for some other
services, such as facsimile (fax), enabled by users
adding some extra hardware at both ends.

25.5
25.25.2 Application-Layer Paradigms

It should be clear that to use the Internet we need


two application programs to interact with each
other: one running on a computer somewhere in the
world, the other running on another computer
somewhere else in the world. The two programs
need to send messages to each other through the
Internet infrastructure. However, we have not
discussed what the relationship should be between
these programs. Two paradigms have been
developed : the client-server paradigm and the peer-
to-peer paradigm. We briefly introduce these two
paradigms here.
25.6
Figure 25.2: Example of a client-server paradigm

25.7
Figure 25.3: Example of a peer-to-peer paradigm

25.8
25-2 CLIENT-SERVER PROGRAMMING

In this paradigm, communication at


the application layer is between
two running application programs
called processes: a client and a
server. A client is a running
program that initializes the
communication by sending a
request; a server is another
application program that waits for a
request from a client.
25.9
25.2.1 API

How can a client process communicate with a server


process? A computer program is normally written in
a computer language with a predefined set of
instructions that tells the computer what to do. If we
need a process to be able to communicate with
another process, we need a new set of instructions to
tell the lowest four layers of the TCP/IP suite to
open the connection, send and receive data from the
other end, and close the connection. A set of
instructions of this kind is normally referred to as an
application programming interface (API).

25.10
Figure 25.4: Position of the socket interface

25.11
Figure 25.5: A Sockets used like other sources and
sinks

25.12
Figure 25.6: Use of sockets in process-to-process
communication

25.13
Figure 25.7: A socket address

25.14
25.2.2 Using Transport Layer

A pair of processes provide services to the users of


the Internet, human or programs. A pair of
processes, however, need to use the services provided
by the transport layer for communication because
there is no physical communication at the
application layer. As we discussed in Chapters 23
and 24, there are three common transport-layer
protocols in the TCP/IP suite: UDP, TCP, and
SCTP. Most standard applications have been
designed to use the services of one of these
protocols.

25.15
25.2.3 Iterative Using UDP

An iterative server can process one client request at


a time; it receives a request, processes it, and sends
the response to the requestor before handling
another request. When the server is handling the
request from a client, the requests from other clients,
and even other requests from the same client, need
to be queued at the server site and wait for the server
to be freed. The received and queued requests are
handled in the first-in, first-out fashion. In this
section, we discuss iterative communication using
UDP.

25.16
Figure 25.8: Sockets for UDP communication

25.17
Figure 25.9: Flow diagram for iterative UDP
communication

25.18
25.2.4 Iterative Using TCP

Although iterative communication using TCP is not


very common, because it is simpler we discuss this
type of communication in this section.

25.19
Figure 25.10: Sockets used in TCP communication

2
Create

5
Create

25.20
Figure 25.11: Flow diagram for iterative TCP
communication

25.21
25.2.5 Concurrent Communication

A concurrent server can process several client


requests at the same time. This can be done using
the available provisions in the underlying
programming language. In C, a server can create
several child processes, in which a child can handle
a client. In Java, threading allows several clients to
be handled by each thread. We do not discuss
concurrent server communication in this chapter,
but we briefly discuss it in the book website in the
Extra Material section.

25.22
25-3 ITERATIVE PROGRAMMING IN C

In this section, we show how to


write some simple iterative
client-server programs using C.
The section can be skipped if the
reader is not familiar with the C
language. The C language better
reveals some subtleties in this
type of programming.

25.23
25.3.1 General Issues

The important issue in socket interface is to


understand the role of a socket in communication.
The socket has no buffer to store data to be sent or
received. It is capable of neither sending nor
receiving data. The socket just acts as a reference or
a label. The buffers and necessary variables are
created inside the operating system.

25.24
Figure 25.12: Socket data structure

25.25
Header Files

25.26
25.3.2 Iter. Programs Using UDP

As we discussed earlier, UDP provides a


connectionless server, in which a client sends a
request and the server sends back a response.

25.27
Table 25.1: Echo server program using UDP

25.28
Table 25.1: Echo server program using UDP
(continued)

25.29
Table 25.2: Echo client program using UDP

25.30
Table 25.2: Echo client program using UDP
(continued)

25.31
25.3.3 Iter. Programming Using TCP

As we described before, TCP is a connection-


oriented protocol. Before sending or receiving data,
a connection needs to be established between the
client and the server.

25.32
Figure 25.13: Flow diagram for data-transfer boxes

25.33
Figure 25.14: Buffer used for receiving

25.34
Table 25.3: Echo server program using TCP (part I)

25.35
Table 25.3: Echo server program using TCP (part II)

25.36
Table 25.3: Echo server program using TCP (part III)

25.37
Table 25.4: Echo client program using TCP (Part I)

25.38
Table 25.4: Echo client program using TCP (Part II)

25.39
Table 25.4: Echo server program using TCP (Part III)

25.40

You might also like