################################################################ ## ## ## Introduction to MIDNET ## ## ~~~~~~~~~~~~~~~~~~~~~~ ## ## Chapter Seven Of The Future Transcendent Saga ## ## ## ## A More Indepth Look Into NSFnet ## ## National Science Foundation Network ## ## ## ## Presented by Knight Lightning ## ## June 16, 1989 ## ## ## ################################################################Prologue
If you are not already familiar with NSFnet, I would suggest that you read:
"Frontiers" (Phrack Inc., Volume Two, Issue 24, File 4 of 13), and definitely;
"NSFnet: National Science Foundation Network" (Phrack Inc., Volume Three, Issue 26, File 4 of 11).
Table Of Contents
MIDNET is a regional computer network that is part of the NSFnet, the National Science Foundation Network. Currently, eleven mid-United States universities are connected to each other and to the NSFnet via MIDnet:
John Von Neuman Supercomputer Center
National Center for Atmospheric Research
Cornell National Supercomputer Facility
National Center for Supercomputing Applications
Pittsburgh Supercomputing Center
San Diego Supercomputing Center
In addition, researchers and scientists can communicate with each other over a vast world-wide computer network that includes the NSFnet, ARPAnet, CSnet, BITnet, and others that you have read about in The Future Transcendent Saga. Please refer to "Frontiers" (Phrack Inc., Volume Two, Issue 24, File 4 of 13) for more details.
MIDnet is just one of several regional computer networks that comprise the NSFnet system. Although all of these regional computer networks work the same, MIDnet is the only one that I have direct access to and so this file is written from a MIDnet point of view. For people who have access to the other regional networks of NSFnet, the only real differences depicted in this file that would not apply to the other regional networks are the universities that are served by MIDnet as opposed to:
NYSERnet in New York State
SURAnet in the southeastern United States
SEQSUInet in Texas
BARRnet in the San Francisco area
MERIT in Michigan
(There are others that are currently being constructed.)
These regional networks all hook into the NSFnet backbone, which is a network that connects the six supercomputer centers. For example, a person at Kansas State University can connect with a supercomputer via MIDnet and the NSFnet backbone. That researcher can also send mail to colleagues at the University of Delaware by using MIDnet, NSFnet and SURAnet. Each university has its own local computer network which connects on-campus computers as well as providing a means to connecting to a regional network.
Some universities are already connected to older networks such as CSnet, the ARPAnet and BITnet. In principal, any campus connected to any of these networks can access anyone else in any other network since there are gateways between the networks.
Gateways are specialized computers that forward network traffic, thereby connecting networks. In practice, these wide-area networks use different networking technology which make it impossible to provide full functionality across the gateways. However, mail is almost universally supported across all gateways, so that a person at a BITnet site can send mail messages to a colleague at an ARPAnet site (or anywhere else for that matter). You should already be somewhat familiar with this, but if not refer to;
"Limbo To Infinity" (Phrack Inc., Volume Two, Issue 24, File 3 of 13) and
"Internet Domains" (Phrack Inc., Volume Three, Issue 26, File 8 of 11)
Computer networks rely on hardware and software that allow computers to communicate. The language that enables network communication is called a protocol. There are many different protocols in use today. MIDnet uses the TCP/IP protocols, also known as the DOD (Department of Defense) Protocol Suite.
Other networks that use TCP/IP include ARPAnet, CSnet and the NSFnet. In fact, all the regional networks that are linked to the NSFnet backbone are required to use TCP/IP. At the local campus level, TCP/IP is often used, although other protocols such as IBM's SNA and DEC's DECnet are common. In order to communicate with a computer via MIDnet and the NSFnet, a computer at a campus must use TCP/IP directly or use a gateway that will translate its protocols into TCP/IP.
The Internet is a world-wide computer network that is the conglomeration of most of the large wide area networks, including ARPAnet, CSnet, NSFnet, and the regionals, such as MIDnet. To a lesser degree, other networks such as BITnet that can send mail to hosts on these networks are included as part of the Internet. This huge network of networks, the Internet, as you have by now read all about in the pages of Phrack Inc., is a rapidly growing and very complex entity that allows sophisticated communication between scientists, students, government officials and others. Being a part of this community is both exciting and challenging.
This chapter of the Future Transcendent Saga gives a general description of the protocols and software used in MIDnet and the NSFNet. A discussion of several of the more commonly used networking tools is also included to enable you to make practical use of the network as soon as possible.
The DOD Protocol Suite
The DOD Protocol Suite includes many different protocols. Each protocol is a specification of how communication is to occur between computers. Computer hardware and software vendors use the protocol to create programs and sometimes specialized hardware in order to implement the network function intended by the protocol. Different implementations of the same protocol exist for the varied hardware and operating systems found in a network.
The three most commonly used network functions are:
Mail -- Sending and receiving messages
File Transfer -- Sending and receiving files
Remote Login -- Logging into a distant computer
Of these, mail is probably the most commonly used.
In the TCP/IP world, there are three different protocols that realize these functions:
SMTP -- (Simple Mail Transfer Protocol) Mail
FTP -- (File Transfer Protocol) sending and receiving files
Telnet -- Remote login
How to use these protocols is discussed in the next section. At first glance, it is not obvious why these three functions are the most common. After all, mail and file transfer seem to be the same thing. However, mail messages are not identical to files, since they are usually comprised of only ASCII characters and are sequential in structure. Files may contain binary data and have complicated, non-sequential structures. Also, mail messages can usually tolerate some errors in transmission whereas files should not contain any errors. Finally, file transfers usually occur in a secure setting (i.e. The users who are transferring files know each other's names and passwords and are permitted to transfer the file, whereas mail can be sent to anybody as long as their name is known).
While mail and transfer accomplish the transfer of raw information from one computer to another, Telnet allows a distant user to process that information, either by logging in to a remote computer or by linking to another terminal. Telnet is most often used to remotely log in to a distant computer, but it is actually a general-purpose communications protocol. I have found it incredibly useful over the last year. In some ways, it could be used for a great deal of access because you can directly connect to another computer anywhere that has TCP/IP capabilities, however please note that Telnet is *NOT* Telenet.
There are other functions that some networks provide, including the following:
The DOD Protocol Suite is a layered network architecture, which means that network functions are performed by different programs that work independently and in harmony with each other. Not only are there different programs but there are different protocols. The protocols SMTP, FTP and Telnet are described above. Protocols have been defined for getting the current time, the quote of the day, and for translating names. These protocols are called applications protocols because users directly interact with the programs that implement these protocols.
The Transmission Control Protocol, TCP, is used by many of the application protocols. Users almost never interact with TCP directly. TCP establishes a reliable end-to-end connection between two processes on remote computers. Data is sent through a network in small chunks called packets to improve reliability and performance. TCP ensures that packets arrive in order and without errors. If a packet does have errors, TCP requests that the packet be retransmitted.
In turn, TCP calls upon IP, Internet Protocol, to move the data from one network to another. IP is still not the lowest layer of the architecture, since there is usually a "data link layer protocol" below it. This can be any of a number of different protocols, two very common ones being X.25 and Ethernet.
FTP, Telnet and SMTP are called "application protocols", since they are directly used by applications programs that enable users to make use of the network. Network applications are the actual programs that implement these protocols and provide an interface between the user and the computer. An implementation of a network protocol is a program or package of programs that provides the desired network function such as file transfer. Since computers differ from vendor to vendor (e.g. IBM, DEC, CDC), each computer must have its own implementation of these protocols. However, the protocols are standardized so that computers can interoperate over the network (i.e. Can understand and process each other's data). For example, a TCP packet generated by an IBM computer can be read and processed by a DEC computer.
In many instances, network applications programs use the name of the protocol. For example, the program that transfers files may be called "FTP" and the program that allows remote logins may be called "Telnet." Sometimes these protocols are incorporated into larger packages, as is common with SMTP. Many computers have mail programs that allow users on the same computer to send mail to each other. SMTP functions are often added to these mail programs so that users can also send and receive mail through a network. In such cases, there is no separate program called SMTP that the user can access, since the mail program provides the user interface to this network function.
Specific implementation of network protocols, such as FTP, are tailored to the computer hardware and operating system on which they are used. Therefore, the exact user interface varies from one implementation to another. For example, the FTP protocol specifies a set of FTP commands which each FTP implementation must understand and process. However, these are usually placed at a low level, often invisible to the user, who is given a higher set of commands to use.
These higher-level commands are not standardized so they may vary from one implementation of FTP to another. For some operating systems, not all of these commands make equal sense, such as "Change Directory," or may have different meanings. Therefore the specific user interface that the user sees will probably differ.
This file describes a generic implementation of the standard TCP/IP application protocols. Users must consult local documentation for specifics at their sites.
Names and Addresses In A Network
In DOD Protocol Suite, each network is given a unique identifying number. This number is assigned by a central authority, namely the Network Information Center run by SRI, abbreviated as SRI-NIC, in order to prevent more than one network from having the same network number. For example, the ARPAnet has network number 10 while MIDnet has a longer number, namely 128.242.
Each host in a network has a unique identification so other hosts can specify them unambiguously. Host numbers are usually assigned by the organization that manages the network, rather than one central authority. Host numbers do not need to be unique throughout the whole Internet but two hosts on the same network need to have unique host numbers.
The combination of the network number and the host number is called the IP address of the host and is specified as a 32-bit binary number. All IP addresses in the Internet are expressible as 32-bit numbers, although they are often written in dotted decimal notation. Dotted decimal notation breaks the 32-bit number into four eight-bit parts or octets and each octet is specified as a decimal number. For example, 00000001 is the binary octet that specifies the decimal number 1, while 11000000 specifies 192. Dotted decimal notation makes IP addresses much easier to read and remember.
Computers in the Internet are also identified by hostnames, which are strings of characters, such as "phrackvax." However, IP packets must specify the 32-bit IP address instead of the hostname so some way to translating hostnames to IP addresses must exist.
One way is to have a table of hostnames and their corresponding IP addresses, called a hosttable. Nearly every TCP/IP implementation has such a hosttable, although the weaknesses of this method are forcing a shift to a new scheme called the domain name system. In UNIX systems, the hosttable is often called "/etc/hosts." You can usually read this file and find out what the IP addresses of various hosts are. Other systems may call this file by a different name and make it unavailable for public viewing.
Users of computers are generally given accounts to which all charges for computer use are billed. Even if computer time is free at an installation, accounts are used to distinguish between the users and enforce file protections. The generic term "username" will be used in this file to refer to the name by which the computer account is accessed.
In the early days of the ARPAnet which was the first network to use the TCP/IP protocols, computer users were identified by their username, followed by a commercial "at" sign (@), followed by the hostname on which the account existed. Networks were not given names, per se, although the IP address specified a network number.
For example, "knight@phrackvax" referred to user "knight" on host "phrackvax." This did not specify which network "phrackvax" was on, although that information could be obtained by examining the hosttable and the IP address for "phrackvax." (However, "phrackvax" is a ficticious hostname used for this presentation.)
As time went on, every computer on the network had to have an entry in its hosttable for every other computer on the network. When several networks linked together to form the Internet, the problem of maintaining this central hosttable got out of hand. Therefore, the domain name scheme was introduced to split up the hosttable and make it smaller and easier to maintain.
In the new domain name scheme, users are still identified by their usernames, but hosts are now identified by their hostname and any and all domains of which they are a part. For example, the following address, "KNIGHT@UMCVMB.MISSOURI.EDU" specifies username "KNIGHT" on host "UMCVMB". However, host "UMCVMB" is a part of the domain "MISSOURI" " which is in turn part of the domain "EDU". There are other domains in "EDU", although only one is named "MISSOURI". In the domain "MISSOURI", there is only one host named "UMCVMB".
However, other domains in "EDU" could theoretically have hosts named "UMCVMB" (although I would say that this is rather unlikely in this example). Thus the combination of hostname and all its domains makes it unique. The method of translating such names into IP addresses is no longer as straightforward as looking up the hostname in a table. Several protocols and specialized network software called nameservers and resolvers implement the domain name scheme.
Not all TCP/IP implementations support domain names because it is rather new. In those cases, the local hosttable provides the only way to translate hostnames to IP addresses. The system manager of that computer will have to put an entry into the hosttable for every host that users may want to connect to. In some cases, users may consult the nameserver themselves to find out the IP address for a given hostname and then use that IP address directly instead of a hostname.
I have selected a few network hosts to demonstrate how a host system can be specified by both the hostname and host numerical address. Some of the nodes I have selected are also nodes on BITnet, perhaps even some of the others that I do not make a note of due a lack of omniscent awareness about each and every single host system in the world :-)
Numerical Hostname Location BITnet --------- -------- -------- ------ 220.127.116.11 ATHENA.MIT.EDU (Mass. Institute of Technology) ? 18.104.22.168 SRI-NIC.ARPA (DDN Network Information Center) - 22.214.171.124 MACBETH.STANFORD.EDU (Stanford University) ? 126.96.36.199 PORTIA.STANFORD.EDU (Stanford University) ? 188.8.131.52 ANDREW.CMU.EDU (Carnegie Mellon University) ANDREW 184.108.40.206 LBL.GOV (Lawrence Berkeley Labrotories) LBL 220.127.116.11 RUTGERS.RUTGERS.EDU (Rutgers University) ? 18.104.22.168 CUCARD.MED.COLUMBIA.EDU (Columbia University) ? 22.214.171.124 AMES.ARC.NASA.GOV (Ames Research Center [NASA]) - 126.96.36.199 HARVARD.EDU (Harvard University) HARVARD 188.8.131.52 HUB.UCSB.EDU (Univ. Of Calif-Santa Barbara) ? 184.108.40.206 LLL-WINKEN.LLNL.GOV (Lawrence Livermore Labratories) - 220.127.116.11 UVAARPA.VIRGINIA.EDU (University of Virginia) ? 18.104.22.168 BROWNVM.BROWN.EDU (Brown University) BROWN 22.214.171.124 UKCC.UKY.EDU (University of Kentucky) UKCC 126.96.36.199 NSSDCA.GSFC.NASA.GOV (Goddard Space Flight Center [NASA])- 188.8.131.52 RAI.CC.FSU.EDU (Florida State University) FSU 184.108.40.206 UMCVMB.MISSOURI.EDU (Univ. of Missouri-Columbia) UMCVMB 220.127.116.11 MAX.ACS.WASHINGTON.EDU (University of Washington) MAX 18.104.22.168 CUNYVM.CUNY.EDU (City University of New York) CUNYVM 22.214.171.124 NUHUB.ACS.NORTHEASTERN.EDU (Northeastern University) NUHUB 126.96.36.199 UMRVMA.UMR.EDU (University of Missouri-Rolla) UMRVMA 188.8.131.52 SUN.COM (Sun Microsystems, Inc.) - 184.108.40.206 VM1.NODAK.EDU (North Dakota State Univ.) NDSUVM1 220.127.116.11 PLAINS.NODAK.EDU (North Dakota State Univ.) NDSUVAXPlease Note:
Not every system on BITnet has an IP address. Likewise, not every system that has an IP address is on BITnet. Also, while some locations like Stanford University may have nodes on BITnet and have hosts on the IP as well, this does not neccessarily imply that the systems on BITnet and on IP (the EDU domain in this case) are the same systems.
Attempts to gain unauthorized access to systems on the Internet are not tolerated and is legally a federal offense. At some hosts, they take this very seriously, especially the government hosts such as NASA's Goddard Space Flight Center, where they do not mind telling you so at the main prompt when you connect to their system.
However, some nodes are public access to an extent. The DDN Network Information Center can be used by anyone. The server and database there have proven to be an invaluable source of information when locating people, systems, and other information that is related to the Internet.
Remote login refers to logging in to a remote computer from a terminal connected to a local computer. Telnet is the standard protocol in the DOD Protocol Suite for accomplishing this. The "rlogin" program, provided with Berkeley UNIX systems and some other systems, also enables remote login.
For purposes of discussion, the "local computer" is the computer to which your terminal is directly connected while the "remote computer" is the computer on the network to which you are communicating and to which your terminal is *NOT* directly connected.
Since some computers use a different method of attaching terminals to computers, a better definition would be the following: The "local computer" is the computer that you are currently using and the "remote computer" is the computer on the network with which you are or will be communicating. Note that the terms "host" and "computer" are synonymous in the following discussion.
To use Telnet, simply enter the command: TELNET
The prompt that Telnet gives is: Telnet>
(However, you can specify where you want to Telnet to immediately and bypass the the prompts and other delays by issuing the command: TELNET [location].)
There is help available by typing in ?. This prints a list of all the valid subcommands that Telnet provides with a one-line explanation.
To connect to to another computer, use the open subcommand to open a connection to that computer. For example, to connect to the host "UMCVMB.MISSOURI.EDU", do "open umcvmb.missouri.edu"
Telnet will resolve (i.e. Translate, the hostname "umcvmb.missouri.edu" into an IP address and will send a packet to that host requesting login. If the remote host decides to let you attempt a login, it prompts you for your username and password. If the host does not respond, Telnet will "time out" (i.e. Wait for a reasonable amount of time such as 20 seconds) and then terminate with a message such as "Host not responding."
If your computer does not have an entry for a remote host in its hosttable and it cannot resolve the name, you can use the IP address explicitly in the telnet command. For example,
TELNET 18.104.22.168 (Note: This is the IP address for the DDN Network Information Center [SRI-NIC.ARPA])
If you are successful in logging in, your terminal is connected to the remote host. For all intents and purposes, your terminal is directly hard-wired to that host and you should be able to do anything on your remote terminal that you can do at any local terminal. There are a few exceptions to this rule, however.
Telnet provides a network escape character, such as CONTROL-T. You can find out what the escape character is by entering the "status" subcommand:
You can change the escape character by entering the "escape" subcommand:
When you type in the escape character, the Telnet prompt returns to your screen and you can enter subcommands. For example, to break the connection, which usually logs you off the remote host, enter the subcommand "quit":
Your Telnet connection usually breaks when you log off the remote host, so the "quit" subcommand is not usually used to log off.
When you are logged in to a remote computer via Telnet, remember that there is a time delay between your local computer and the remote one. This often becomes apparent to users when scrolling a long file across the terminal screen nd they wish to cancel the scrolling by typing CONTROL-C or something similar. After typing the special control character, the scrolling continues. The special control character takes a certain amount of time to reach the remote computer which is still scrolling information. Thus response from the remote computer will not likely be as quick as response from a local computer.
Once you are remotely logged on, the computer you are logged on to effectively becomes your "local computer," even though your original "local computer" still considers you logged on. You can log on to a third computer which would then become your "local computer" and so on. As you log out of each session, your previous session becomes active again.
FTP is the program that allows files to be sent from one computer to another. "FTP" stands for "File Transfer Protocol".
When you start using FTP, a communications channel with another computer on the network is opened. For example, to start using FTP and initiate a file transfer session with a computer on the network called "UMCVMB", you would issue the following subcommand:
Host "UMCVMB" will prompt you for an account name and password. If your login is correct, FTP will tell you so, otherwise it will say "login incorrect." Try again or abort the FTP program. (This is usually done by typing a special control character such as CONTROL-C. The "program abort" character varies from system to system.)
Next you will see the FTP prompt, which is:
There are a number of subcommands of FTP. The subcommand "?" will list these commands and a brief description of each one.
You can initiate a file transfer in either direction with FTP, either from the remote host or to the remote host. The "get" subcommand initiates a file transfer from the remote host (i.e. Tells the remote computer to send the file to the local computer [the one on which you issued the "ftp" command]). Simply enter "get" and FTP will prompt you for the remote host's file name and the (new) local host's file name. Example:
Remote file name?
local file name?
ou can abbreviate this by typing both file names on the same line as the "get" subcommand. If you do not specify a local file name, the new local file will be called the same thing as the remote file. Valid FTP subcommands to get a file include the following:
get theirfile myfile
The "put" subcommand works in a similar fashion and is used to send a file from the local computer to the remote computer. Enter the command "put" and FTP will prompt you for the local file name and then the remote file name. If the transfer cannot be done because the file doesn't exist or for some other reason, FTP will print an error message.
There are a number of other subcommands in FTP that allow you to do many more things. Not all of these are standard so consult your local documentation or type a question mark at the FTP prompt. Some functions often built into FTP include the ability to look at files before getting or putting them, the ability to change directories, the ability to delete files on the remote computer, and the ability to list the directory on the remote host.
An intriguing capability of many FTP implementations is "third party transfers." For example, if you are logged on computer A and you want to cause computer B to send a file to computer C, you can use FTP to connect to computer B and use the "rmtsend" command. Of course, you have to know usernames and passwords on all three computers, since FTP never allows you to peek into someone's directory and files unless you know their username and password.
The "cd" subcommand changes your working directory on the remote host. The "lcd" subcommand changes the directory on the local host. For UNIX systems, the meaning of these subcommands is obvious. Other systems, especially those that do not have directory-structured file system, may not implement these commands or may implement them in a different manner.
The "dir" and "ls" subcommands do the same thing, namely list the files in the working directory of of the remote host.
The "list" subcommand shows the contents of a file without actually putting it into a file on the local computer. This would be helpful if you just wanted to inspect a file. You could interrupt it before it reached the end of the file by typing CONTROL-C or some other special character. This is dependent on your FTP implementation.
The "delete" command can delete files on the remote host. You can also make and remove directories on the remote host with "mkdir" and "rmdir". The "status" subcommand will tell you if you are connected and with whom and what the state of all your options are.
If you are transferring binary files or files with any non-printable characters, turn binary mode on by entering the "binary" subcommand:
To resume non-binary transfers, enter the "ascii" subcommand.
Transferring a number of files can be done easily by using "mput" (multiple put) and "mget" (multiple get). For example, to get every file in a particular directory, first issue a "cd" command to change to that directory and then an "mget" command with an asterisk to indicate every file:
When you are done, use the "close" subcommand to break the communications link. You will still be in FTP, so you must use the "bye" subcommand to exit FTP and return to the command level. The "quit" subcommand will close the connection and exit from FTP at the same time.
Mail is the simplest network facility to use in many ways. All you have to do is to create your message, which can be done with a file editor or on the spur of the moment, and then send it. Unlike FTP and Telnet, you do not need to know the password of the username on the remote computer. This is so because you cannot change or access the files of the remote user nor can you use their account to run programs. All you can do is to send a message.
There is probably a program on your local computer which does mail between users on that computer. Such a program is called a mailer. This may or may not be the way to send or receive mail from other computers on the network, although integrated mailers are more and more common. UNIX mailers will be used as an example in this discussion.
Note that the protocol which is used to send and receive mail over a TCP/IP network is called SMTP, the "Simple Mail Transfer Protocol." Typically, you will not use any program called SMTP, but rather your local mail program.
UNIX mailers are usually used by invoking a program named "mail". To receive new mail, simply type "mail".
There are several varieties of UNIX mailers in existence. Consult your local documentation for details. For example, the command "man mail" prints out the manual pages for the mail program on your computer.
To send mail, you usually specify the address of the recipient on the mail command. For example: "mail firstname.lastname@example.org" will send the following message to username "knight" on host "umcvmb".
You can usually type in your message one line at a time, pressing RETURN after each line and typing CONTROL-D to end the message. Other facilities to include already-existing files sometimes exist. For example, Berkeley UNIXes allow you to enter commands similar to the following to include a file in your current mail message:
In this example, the contents of "myfile" are inserted into the message at this point.
Most UNIX systems allow you to send a file through the mail by using input redirection. For example:
mail email@example.com < myfile
In this example, the contents of "myfile" are sent as a message to "knight" on "umcvmb."
Note that in many UNIX systems the only distinction between mail bound for another user on the same computer and another user on a remote computer is simply the address specified. That is, there is no hostname for local recipients. Otherwise, mail functions in exactly the same way. This is common for integrated mail packages. The system knows whether to send the mail locally or through the network based on the address and the user is shielded from any other details.
"The Quest For Knowledge Is Without End..."