Network Services

J. Francois jlf@magusnet.gilbert.az.us
Wed, 15 Mar 2000 17:52:46 -0700


*********************************************************************
Network Services
by S. Lee Henry

You've undoubtedly heard the phrase "network services" used numerous 
times. In this week's column, we're going to look at what a network 
service is and how it's invoked.

To begin, let's simply list a few examples of network services. You're 
probably familiar with most or all of these:

- telnet
- ftp
- sendmail
- httpd
- pop

These are only a sampling of the services that you're likely to find on 
any Unix server, but they're fairly basic and generally well-known, so 
they'll serve as good examples for our discussion.

"Network services" is a loosely defined term that describes services 
that run on  servers on a network and supply a service to clients. The 
ftp service, for example, is not likely to be running on most client 
systems, yet it's a common service on servers and allows users to upload 
and download files. On the client side of an ftp connection, the user 
types ftp  (e.g., tftp jasper.nici.net) to make a connection 
to the ftp server. The client process opens a connection, called a 
"port", to the server. On the server side, another process is listening 
on that port and answers the client request.

Here's a typical ftp scenario:
- a user on lj.nici.net starts an ftp session by entering the command 
"ftp jasper.nici.net"
- the system opens a port, using a random port on the client (let's say 
it uses port 12345) to connect to the ftp port on the server (port 21)
- the ftp server on the server receives the request for a connection 
from the client
- the user issues requests to the ftp service, using the ls, cd, get, 
and put commands
- the server process opens up additional connections as needed to manage 
the data transfers
- the user ends his session by entering the command "bye"

client (port 12345) => server (port 21)

Many network services proceed in very similar fashion. The client side 
makes a request and initiates a connection to the port associated with a 
particular network service. The process "listening" on that port 
responds. Eventually, the connection is closed.

Let's look at a POP session:
- a user is starting up an email application on his client system
- the email application makes a connection to the email server specified 
   in the user's configuration
- the email application then starts up a "dialog" with the server
- the email application says something like "user nici" and "pass 
  mypassword"
- the email application then proceeds to fetch mail messages for the   
  user and presents a brief synopsis of each message (probably just the 
  sender's email address and the subject line) to the user
- the user reads, replies and deletes messages
- the email application sends commands to the server to reflect the 
  user's activities
- if the user's configuration directs the application to "keep mail on 
  the server", it doesn't issue delete (ie., dele) commands - otherwise, 
  it does
- the email application updates its "view" of the user's email holdings 
  on the server as needed
- the user quits the email application and the application sends a 
  "quit" command to the server

Many network services do not "listen" for themselves but, instead, 
employ the services of a another system service to do this for them. 
That service, inetd, listens for requests on behalf of a number of 
network services. If inetd gets a request for POP, for example, it 
starts up the popper application, which manages the server side of the 
dialog represented above.  

Popper is, in fact, a service that might easily and commonly be run 
either as a "daemon" process, which starts up when a system is booted, 
and listens for requests or in response to requests from clients in 
which inetd starts up the service on an "as needed" basis.

client (12345) => server (110)
client (12345) => inetd => POP

The inetd process itself is started at boot time. It reads its 
configuration file, /etc/inetd.conf, to determine which ports it must 
monitor and which services it must invoke to manage the requests it 
receives.

If you look at the /etc/inetd.conf file on your server, you will see 
many of the services that your server provides, the ports these services 
run on and the full path name to the service. The following line is 
typical:

pop3    stream  tcp     nowait  root    /usr/local/bin/popper popper

If the inetd service goes down (this is very rare), requests for any 
service that inetd is supporting will go unanswered. For example, if the 
inetd process of your server crashes, you will not be able to initiate 
new telnet or POP sessions (if inetd is managing both), though existing 
sessions will continue to operate since these are no longer dependant on 
inetd.

Next Week: How to Check Your Network Connection 

About the author
----------------
S. Lee Henry has been administering Unix systems for 15 years. Even so, 
she describes herself as USL (Unix as a second language) and still 
remembers enough English to write books and buy groceries. She lives on 
a sailboat in Marin County, California and can be reached at 
s.lee.henry@sunworld.com.
 
Jean Francois Sends...
President & CEO MagusNet, Inc.
MagusNet.com, MagusNet.Gilbert.AZ.US
CTO EBIZ Enterprises, Inc.
TheLinuxStore.com, TheLinuxLab.com, LinuxWired.net
480-778-1120 - Office
602-770-JLF1 - Cellular