|  | 
  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!
 
 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 
 
 
 
 
 
 
 | 
|---|