#! /usr/bin/perl use strict; use CGI; my $cgi = new CGI; my $file = $ENV{DOCUMENT_URI}; $file =~ s|^/||; $| = 1; # turn off output buffering and print out content header print "Content-type: text/html\n\n"; # Set our variables from the CGI my %vars; $vars{background} = $cgi->param('background') || "#119511"; $vars{root} = $cgi->param('root') || $file =~ m|^(~[^/]+/?)|?"/$1":"/"; $vars{title} = $cgi->param('title') || "CTL"; $vars{separator} = $cgi->param('separator') || ' => '; #################################### #Create the title bar #Process the beginning of the header my $header = "\n" . $vars{title} . ''; #don't process the file's name my @components = split('/', $file); my $tail = pop @components; if ($tail =~ m|index\.s?html?|i) { $tail = pop @components; } #If this is in a home directory, we've already added that in. shift @components if $file =~ m|^~|; #build the inbetween stuff my $path; foreach my $foo (@components) { next if $foo !~ /\S/; $path .= "$foo/"; my $newfoo = ucfirst $foo; $newfoo =~ s|_| |go; $newfoo =~ s|\.s?html?$||gio; $header .= "$vars{separator} $newfoo "; } #Add on the name of the file if ($tail ne '') { $tail =~ s|\.s?html?||io; $tail =~ s|_| |go; $tail = ucfirst $tail; $header .= "$vars{separator} $tail "; } #################### #Get the URLs right $header =~ s|//|/|go; $header =~ s|tp:/(?!/)|tp://|gio; $header .= "\n"; #and finally print the thing. print $header;


Yes, yes, I know. Please, give me time.

There are many different kinds of networks. According to gdict, the definition of a network is

Network Net"work`, n.
  1. A fabric of threads, cords, or wires crossing each other at certain intervals, and knotted or secured at the crossings, thus leaving spaces or meshes between them.
  2. Any system of lines or channels interlacing or crossing like the fabric of a net; as, a network of veins; a network of railroads.
As you can see, a network can be all sorts of things. Within the realm of computers, a network is generally some sort of interconnection between computers. While the type most likely to be referred to as a network is usually a permanent connection (that can transmit data at relatively high speeds), any sort of connection can be called a network. Running floppy disks between computers is occasionally called a sneakernet.

For the duration of our discussions of networks, we will concentrate primarily on networks that are (at least relatively) permanently connected.

Terminology & Concepts

Pipe (band)

This is the connection that one's computer has to the other computers on the network. Examples of this would be a modem connection or ethernet cable.

Band is less commonly used, but influences terminology in other ways. The term band refers to a range of frequencies which are being used for a particilar communication in radio (and other EMR) communications. The larger the band (or range of frequencies), the more data can be pushed through it. Thus comes our next term:


Bandwidth refers to the amount of data that you can push through your pipe in a given amount of time. The most commonly used time interval is a second. Generally the amount of data is measured in bits rather than bytes because it makes the numbers bigger (there are also a few historical reasons). Thus a modem may have a bandwidth of 57.6 kilobits per second, abbreviated kbps or kb/s. An ethernet connection might be 10 or 100 megabits per second (Mbps or Mb/s) or possibly even 1 gigabit per second (Gbps or Gb/s).

It should be noted that bandwidth to a hard drive is usually measured in megabytes per second, rather than bits, again for some historical reasons that I am not familiar with. This is just something to keep in mind - always be sure of the units associated with any numbers that you see.

One other important note is that bandwidth can be used fairly interchangeably with the term pipe to refer to the actual connection. Thus you can call sharing a network connection sharing bandwidth.


It is common to break the data that one computer is sending another into pieces. These pieces are generally called packets. This is done principally to make sharing bandwidth easier. Of course, bandwidth only needs to be shared when more than two computers are communicating (or might be communicating). If one knows ahead of time that only two computers will be communicating, packets are just a waste of time and space and thus are normally not used. More will be said about this in the discussion of protocols.


A protocol in networks is much like protocol in other areas - etiquette or formulaic actions necessary to be properly understood. In networking, a protocol is a definition of how two (or more) computers will communicate so that when they do they will understand each other.

Protocols are discussed further on the protocols page

Important Aspects From a Programmer's Perspective