In this assignment, you will use the telnet program
to experiment with text-based application protocols, including HTTP and
SMTP. In the first part, you will use the telnet
program to contact a web server and request a page. In the second part,
you will contact an SMTP server and send an email. In the third part,
you will investigate another text-based application protocol and
contact it using telnet. In each case, the server will not know that a human controls
one end of the connection; you must follow the application protocol
exactly to obtain the desired result.
In the fourth part, you will explore the use of DNS resolution tools.
Parts A, B, and C are based on experiments 3.2 and 3.3 in Hands-On Networking with
Internet Technologies by Douglas Comer (2nd edition,
2005). Part D is based on problems in chapter 2 of Computer Networking: A Top-Down Approach by Kurose & Ross (5th edition, 2010). Some discussion questions are taken from Computer Networks: A Systems Approach by Peterson & Davie (3rd edition, 2003).
Each student should complete this assignment and write it up in his or her lab notebook. However, you may discuss the material with whomever you wish. You may obtain help from anyone you wish, but you should clearly document that help.
You have one week to complete this assignment.
For each step in the laboratory assignment, either explain what you saw or answer the question.
Also include your answers to the discussion questions at the bottom.
Determine how to run the telnet program on your computer. At a minimum, telnet takes the name or address of a remote computer to connect to. In this assignment, you will also want to specify an integer port number that specifies the application on the remote computer.
Use telnet
to connect to www.cs.grinnell.edu. The HTTP
server listens for incoming connections on port 80.
Kurose & Ross give the general form of an HTTP
message and some examples of request messages. Using this information,
request the index page for the host www.cs.grinnell.edu.
Verify that the server returns an HTML document, and then
closes the connection (i.e., after displaying the text of the page, the
telnet program exits.)
What do you expect to happen if you request a web page that does not exist? Why? Try it and find out.
Try using the HEAD operation to request metainformation
about the index page for the host www.cs.grinnell.edu.
How is the server's reponse similar to its response in task 3? How is the response different? How is the HEAD operation useful?
Try making an HTTP request to delete a page. What happens?
mail.cs.grinnell.edu is running an SMTP server on port 25. Use telnet to contact the SMTP server, using mail as the name of the remote computer. The computer will respond by sending an identification.
Verify that you received the email message.
Not all SMTP servers require the HELO command to authenticate the sender. Does this server?
What do you think will happen if the RCPT TO command names a user that does not exist, such as obamabar@cs.grinnell.edu? Why? Try it and find out.
What do you think will happen if the MAIL FROM command names a user that does not exist? Why? Try it and find out.
What do you think will happen if the MAIL FROM command names a user on another domain, such as president@whitehouse.gov? Why? Try it and find out.
Identify an IRC server you can connect to. You will need to know the server's name and port number. You will also want to find the name of an IRC channel that is appropriate for experimentation (i.e., where you won't annoy the other users).
Find the most recent RFC(s) defining the Internet Relay Chat (IRC) protocol. Read about the protocol architecture and messages.
Based on what you read, make yourself a "cheat sheet" listing messages to accomplish the following tasks. Don't just write the name of the message; try to figure out what parameters you will use as well.
Using telnet,
connect to the server and port you identified. Send appropriate
messages to carry out the above tasks. (Ted Cooper '09 suggests that
you type the registration commands in a text editor and copy-paste them
into telnet.)
What is a whois database?
Use various whois databases on the Internet to obtain the names of two DNS servers. Indicate which whois databases you used.
Use nslookup on your local host to send DNS queries to three DNS servers: your local DNS server (the default) and the two DNS servers you found above. Try querying for type A, NS, and MX records. Summarize your findings.
Read the man page for the dig tool. How is it different from nslookup?
Using dig and starting with a root DNS server (from one of the root servers [a-m].root-servers.net), initiate a sequence of queries for the IP address of www.cs.grinnell.edu. Show the list of the names of DNS servers in the delegation chain in answering your query.
Repeat the previous exercise for several popular web domains, including www.google.com and en.wikipedia.org. Report on your observations.
Remember that you can use the man program to learn how to use other programs such as telnet.
You can find an index of Internet RFCs at www.rfc-editor.org.
Why do you think the HTTP protocol includes the PUT and DELETE commands? How might they be used? Do you think they are often used in practice? Why or why not?
Read about open mail relays on Wikipedia. What is an open mail relay and why is it a problem?
Are the lab workstations open mail relays? Why or why not? If you're not sure, what additional experiments would determine the answer?
How could an attacker use whois databases and nslookup or dig to perform reconnaissance before launching an attack? Should whois databases be publically available?
One feature of the existing DNS .com hierarchy is that it is extremely "wide." Propose a more hierarchical organization of the .com hierarchy. What objections might you foresee to your proposal's adoption? What might be some of the consequences of having most DNS domain names contain four or more levels, versus the two of many existing names?
How long did you spend on this assignment? What problems, if any, did you run into?
To earn a B, complete parts A , B, and D of the assignment, along with the discussion questions.
To earn an A, complete parts A, B, C, and D of the assignment, along with the discussion questions.
Janet Davis (davisjan@cs.grinnell.edu) and Mike Erlinger (mike@cs.hmc.edu)
Created Fall, 2009