COMP 332: Computer Networks
Spring 2023
         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:
8th Edition (2020), 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 are using Windows, then I recommend creating a virtual machine. Note that everyone will eventually need to create a virutal machine as we will use it for a homework.

Creating a virutal machine

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. If you are using MacOS with the new M1 chips you will not be able to use VirtualBox. Instead, I recommend UTM .
  • 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