Homework 2

The purpose of this homework is to expand upon homework 1 and familiarize you further with running in Linux. The two things you should walk away with after doing this homework are:

1) A basic familiarity with networking in Linux.
2) You should be able to use Linux/Unix as a desktop system (and if you do it on a regular basis you will pick up a lot more experience with using and administering a Linux system).

For your homework, send in your answers via email (the sysadmin one, not my or Eleen's personal address). The subject should be "Homework 1", the first line should be your name, the second line your SID, followed by a blank line, and then your homework answers. An example is below:

Subject: Homework 2
Randy Chung
12345678

1. The answer is...

The homework breaks down as follows: Everybody is required to do part 1 (basic commands). Those of you who feel up to the challenge (and would like the extra practice), feel free to try part 2. At least attempting part 2 is strongly recommended. Part 2 is not meant to be impossible, and shouldn't take more than an hour or two to complete. Even if you can't finish it, send me a partial response. If I get some particularly creative or cleanly written examples I'll post them up and briefly talk about them during the next course meeting. If yours isn't selected it's not because yours wasn't done well, but simply because of time constraints (i.e. don't feel bad).

Part 1a: Networking

1. What do the following stand for, and what are their purposes: DNS, TCP/IP, ICMP, ARP
2. What is the ping utility for? What about traceroute? (random trivia: traceroute was developed at Berkeley)
3. You are given the following situation: You try to go to a website, and it gives you and error telling you the host could not be found. You know the website is up and running, there are no firewall problems, and you've essentially isolated it to your computer. You know that the network is working because you can communicate with other computers using IP addresses (assume you're geeky enough to have some memorized). What is probably broken? How do you fix it?
4. What is the /etc/hosts file for? What happens if you add incorrectly entered entries into it (not malformed, but wrong information)? For Windows users, this file is in c:\windows\system32\drivers\etc\hosts. If you've gotten some nastier viruses (sidenote: it's not "virii"), you might know firsthand what happens when that file becomes corrupted.
5. Give an example (e.g. something you'd enter at a command line, or a natural language description) of a way you could sync files between two computers.
6. What is IPv6 and what was it made for? What is the standard currently in use?

Part 1b: Linux Desktop Applications

These must be Linux/BSD apps1. Name an application from each of the following categories: web browser, mail client, IM client, CD writer, DVD writer (can be the same as the CD writer if the software supports it), terminal, music (MOD, MP3, Vorbis, etc.) player, movie player (can be the same as the music player if it does everything), and an application from a category of your choice (name the category too)
2. Some people argue that Linux is ready for the desktop; others say it isn't. Based on your experience, what do you think? Write down thoughts on usability, how intuitive it is, ease of installation, interoperability, and any other issues that you think are important. Do the benefits outweigh the costs? This is an opinion question; so long as your answer is reasonable you will get credit.
3. If you could change any two (or more) things about using/installing Linux, what would they be and why? (This is another opinion question)

Part 2a: More Networking

1. What are sockets and ports and what are they used for?
2. Write a one line command to make a gzipped tarball (see the man pages for both gzip and tar) and send it over an ssh connection. You might want to review pipes and redirection (e.g. |, >, etc.)
3. Can you expand the answer from question 2 to automatically extract the tarball on the remote computer as well?

Part 2b: Linux More Desktop Applications

1. Pick a Linux distribution and describe its software management utility. Examples include Debian's apt, Fedora's yum, and Gentoo's Portage. Pick another distribution and compare and contrast their respective utilities. *BSD are acceptable for this question as well (e.g. FreeBSD's ports system)
2. Critique the utility you picked first in question 1. What are its technical merits? Its flaws? What are its usability merits? Its flaws? Try to be as detailed as possible in your review of it. Would you recommend it to your friend? Why or why not?

Good luck!