Computer Networks

COS 461, Princeton University Spring 2016

This course studies computer networks and the services built on top of them. Topics include packet switching, routing and flow control, congestion control and quality-of-service, Internet protocols (IP, TCP, BGP), network security, network management, software defined networking, and the design of network services (multimedia, file, and web servers).

Logistics

Contact:
Prof. Nick Feamster
310 Sherrerd Hall
<my last name>@cs.princeton.edu

TAs:
Arpit Gupta
Ronaldo Ferreira
Mina Tahmasbi Arashloo

Lab TAs: Cody Wilson

Class Location and Time:
Lectures: Mondays and Wednesdays, 10:00 am-10:50 am, Betts Auditorium (Architecture)
Precepts: 10:00a (Friend 004), 11:00a (Friend 004), 1:30p (Friend 004)

Office Hours (subject to change; check Piazza for updates):
Nick: Monday 11a-12p, Wednesday 5-6p (Sherrerd 310)
Ronaldo: Tuesday 9:30-11:30 (Friend Center Basement Lab)
Arpit: Fridays 3p-5p in Sherrerd Hall Third Floor Lounge
Mina: Thursday 10a-12p (Friend Center Basement Lab)

Course Format

The course will meet twice a week for 50-minute lectures. Additionally, there will be one precept per week.

Assignments for the course will be lab-based programming assignments.

Recommended Background

Prerequisite: COS 217. Although not required, taking either COS 318 or 333 before COS 461 is helpful for the programming assignments. Although the assignments this year will be based in Go and Python, you do not need to have experience with either language before taking the course. All necessary background will be provided in lecture, precept, and the assignments themselves.

Grading

Grading is based on:

  • a midterm (15%)
  • a final exam (25%)
  • four programming assignments (15% each)

Late Policy

We understand that sometimes life events occur and that it's not always possible to meet every deadline. As such, we are willing to accept late assignments according to the following policy:

  • You start the term with a grace period "balance" of 96 hours.
  • Each assignment will be due at 6:00 p.m. (Princeton Local Time) on the due date.
  • For each assignment, every hour late (or fraction thereof) that you turn in the assignment will subtract one hour from your grace-period balance. For example, if you turn in your assignment at 1:02 a.m. on the date after the due date, we will count this as two hours against your grace period.
  • As long as your grace period balance is positive, you can turn in any assignment late without penalty.
  • Once your grace period balance reaches zero, you will receive half credit for any assignment that you turn in, as long as you turn it in within one week of the due date. If your grace period balance is zero and you turn in an assignment more than one week late, you will receive no credit for the assignment. Important: You must still turn in all assignments to pass the course, even if you receive zero points on an assignment. Turning in all assignments is a necessary condition for passing.
Excuses with medical documentation are a legitimate exception and will not count against your late period. Any other reasons for lateness---including but not limited to interviews, conferences, etc.---are not legitimate excuses and any resulting lateness will count against your grace period.

Honor Code

Students are expected to abide by the Princeton University Honor Code. Honest and ethical behavior is expected at all times. All incidents of suspected dishonesty will be reported to and handled by the office of student affairs. You are to do all assignments yourself, unless explicitly told otherwise. You may discuss the assignments with your classmates, but you may not copy any solution (or part of a solution) from a classmate.

Reading and Videos

Supplementary Videos: Prof. Feamster's Networking Videos.

Primary Supplementary Textbook: Computer Networks: A Systems Approach (5th edition), by Larry Peterson and Bruce Davie

Recommended Books: Other recommended textbooks for reference include:

Purchasing these books is not necessary; they will be on reserve in the engineering library, and online resources will be made available.

This schedule and syllabus is preliminary and subject to change. Suggested reading assignments refer to the Peterson/Davie book (5th edition), unless otherwise specified.

Videos: In addition to the readings, we recommend watching the corresponding videos from the YouTube Playlist, before lecture.

Slides: All slides will be posted in this Dropbox directory before lecture.

Date Modules Readings Assignment
Module 1: Protocols 
and Infrastructure



February 1
  • Course Overview
  • Running Example
  • Brief History of the Internet
  • 1.3
  • Videos: 1

February 3
  • Architectural Principles
    • Packet Switching
    • End-to-End Principle
  • Videos: 2-19

February 5
  • Precept: Setup
  • Virtual Machine Setup
  • Socket Programming

Programming Assignment 0 (Virtual Machine Setup, Sockets)
February 8
  • Link Layer
    • ARP, Switches
    • Spanning Trees
    • Ethernet, DOCSIS
  • 3.1.1, 3.1.4, 3.2.6
  • Videos: 20-28

