In anticipation of impending atomic disaster, The United States Air Force charged a small group of researchers with a formidable task: creating a communication network that could survive a nuclear attack. Their concept was revolutionary: a network that had no centralized control. If 1 (or 10, or 100) of its nodes were destroyed, the system would continue to run. In essence, this network (designed exclusively for military use) would survive the apocalypse itself (even if we didn't).
The individual largely responsible for the creation
of the Internet is Paul Baran. In 1962, Baran worked at RAND Corporation, the
think tank charged with developing this concept. Baran's vision involved a
network constructed much like a fishnet. In his now-famous memorandum titled On
Distributed Communications: I. Introduction to Distributed Communications
Network, Baran explained:
“The centralized network is obviously vulnerable as
destruction of a single central node destroys communication between the end
stations. In practice, a mixture of star and mesh components is used to form
communications networks. Such a network is sometimes called a `decentralized'
network, because complete reliance upon a single point is not always
required.”*
*The RAND Corporation has generously made this
memorandum and the report delivered by Baran available via the World Wide Web.
The documents can be found at http://www.rand.org/publications/electronic/.
Baran's model was complex. His presentation covered
every aspect of the proposed network, including routing conventions. For
example, data would travel along the network by whatever channels were available
at that precise moment. In essence, the data would dynamically determine its own
path at each step of the journey. If it encountered some sort of problem at one
crossroads of the Net, the data would find an alternate route. Baran's proposed
design provided for all sorts of contingencies. For instance, a network node
would only accept a message if that node had adequate space available to store
it. Equally, if a data message determined that all nodes were currently
unavailable (the all lines busy scenario), the message would wait at the current
node until a data path became available. In this way, the network would provide
intelligent data transport. Baran also detailed other aspects of the network,
including
Ř
Security
Ř
Priority
schemes (and devices to avoid network overload)
Ř
Hardware
Ř
Cost
In essence, Baran eloquently articulated the birth of
a network in painstaking detail. Unfortunately, however, his ideas were ahead of
their time. The Pentagon had little faith in such radical concepts. Baran
delivered to defense officials an 11-volume report that was promptly shelved.
The Pentagon's shortsightedness delayed the birth of
the Internet, but not by much. By 1965, the push was on again. Funding was
allocated for the development of a decentralized computer network, and in 1969,
that network became a reality. That system was called ARPANET.
As networks go, ARPANET was pretty basic, not even
closely resembling the Internet of today. Its topology consisted of links
between machines at four academic institutions (Stanford Research Institute, the
University of Utah, the University of California at Los Angeles, and the
University of California at Santa Barbara).
One of those machines was a DEC PDP-10. Only those
more mature readers will remember this model. These are massive, ancient beasts,
now more useful as furniture than computing devices. I mention the PDP-10 here
to briefly recount another legend in computer history (one that many of you have
never heard). By taking this detour, I hope to give you a frame of reference
from which to measure how incredibly long ago this was in computer history.
It was at roughly that time that a Seattle,
Washington, company began providing computer time sharing. The company
reportedly took on two bright young men to test its software. These young men
both excelled in computer science, and were rumored to be skilled in the art of
finding holes within systems. In exchange for testing company software, the
young men were given free dial-up access to a PDP-10 (this would be the
equivalent of getting free access to a private bulletin board system).
Unfortunately for the boys, the company folded shortly thereafter, but the
learning experience changed their lives. At the time, they were just old enough
to attend high school. Today, they are in their forties. Can you guess their
identities? The two boys were Bill Gates and Paul Allen.
In any event, by 1972, ARPANET had some 40 hosts (in
today's terms, that is smaller than many local area networks, or LANs). It was
in that year that Ray Tomlinson, a member of Bolt, Beranek, and Newman, Inc.,
forever changed the mode of communication on the network. Tomlinson created
electronic mail.
Tomlinson's invention was probably the single most
important computer innovation of the decade. E-mail allowed simple, efficient,
and inexpensive communication between various nodes of the network. This
naturally led to more active discussions and the open exchange of ideas. Because
many recipients could be added to an e-mail message, these ideas were more
rapidly implemented. (Consider the distinction between e-mail and the telephone.
How many people can you reach with a modern conference call? Compare that to the
number of people you can reach with a single e-mail message. For group-oriented
research, e-mail cannot be rivaled.) From that point on, the Net was alive.
In 1974, Tomlinson contributed to another startling
advance. He (in parallel with Vinton Cerf and Robert Khan) invented the
Transmission Control Protocol (TCP). This protocol was a new means of moving
data across the network bit by bit and then later assembling these fragments at
the other end.
By 1975, ARPANET was a fully functional network. The
groundwork had been done and it was time for the U.S. government to claim its
prize. In that year, control of ARPANET was given to an organization then known
as the United States Defense Communications Agency (this organization would
later become the Defense Information Systems Agency).
To date, the Internet is the largest and most
comprehensive structure ever designed by humankind. Next, we will address some
peripheral technological developments that helped form the network and bring it
to its present state of complexity. To do this, we will start with C.
What Is C?
C is a popular computer programming language, often
used to write language compilers and operating systems. I examine C here because
its development (and its relationship to the UNIX operating system) is directly
relevant to the Internet's development.
Nearly all applications designed to facilitate
communication over the Internet are written in C. Indeed, both the UNIX
operating system (which forms the underlying structure of the Internet) and
TCP/IP (the suite of protocols used to traffic data over the Net) were developed
in C. It is no exaggeration to say that if C had never emerged, the Internet as
we know it would never have existed at all.
For most non-technical users, programming languages
are strange, perplexing things. However, programming languages (and programmers)
are the very tools by which a computer program (commonly called an application)
is constructed. It may interest you to know that if you use a personal computer
or workstation, better than half of all applications you now use were written in
the C language. (This is true of all widely used platforms, including
Macintosh.) In this section, I want to briefly discuss C and pay some homage to
those who helped develop it. These folks, along with Paul Baran, Ken Thompson,
and a handful of others, are the grandparents of the Internet.
C was created in the early 1970s by Dennis M. Ritchie
and Brian W. Kernighan. These two men are responsible for many technological
advancements that formed the modern Internet, and their names appear several
times throughout this book.
Let's discuss a few basic characteristics of the C
programming language. To start, C is a compiled as opposed to an interpreted
language. I want to take a moment to explain this critical distinction because
many of you may lack programming experience.
Most programs are written in plain, human-readable
text. This text is made up of various commands and blocks of programming code
called functions. In interpreted languages, this text remains in human-readable
form. In other words, such a program file can be loaded into a text editor and
read without event.
For instance, examine the program that follows. It is
written for the Practical Extraction and Report Language (Perl). The purpose of
this Perl program is to get the user's first name and print it back out to the
screen.
This program is written in plain English:
#!/usr/bin/perl
print "Please enter your first name:";
$user_firstname = <STDIN>;
chop($user_firstname);
print "Hello, $user_firstname\n"
print "Are you ready to hack?\n"
Its construction is designed to be interpreted by
Perl. The program performs five functions:
•Start the Perl interpreter
•Print a message to the user, asking for his or her
first name
•Get the user's first name
•Remove the carriage return at the end of the user
input
•Print a new message to the user, identifying him
or her by name
Interpreted languages are commonly used for programs
that perform trivial tasks or tasks that need be done only once. These are
sometimes referred to as throwaway programs. They can be written quickly and
take virtually no room on the local disk.
Such interpreted programs are of limited use. For
example, in order to run, they must be executed on a machine that contains the
command interpreter. If you take a Perl script and install it on a DOS-based
machine (without first installing the Perl interpreter), it will not run. The
user will be confronted with an error message (Bad command or file name). Thus,
programs written in Perl are dependent on the interpreter for execution.
Microsoft users will be vaguely familiar with this
concept in the context of applications written in Visual Basic (VB). VB programs
typically rely on runtime libraries such as VBRUN600.DLL. Without such libraries
present on the drive, VB programs will not run.
The key advantages of interpreted languages include
•Their programs are easily altered and edited.
•Their programs take little disk space.
•Their programs require little memory.
Interpreted languages are popular, particularly in
the UNIX community. Here is a brief list of some well-known interpreted
languages:
Ř
Perl
Ř
REXX
Ř
Forth
Ř
Python
Ř
TCL
The pitfall of using an interpreted language is that programs written in interpreted languages are generally much slower than those written in compiled languages.
Compiled Languages
Compiled languages (such as C) are much
different. Programs written in compiled languages must be converted into binary
format before they can be executed. In many instances, this format is almost
pure machine-readable code. To generate this code, the programmer sends the
human-readable program code (plain text) through a compilation process. The
program that performs this conversion is called a compiler.
After the program has been compiled, no
interpreter is required for its execution. It will run on any machine that runs
the target operating system for which the program was written. Exceptions to
this rule may sometimes apply to certain portions of a compiled program. For
example, certain graphical functions are dependent on proprietary graphics
libraries. When a C program is written using such graphical libraries, certain
library components must be shipped with the binary distribution. If such library
components are missing when the program is executed, the program will exit on
error.
The first interesting point about compiled
programs is that they are fast. Because the program is loaded entirely into
memory on execution (as opposed to being interpreted first), a great deal of
speed is gained. However, as the saying goes, there is no such thing as a free
lunch. Thus, although compiled programs are fast, they are also much larger than
programs written in interpreted languages.
Examine following the C program. It is
identical in function to the Perl program listed previously. Here is the code in
its yet-to-be-compiled state:
#include <stdio.h>
int main()
{
char name[20];
printf("Please enter your first name:
");
scanf("%s", &name);
printf("Hello, %s\n", name);
printf("Are you ready to hack?\n");
return 0;
}
Using a standard C compiler, I compiled this
code in a UNIX operating system environment. The difference in size between the
two programs (the one in Perl and the one in C) was dramatic. The Perl program
was 150 bytes in size; the C program, after being compiled, was 4141 bytes.
This might seem like a huge liability on the
part of C, but in reality, it isn't. The C program can be ported to almost every
operating system. Furthermore, it will run on any operating system of a certain
class. If compiled for DOS, it will work equally well under all DOS-like
environments (such as PC-DOS or NDOS), not just Microsoft DOS.
Modern C: The All-Purpose Language
C has been used over the years to create all
manner of programs on a variety of platforms. Many Microsoft Windows
applications have been written in C. Similarly, as I will explain later in this
chapter, nearly all basic UNIX utilities are written in C.
To generate programs written in C, you must
have a C compiler. C compilers are available for most platforms. Some of these
are commercial products and some are free to the public. lists common C
compilers and the platforms on which they are available.
Below table lists the various compilers and the
platform they work
|
Complier |
Platform |
|
GNU C (free) |
UNIX, Linux, DOS, VAX |
|
Borland C |
Dos, Windows, Windows NT |
|
Microsoft C |
Dos, Windows, Windows NT |
|
Watcom C |
Dos, Windows, Windows NT, OS/2 |
|
Metrowerks CodeWarrior |
Mac, Windows, BeOS |
|
Symantec |
Macintosh, Microsoft platforms |
Advantages of C
One primary advantage of the C language is that
it is smaller than many other languages. The average individual can learn C
within a reasonable period of time. Another advantage is that C now conforms to
a national standard. Thus, a programmer can learn C and apply that knowledge on
any platform, anywhere in the country.
C has direct relevance to the development of
the Internet. As I have explained, most modern TCP/IP implementations are
written in C, and these form the basis of data transport on the Internet. More
importantly, C was used in the development of the UNIX operating system. As I
will explain in the next section of this chapter, the UNIX operating system has,
for many years, formed the larger portion of the Internet.
C has other advantages: One is portability. You
may have seen statements on the Internet about this or that program being ported
to another operating system or platform, and many of you might not know exactly
what that means. Portability refers to the capability of a program to be
re-worked to run on a platform other than the one for which it was originally
designed (that is, the capability to take a program written for Microsoft
Windows and port it to the Macintosh platform). This aspect of portability is
very important, especially in an environment like the Internet, because the
Internet has many different types of systems running on it. In order to make a
program available networkwide, that program must be easily conformable to all
platforms.
Unlike code in other languages, C code is
highly portable. For example, consider Visual Basic. Visual Basic is a wonderful
rapid application development tool that can build programs to run on any
Microsoft-based platform. However, that is the extent of it. You cannot take the
raw code of a VB application and recompile it on a Macintosh or a Sun
Sparcstation.
In contrast, the majority of C programs can be
ported to a wide variety of platforms. As such, C-based programs available for
distribution on the Internet are almost always distributed in source form (in
other words, they are distributed in plain text code form, or in a form that has
not yet been compiled). This allows the user to compile the program specifically
for his or her own operating system environment.
Limitations of C and the Creation of C++
Despite these wonderful features, C has certain
limitations. C is not, for example, an object-oriented language. Managing very
large programs in C (where the code exceeds 100,000 lines) can be difficult. For
this, C++ was created. C++ lineage is deeply rooted in C, but works differently.
Because this section contains only brief coverage of C, I will not discuss C++
extensively. However, you should note that C++ is generally included as an
option in most modern C compilers.
C++ is an extremely powerful programming
language and has led to dramatic changes in the way programming is accomplished.
C++ allows for encapsulation of complex functions into entities called objects.
These objects allow easier control and organization of large and complex
programs.
In closing, C is a popular, portable, and
lightweight programming language. It is based on a national standard and was
used in the development of the UNIX operating system.
UNIX
The UNIX operating system has a long and rich
history. Today, UNIX is one of the most widely used operating systems,
particularly on the Internet. In fact, UNIX actually comprises much of the Net,
being the number one system used on servers in the void.
Created in 1969 by Ken Thompson of Bell Labs,
the first version of UNIX ran on a Digital Equipment Corporation (DEC) PDP-7. Of
course, that system bore no resemblance to modern UNIX. For example, UNIX has
been traditionally known as a multiuser system (in other words, many users can
work simultaneously on a single UNIX box). In contrast, the system created by
Thompson was reportedly a single-user system, and a bare bones one at that.
When users today think of an operating system,
they imagine something that includes basic utilities, text editors, help files,
a windowing system, networking tools, and so forth. This is because the personal
computer has become a household item. As such, end-user systems incorporate
great complexity and user-friendly design. Alas, the first UNIX system was
nothing like this. Instead, it was composed of only the most necessary utilities
to operate effectively. For a moment, place yourself in Ken Thompson's position.
Before you create dozens of complex programs like those mentioned previously,
you are faced with a more practical task: getting the system to boot.
In any event, Thompson and Dennis Ritchie
ported UNIX to a DEC PDP-11/20 a year later. From there, UNIX underwent
considerable development. Between 1970 and 1973, UNIX was completely reworked
and written in the C programming language. This was reportedly a major
improvement and eliminated many of the bugs inherent to the original
implementation.
In the years that followed, UNIX source code
was distributed to universities throughout the country. This, more than any
other thing, contributed to the success of UNIX.
Several years passed, and UNIX continued to
gain popularity. It became so popular, in fact, that in 1978, AT&T decided
to commercialize the operating system and demand licensing fees (after all, it
had obviously created a winning product). This caused a major shift in the
computing community. As a result, the University of California at Berkeley
created its own version of UNIX, thereafter referred to as the Berkeley Software
Distribution or BSD. BSD was (and continues to be) extremely influential, being
the basis for many modern forms of commercial UNIX.
An interesting development occurred during
1980. Microsoft released a new version of UNIX called XENIX. This was
significant because the Microsoft product line was already quite extensive. For
example, Microsoft was selling versions of BASIC, COBOL, Pascal, and FORTRAN.
However, despite a strong effort by Microsoft to make its XENIX product fly (and
even an endorsement by IBM to install the XENIX operating system on its new
PCs), XENIX would ultimately fade into obscurity. Its popularity lasted a mere
five years. In contrast, MS-DOS (released only one year after XENIX was
introduced) took the PC world by storm.
Today, there are many commercial versions of
UNIX
Commercial versions of UNIX and their
manufacturers.
|
UNIX version |
Software
Company |
|
SunOS & Solaris |
Sun Microsystems |
|
HP-UX |
Hewlett Packard |
|
AIX |
IBM |
|
IRIX |
Silicon Graphics (SGI) |
|
DEC UNIX |
Digital Equipment Corporation |
These versions of UNIX run on proprietary hardware
platforms, on high-performance machines called workstations. Workstations differ
from PC machines in several ways. For one thing, workstations contain superior
hardware and are therefore more expensive. This is due in part to the limited
number of workstations built. PCs are manufactured in large numbers, and
manufacturers are constantly looking for ways to cut costs. A consumer buying a
new PC motherboard has a much greater chance of receiving faulty hardware.
Conversely, workstation buyers enjoy more reliability, but may pay five or even
six figures for their systems.
The trade-off is a hard choice. Naturally, for
average users, workstations are both impractical and cost prohibitive. Moreover,
PC hardware and software are easily obtainable, simple to configure, and widely
distributed.
Nevertheless, workstations have traditionally
been more technologically advanced than PCs. For example, onboard sound,
Ethernet, and SCSI were standard features of workstations in 1989. In fact,
onboard ISDN was integrated not long after ISDN was developed.
Differences also exist depending upon
manufacturer. For example, Silicon Graphics (SGI) machines contain special
hardware (and software) that allows them to generate eye-popping graphics. These
machines are commonly used in the entertainment industry, particularly in film.
Because of the extraordinary capabilities of the SGI product line, SGI
workstations are unrivaled in the graphics industry.
However, we are only concerned here with the
UNIX platform as it relates to the Internet. As you might guess, that
relationship is strong. As I noted earlier, the U.S. government's development of
the Internet was implemented on the UNIX platform. As such, today's UNIX system
contains within it the very building blocks of the Net. No other operating
system had ever been so expressly designed for use with the Internet.
Modern UNIX can run on a wide variety of
platforms, including IBM-compatible and Macintosh. Installation is typically
straightforward and differs little from installation of other operating systems.
Most vendors provide CD-ROM media. On workstations, installation is performed by
booting from a CD-ROM. The user is given a series of options and the remainder
of the installation is automatic. On other hardware platforms, the CD-ROM medium
is generally accompanied by a boot disk that loads a small installation routine
into memory.
Likewise, starting a UNIX system is similar to
booting other systems. The boot routine makes quick diagnostics of all existing
hardware devices, checks the memory, and starts vital system processes. In UNIX,
some common system processes started at boot include
Ř
Sendmail
(electronic mail services)
Ř
RPC
(remote procedure calls)
Ř
TCP/IP
(networking protocols)
After the system boots successfully, a login prompt is issued to the user. Here, the user provides his or her login username and password. When login is complete, the user is generally dropped into a shell environment. A shell is an environment in which commands can be typed and executed. In this respect, at least in appearance, basic UNIX marginally resembles MS-DOS. Navigation of directories is accomplished by changing direction from one to another.
UNIX supports many windowing systems. Much depends on the specific platform. For example, most companies that have developed proprietary UNIX systems have also developed their own windowing packages, either partially or completely. In general, however, all modern UNIX systems support the X Window System from the Massachusetts Institute of Technology (MIT). Whenever I refer to the X Window System in this book (which is often), I refer to it as X. I want to quickly cover X because some portions of this book require you to know about it.
In 1984, the folks at MIT founded Project Athena. Its purpose was to develop a system of graphical interface that would run on workstations or networks of disparate design. During the initial stages of research, it immediately became clear that in order to accomplish this task, X had to be hardware independent. It also had to provide transparent network access. As such, X is not only a windowing system, but a network protocol based on the client/server model.
The individuals primarily responsible for early development of X were Robert Scheifler and Ron Newman, both from MIT, and Jim Gettys of DEC. X vastly differs from other types of windowing systems (for example, Microsoft Windows), even with respect to the user interface. This difference lies mainly in a concept sometimes referred to as workbench or toolkit functionality. That is, X allows users to control every aspect of its behavior. It also provides an extensive set of programming resources. X has often been described as the most complex and comprehensive windowing system ever designed. X provides for high-resolution graphics over network connections at high speed and throughput. In short, X comprises some of the most advanced windowing technology currently available. Some users characterize the complexity of X as a disadvantage, and there is probably a bit of merit to this. So many options are available that the casual user may quickly be overwhelmed.
Users familiar with the Microsoft platform can grasp the use of X in UNIX by likening it to the relationship between DOS and Microsoft Windows 3.11. The basic UNIX system is always available as a command-line interface and remains active and accessible, even when the user enters the X environment. In this respect, X runs on top of the basic UNIX system. While in the X environment, a user can access the UNIX command-line interface through a shell window (this at least appears to function much like the MS-DOS prompt window option available in Microsoft Windows). From this shell window, the user can perform tasks, execute commands, and view system processes at work.
Users start the X Window System by issuing the following command:
startx
X can run a series of window managers. Each window manager has a different look and feel. Some of these (such as twm) appear quite bare bones and technical, while others are quite attractive, even fancy. There is even one X window manager available that emulates the Windows look and feel. Other platforms are likewise emulated, including the NeXT window system and the Amiga Workbench system.
What Kinds of Applications Run on UNIX?
Many types of applications run on UNIX. Some of these are high-performance applications for use in scientific research and artificial intelligence. I have already mentioned that certain high-level graphics applications are also common, particularly to the SGI platform. However, not every UNIX application is so specialized or eclectic. Perfectly normal applications run in UNIX, and many of them are recognizable names common to the PC and Mac communities (such as Adobe Photoshop, WordPerfect, and other front-line products).
Equally, I don't want readers to get the wrong idea. UNIX is by no means a platform that lacks a sense of humor or fun. Indeed, there are many games and amusing utilities available for this unique operating system.
Essentially, modern UNIX is much like any other platform in this respect. Window systems tend to come with suites of applications integrated into the package. These include file managers, text editors, mail tools, clocks, calendars, calculators, and the usual fare.
There is also a rich collection of multimedia software for use with UNIX, including movie players, audio CD utilities, recording facilities for digital sound, two-way camera systems, multimedia mail, and other fun things. Basically, just about anything you can think of has been written for UNIX.
UNIX in Relation to Internet Security
Because UNIX supports so many avenues of
networking, securing UNIX servers is a formidable task. This is in contrast to
servers implemented on the Macintosh or IBM-compatible platforms. The operating
systems most common to these platforms do not support anywhere close to the
number of network protocols natively available under UNIX.
Traditionally, UNIX security has been a complex
field. In this respect, UNIX is often at odds with itself. UNIX was developed as
the ultimate open system (that is, its source code has long been freely
available, the system supports a wide range of protocols, and its design is
uniquely oriented to facilitate multiple forms of communication). These
attributes make UNIX the most popular networking platform ever devised.
Nevertheless, these same attributes make security a difficult thing to achieve.
How can you allow every manner of open access and fluid networking while still
providing security?
Over the years, many advances have been made in
UNIX security. These, in large part, were spawned by governmental use of the
operating system. Most versions of UNIX have made it to the Evaluated Products
List (EPL). Some of these advances (many of which were implemented early in the
operating system's history) include
Encrypted passwords
Strong file and directory-access control
System-level authentication procedures
Sophisticated logging facilities
UNIX is used in many environments that demand
security. As such, there are hundreds of security programs available to tune up
or otherwise improve the security of a UNIX system. Many of these tools are
freely available on the Internet. Such tools can be classified into two basic
categories:
Security audit tools
System logging tools
Security audit tools tend to be programs that
automatically detect holes within systems. These typically check for known
vulnerabilities and common misconfigurations that can lead to security breaches.
Such tools are designed for wide-scale network auditing and, therefore, can be
used to check many machines on a given network. These tools are advantageous
because they reveal inherent weaknesses within the audited system. However,
these tools are also liabilities because they provide powerful capabilities to
crackers in the void. In the wrong hands, these tools can be used to compromise
many hosts.
Conversely, system logging tools are used to
record the activities of users and system messages. These logs are recorded to
plain text files or files that automatically organize themselves into one or
more database formats. Logging tools are a staple resource in any UNIX security
toolbox. Often, the logs generated by such utilities form the basis of evidence
when you pursue an intruder or build a case against a cracker. However, deep
logging of the system can be costly in terms of disk space. Moreover, many of
these tools work flawlessly at collecting data, but provide no easy way to
interpret it. Thus, security personnel may be faced with writing their own
programs to perform this task.
UNIX security is a far more difficult field
than security on other platforms, primarily because UNIX is such a large and
complicated operating system. Naturally, this means that obtaining personnel
with true UNIX security expertise may be a laborious and costly process. For
although these people aren't rare particularly, most of them already occupy key
positions in firms throughout the nation. As a result, consulting in this area
has become a lucrative business.
One good point about UNIX security is that because UNIX has been around for so long, much is known about its inherent flaws. Although new holes crop up on a fairly regular basis, their sources are quickly identified. Moreover, the UNIX community as a whole is well networked with respect to security. There are many mailing lists, archives, and online databases of information dealing with UNIX security. The same cannot be so easily said for other operating systems. Nevertheless, this trend is changing, particularly with regard to Microsoft Windows NT. There is now strong support for NT security on the Net, and that support is growing each day.
The Internet: How Big Is It?
This section requires a bit more history, and I am going to run through it rapidly. Early in the 1980s, the Internet as we now know it was born. The number of hosts was in the hundreds, and it seemed to researchers even then that the Internet was massive. Sometime in 1986, the first freely available public access server was established on the Net. It was only a matter of time--a mere decade, as it turned out--before humanity would storm the beach of cyberspace; it would soon come alive with the sounds of merchants peddling their wares.
By 1988, there were more than 50,000 hosts on the Net. Then a bizarre event took place: In November of that year, a worm program was released into the network. This worm infected numerous machines (reportedly over 5,000) and left them in various stages of disrupted service or distress (I will discuss this event in Chapter 5, "Is Security a Futile Endeavor?"). This brought the Internet into the public eye in a big way, plastering it across the front pages of our nation's newspapers.
By 1990, the number of Internet hosts exceeded 300,000. For a variety of reasons, the U.S. government released its hold on the network in this year, leaving it to the National Science Foundation (NSF). The NSF had instituted strong restrictions against commercial use of the Internet. However, amidst debates over cost considerations (operating the Internet backbone required substantial resources), NSF suddenly relinquished authority over the Net in 1991, opening the way for commercial entities to seize control of network bandwidth.
Still, however, the public at large did not advance. The majority of private Internet users got their access from providers like Delphi. Access was entirely command-line based and far too intimidating for the average user. This changed suddenly when revolutionary software developed at the University of Minnesota was released. It was called Gopher. Gopher was the first Internet navigation tool for use in GUI environments. The World Wide Web browser followed soon thereafter.
In 1995, NSF retired entirely from its long-standing position as overseer of the Net. The Internet was completely commercialized almost instantly as companies across America rushed to get connected to the backbone. The companies were immediately followed by the American public, which was empowered by new browsers such as NCSA Mosaic, Netscape Navigator, and Microsoft Internet Explorer. The Internet was suddenly accessible to anyone with a computer, a windowing system, and a mouse.
Now whole of the entire Western world is connected by the year 2001. Barring some extraordinary event to slow this path, these estimates are probably correct.
Internet is truly massive, housing hundreds of thousands of networks. Many of these run varied operating systems and hardware platforms. Well now all countries besides the United States are connected. The only question is this: What does the future hold for the Internet?
The Future
There have been many projections about where the Internet is going. Most of these projections (at least those of common knowledge to the public) are cast by marketers and spin doctors anxious to sell more bandwidth, more hardware, more software, and more hype. In essence, America's icons of big business are trying to control the Net and bend it to their will. This is a formidable task for several reasons.
One is that the technology for the Internet is now moving faster than the public's ability to buy it. For example, much of corporate America is intent on using the Internet as an entertainment medium. The network is well suited for such purposes, but implementation is difficult, primarily because average users cannot afford the necessary hardware to receive high-speed transmissions. All users are getting along with modems at speeds of 56Kbps. Other options exist, true, but they are expensive. ISDN, for example, is a viable solution only for folks with funds to spare or for companies doing business on the Net.
Other technologies, such as WebTV, offer promise. WebTV is a device that makes surfing the Net as easy as watching television. These units are easily installed, and the interface is quite intuitive. However, systems such as WebTV may bring an unwanted influence to the Net: censorship. Many of the materials on the Internet could be characterized as highly objectionable. In this category are certain forms of hard-core pornography and seditious or revolutionary material. If WebTV were to become the standard method of Internet access, the government might attempt to regulate what type of material could appear. This might undermine the grass-roots, free-speech environment of the Net.
Either way, the Internet is about to become an important part of every Indian's life. Banks and other financial institutions are now offering banking over the Internet. Within five years, this will likely replace the standard method of banking. Similarly, a good deal of trade has been taken to the Net.