Laboratory 2 - Networks
The aim of this lab is to discuss the material covered in the lectures on the Application Layer Protocols HTTP, SMTP, MIME and VOIP, and those on Application Architectures and Networks, and to get some hands on experience with some linux networking commands and subversion, which is required for submitting your assignments.
Please go through the slides for the lectures on Application Layer Protocols, Application Architectures and Networks. As well, go through chapters 11 (HTTP-424:426, Email-416:419, VOIP-416:419, VOIP-421:423 and Cloud Computing-427:435), and the required reading for the first lecture of Roger Clarke. Note down any questions that you may have and bring it up at the end of the discussion session.
You should be able to answer the following questions, if you have gone through the slides and the relevant reading material:
- What approaches are taken by browsers to decide whether or not to use a cached page?
- How is mail transmitted from a sender to a receiver? What protocols are used? Discuss how an SMTP session works.
- What is MIME and why is it useful?
- What are the roles of SIP and RTP in VOIP?
- Discuss the advantages and disadvantages of using forward, open and reverse proxies.
- Are there any privacy/security issues with using a proxy?
- What are some categories of NIS (Networked Information Systems) that used client-server and P2P architectures?
The following questions are for discussion:
- What are some of the risks of using cloud based services?
- Why is caching useful? Can all pages be cached? What are some of the limitations?
- Why are cookies useful? What are some of the security implications? What can you do to protect yourself?
- Discuss some of the advantages and disadvantages of P2P.
Linux Networking Commands
Using telnet to send mail
In this part, you will use telnet to send mail to either yourself or to your fellow student sitting next to you in the lab.
Run the following commands:
telnet mail.anu.edu.au 25Telnet will respond with:
Trying 184.108.40.206... Connected to mail.anu.edu.au. Escape character is '^]'. 220 mailin1.anu.edu.au ESMTP PostfixYou then send a HELO
HELO (followed by your machine name or some greeting)The response is:
250 mailin1.anu.edu.auSend the sender and recipient email addresses, one after the other.
MAIL FROM:<your email address>The response is:
250 2.1.0 OkYou send:
RCPT TO:<your email address or your friends email address>The response is:
250 2.1.5 OkYou send:
DATAThe response is:
354 End data with <CR><LF>.<CR><LF>Type in your message header, followed by a blank line, then your message body, followed by a '.' in a line by itself. For example:
From: "Your name" <your email address> To: "Your friends name" <friends email address> Subject: <subject title> Message content, as appropriate .The server responds with:
250 2.0.0 Ok: queued as <some number>This indicates that the message has been queued for delivery. You then type:
quitto end the telnet session. Ask you friend to check their mail, to see if the mail that you sent has arrived.
The route command
Run the following command:
route -nHow many interfaces are there? Do you understand the different parts of the output? Use the man page to figure out the output.
As subversion is going to be used to submit your assignments, you will need to become familiar with this tool. Do the following exercises. Do not worry if you don't complete all of them in the lab. You can try them later at home or in the next lab. You only really need to know how to checkout a repository, add your files and do a commit. You may find it easier to use a GUI based subversion client than by typing in the commands in a terminal. The following exercises give you a good grounding in using subversion (perhaps more than what is required).
Version control (or revision control) refers to the management of changes to information stored as computer files. Various types of information can be put under version control such as computer programs, documents and configuration files. It is really useful to use a version control tool for all your work, be it work done by yourself or in a group. It allows you to track changes and revert to earlier versions, when required. It is essential for collaborative projects. Please go through the wikipedia page on version control.
In this exercise we will use the Subversion version control system to demonstrate the advantages of using version control in your daily work. Read the Red Bean Book for a very good introduction to Subversion. In particular, read the first two chapters.
Subversion is already installed on the student system. Log on to the system using your uni ID and password. Open a terminal window. We will use command line to type subversion commands. The Subversion command line client is called svn. Type:
svn help import
Creating a repository
Svn stores its files in repositories. We will first create a directory called svn under which we will store all our repositories. To do this, make sure that you are in your home directory and then type:
svnadmin create svn/comp2410
Creating a working copy and doing some workWe now need to create a working copy of this directory, which is where we will do all our comp2410 related work. We do this as follows:
svn checkout file:///students/uxxxxxxx/svn/comp2410
mkdir -p labs/lab1
svn add labs
svn commit labs
Making changes and recovery
Change one of the files. Use the svn diff command to see your changes. Commit this file.
Change the other file. Now, use the svn revert command to go back to the last committed version of the file.
Delete one of the files. Now, use the svn update command to get back the deleted file. Note that this can work at the directory level as well.
Use the svn log command to get a log of the changes committed to the repository. You can use svn log test1 to look at the changes for test1. The version numbers are also listed in the log. Use svn update -r to revert to a particular revision of a file. Run svn help update to get the documentation for the update command.
Try some other commands listed in Chapter 2 of the Red Bean Book. Place some of your own files under version control. You can use the svn import command to bring existing directories under version control. Chapter 2 of the book has an example.
Using a GUI based svn clientYou can use a GUI based client for this purpose, instead of entering commands using a terminal. Some of the popular GUI clients for different operating systems are detailed in the Assignments page. The one that you can use in your lab is rapidSVN. Look under "Applications/Programming" to find this application. Use it to do some of the above tasks.
Windows commands and their Linux equivalents
For those who are a little rusty on Windows or Linux, the following table lists Windows commands and their Linux equivalent.