Skip to main content

Computer Networks:  2019-2020

Lecturer

Degrees

Schedule S1(CS&P)(3rd years)Computer Science and Philosophy

Schedule S1(3rd years)Computer Science

Schedule S1(M&CS)(3rd years)Mathematics and Computer Science

Term

Overview

*** Important information for students *** Detailed lecture notes will be provided on the course materials page. The lecturer will be available during the timetabled sessions (Tuesdays 10am-12pm [BST] and Friday 10am-11am[BST]) to answer questions and have discussions with students, and will also provide a an email question/answer service at other times. You can also access the recorded lectures from 2019 in the Weblearn recorded lectures section.

This course covers the core theory of Computer Networks in order for students to understand the science underpinning computer communications, such as basic architectural principles of computer networking, including how the Internet works today and applications of theory in current technology.

The course will cover the problems of Computer Networks and the standard ways to approach and resolve these problems, including relevant real-world, state-of-the-art examples. The practicals for the course will allow students to apply theory to real-world examples.

Learning outcomes

At the end of the course, the students should be able to construct and debug a small-medium IP network, and be able to understand wider networking issues.

Synopsis

1. Networking abstracts, problems and common themes

  1. Communication
  2. Asynchronous knowledge (e.g. 2 generals problem)
  3. Constraints and Trade-offs (Bandwidth/Latency/Reliability/Jitter/Money/Politics)
  4. Scaling
  5. OSI Model

2. Physical Layer

  1. Getting a bit from a->b (probably).
  2. Lasers, phones and copper loops
  3. Physical limitations (see 1 c).

3. Link Layer

  1. What use?
  2. Point to point.
  3. Ethernet, hubs and Switches

4. Scaling the Link Layer – Ethernet networking

  1. Mac learning
  2. Redundancy / loops / Protocols (Why are these as they are? E.g. 1 c).

5. Network Layer

  1. What use?
  2. IP (side note on arp)
  3. IP Routing.
  4. Unicast/Broadcast/Multicast

6. Scaling the network layer

  1. Routing protocols
  2. Distance Vector vs Link state

7. Making use of your network

  1. Label-switched networks and source-routing

8. Internet scale

  1. It’s BIG!
  2. BGP, GSRs, separate data plane.
  3. Private addresses, NATs, Ipv6… (The common classes of things that we do that lead to these solutions)

9. Transport layer

  1. What use?
  2. UDP (multiple pipes)
  3. TCP (reliability, some flow control)

10. Application layer

  1. What use?
  2. Simple applications, DNS, SIP, RTP
  3. telnet/Ssh

11 and 12.  Virtualization

  1. What use?
  2. VLANs
  3. VPNs
  4. Pseudowires and how you use virtualisation for scaling
  5. VMs / Containers (“faking networking”)

13 and 14. Trust and Security

  1. Authentication/Confidentiality/Integrity/Signature/Availability
  2. Basics: protecting your network from the outside (what people do)
  3. Basics: protecting your network internally (what people should do)
  4. Virtualisation and how we need to blend “node security” and “network security” (e.g. Meltdown/Spectre)

15 and 16. Contingency

  1. Cross-lecture themes (mentioned in 1 and flagged throughout)
  2. “OSI Model” The conceptual stack here – going up and down it.
  3. The problems we’re trying to solve.
  4. Scaling (typically scaling beyond the capacity of the fix to the previous scaling problem).

Syllabus

The need for computer networks; layered models; Ethernet; IP; network routing and congestion control; network security.

Reading list

  • Peterson and Bruce S. Davie "Computer Networks: A systems approach (4th ed)", Morgan Kaufmann, 2007.
  • S. Tanenbaum, Computer Networks (3rd ed), Prentice-Hall International, 1996.

Feedback

Students are formally asked for feedback at the end of the course. Students can also submit feedback at any point here. Feedback received here will go to the Head of Academic Administration, and will be dealt with confidentially when being passed on further. All feedback is welcome.

Taking our courses

This form is not to be used by students studying for a degree in the Department of Computer Science, or for Visiting Students who are registered for Computer Science courses

Other matriculated University of Oxford students who are interested in taking this, or other, courses in the Department of Computer Science, must complete this online form by 17.00 on Friday of 0th week of term in which the course is taught. Late requests, and requests sent by email, will not be considered. All requests must be approved by the relevant Computer Science departmental committee and can only be submitted using this form.