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 Networks. If time permits, to also 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 and Networks. As well, go through chapters 11 (HTTP-424:426, Email-416:419, VOIP-416:419 and VOIP-421:423). 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?
- 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.
The following questions are for discussion:
- 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?
- How is mail transmitted from a sender to a receiver? What protocols are used? Discuss how an SMTP session works.
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 18.104.22.168... 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. Subversion is a centralized version control system - also called source control management (SCM) system - used for managing changes to documents, source code and other files. The documents and their revisions are stored in a repository on a central server, and users check out working copies of the repository to make changes on their local machines. 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.
Image source: http://www.infoq.com/articles/DVCS-Enterprise
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).
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 checkout
Checking out a working copy of your assignment repositoryWe now create a working copy of your assignment repository, which is where you will do all work related to assignment 1. We do this as follows:
svn checkout --username your-uni-id https://svn.anu.edu.au/NIS/A1GrpXX
Note: XX is your group numberThis will create a directory called A1GrpXX under our home folder.
Do some workMake this our current directory by:
svn add test
svn commit test
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.