COMP 332: Computer Networks
Sections 1 and 2, Spring 2019
         Home Schedule Policies Resources         

Required textbook

Readings will be assigned from this book. Used copies should be easily found on Amazon.

Computer Networking: A Top-Down Approach:
7th Edition (2016), by James F. Kurose and Keith W. Ross
Interactive exercises and online resources.

Other good references

Computer Networking: Principles, Protocols, and Practice
2nd Edition (2015) By Olivier Bonaventure - Free download!

Internet Measurement: Infrasructure, Traffic and Applications
3rd Edition (2014), by Brandon Rhodes and John Goerzen

Computer Networks: A Systems Approach
5th Edition (2011), By Larry L. Peterson and Bruce S. Davie

Computer Networks
5th Edition (2010), By Andrew S. Tannebaum and David J. Wetherall


Your environment

You will need access to a Unix/Linux-based machine: this will enable you to easily use the network tools we discuss. If you do not have a laptop, or use Windows but do not wish to create a virtual machine, then one option is to use a lab computer since they use Mac OS which is Unix-based. Since the computers are wiped daily, you should make sure to copy any files saved there back to your Wesleyan file directory, email them to yourself, or save them to a USB stick.

Linux or Mac OS
Open a terminal and you should be all set for the beginning part of the class.

Windows
The preferred option is to create a Linux Virtual Machine (VM) using VirtualBox. If you find you are having trouble doing this, please bring your laptop to my office and we will set it up together.
  • Step 1. Download and install the most recent version of VirtualBox. VirtualBox is virtualization software that runs on your computer and permits you to run a virtual computer on your computer, in your case, a computer running Linux rather than Windows. You should read the beginning of Chapter 1 (First Steps)
    before continuing.

  • Step 2. Download a linux iso. Go to the Ubuntu website and download a this 64-bit version: ubuntu-16.04.3-desktop-amd64.iso

  • Step 3. Create your linux virtual machine following the instructions here and choosing the following options.

    Type: Linux
    Version: Ubuntu (64-bit)
    Memory size: 1024 MB
    Create a virtual hard disk now: create
    VDI (VirtualBox Disk Image)
    Statically allocated
    File location and size: 20 GB

  • Step 4. I recommend also installing guest additions to make using your virtual machine easier. Follow the instructions here.


Installing Python

Very likely python is already installed on your machine: check by typing "python --version" in a terminal. We'll be using Python 3.x. If Python 3.x is installed, you should be able to type python3 in a terminal.

If you need to install Python 3, you can download it from here: here. Alternatively, on ubuntu linux you can use the command "sudo apt-get install python3".

A better python command line shell is ipython which e.g., permits tab auto-completion of object functions. You may wish to instead download the anaconda distribution which contains many useful packages/modules in addition to ipython as well as python.


Python and Socket Programming

Python 3 tutorial

Another Python 3 tutorial

Python 3 sockets

Raw sockets

UTF-8 (Unicode Transformation Format - 8 bit): wikipedia, python

Bitwise operators: python

Struct module which is useful for creating packet headers: python

Regular expressions (more effective ways to search and manipulate strings): python


Network tools

Wireshark

tcpdump

traceroute

ping

netcat

ssh

lookup ip address: dig

netstat

route

list interfaces: ifconfig

list processes: ps

kill a process: kill



Editors

Vim tutorial

Another vim tutorial

Emacs tutorial

Atom tutorial

Make your editor work nicely with python: Vim, Emacs , Eclipse

Python style guide


Unix/Linux

Unix tutorial Commands