February 10
  • IP Addressing
    • Classful Addressing
    • Allocation
    • CIDR and LPM
    • IPv6
    • NAT
  • 3.2.1-3.2.5
  • Videos: 39-46
    (Optional: 47-56, 58)

February 12
  • Precept: Assignment 1 Out
  • Go Background
  • 9.1.2
  • Videos: 168-173

Programming Assignment 1 Released (Protocols and Proxies)
February 15
  • DNS
    • Resolution
    • Nameserver hierarchy
    • Record types
  • 9.3.1
  • Videos: 59-63

February 17
  • Internet Routing Oveview
  • Intradomain Routing
    • Topology
    • Distance Vector
    • Link State
  • 3.3, 4.1
  • Videos: 64-71

February 19
  • Precept
    • Go Background

Assignment Help
February 22
  • Interdomain Routing
    • Route Attributes
    • Route Selection
  • 4.1.2
  • Videos: 72-77, 79
    (Optional: 78, 80)

February 24
[Recorded Lecture + Bonus Office Hour]
  • Router Design
  • Queuing and Scheduling
    • FIFO
    • Fair Queueing
  • Bufferbloat
  • 3.4
  • 6.2, 6.5
  • Videos: 88-92

February 26
  • Precept
    • HTTP Overview/Background
    • HTTP Proxies
    • Caching and Prefetching

Assignment Help
February 29
  • Interdomain Routing Continued
    • Business Relationships
  • Software Defined Networking (SDN)
    • Early SDN
    • RCP

March 2
  • Software Defined Networking (SDN)
    • OpenFlow
    • Match-Action Tables

March 4
  • Precept: Midterm Practice Problems
    • Previous midterms
    • Sample problems
    • Midterm Q&A

Assignment Help / Midterm Review
Module 2:
Management and Security



March 7
  • TCP and UDP
    • Reliable delivery
    • Connections
  • 5.1, 5.2
  • 6.3, 6.4
  • Videos: 34-38


March 9
Midterm

Midterm
Programming Assignment 2 Released (Measurement)
March 11
  • Precept
    • Bufferbloat
  • Videos: 208-210
Assignment Help
March 21
  • Congestion Control
    • Congestion Collapse
    • TCP Congestion Control
  • 4.1.3
  • Videos: 93-99, 57
  • Videos: 43-44

March 23
  • Traffic Engineering
  • Traffic Management
    • Traffic Shaping 
    • Token Bucket
    • Leaky Bucket
  • pp 645-648
  • Videos: 100-107

March 25
  • NAT
  • Precept: Network Measurement and Spark
  • 9.4.1
  • Videos: 108-112
Assignment Help
March 28
  • Guest Lecture: Jason Livingood (Comcast) - Network Management in a Large ISP


March 30
  • Security: Denial of Service Attacks
    • Overview
    • DDoS
    • Defenses

April 1
  • Precept: Case Studies
  • Enterprise and Data Center Networking Management

Programming Assignment 3 Released (Security)
Assignment Help
April 4
  • Security: Routing
    • Route Hijacks
    • BGPSEC

April 6
  • DNS and Naming Security
    • Cache Poisoning
    • Amplification Attacks
    • DNSSEC
    • DNS Privacy

April 8
  • Precept: Botnets
  • Botnets and Application-Layer Attacks
    • Viruses and Worms
    • Spam, Phishing
    • Botnets

  • Cole: Chapter 19
  • Videos: 158-164
Assignment Help
Module 3: Applications



April 11
  • Modern Web Design
    • Pipelining
    • Persistent connections
  • Web Performance
    • SPDY
  • Videos: 173-174

April 13
  • Content Distribution Networks
    • Geo-replication
    • Reverse proxies
    • EDNS Client Subnet
  • Videos: 175-181

April 15
  • Data Center Networking
    • Topologies
    • Routing
  • Barroso: Chapter 1, 3.3
  • Videos: 182-185, 189-190
  • (Optional: 186-188)

Assignment Help
April 18
  • Streaming Video
    • DASH
  • Policy: Peering Disputes and Network Neutrality
  • 7.2
  • Videos: 79

Module 4: Stakeholders



April 20
  • Censorship
    • National firewalls
    • Circumvention tools

April 22
  • Precept: Peer-to-Peer Networking (BitTorrent, etc.)
  • 9.4.1, 9.4.2, 9.4.3
  • Videos: 191-199

Programming Assignment 4 (Applications: Performance and Optimization)
Assignment Help
April 25
Guest Lecture: Jonathan Mayer (FCC)
  • Communications Policy
  • Open Internet Order
  • Network Neutrality


April 27
  • TBD


April 29
  • Course Review Session
N/A
Course Review/Practice Problems

Course Resources

Go Resources

Software Resources

Going Further (Optional)