CPSC 317: Computer Networking
CPSC 317: Computer Networking
Summer 2024
COURSE DESCRIPTION
Computer networks are pervasive and we use them daily yet we often do not give a lot of thought to how they are put together, how they work, how applications use them, and what the underlying fundamental principles are that allow us to build and design applications using computer networks. In this course you should:
- Become comfortable with writing and working with different programs that use computer networks.
- Learn the terminology associated with networking.
- Learn the key paradigms and strategies used in developing applications that use computer networks.
- Be able to apply the key paradigms and strategies to write programs and/or explain the operation of the Internet.
- Become familiar with the basic concepts of how the Internet is put together and operates and basic protocols that are used.
TOPICS
- Design strategies for scalability and reliability in distributed systems.
- The use of layers and abstractions to understand and simplify designs.
- Routing, naming and addressing.
- Isolation, data loss and performance
- Privacy and Security
SYLLABUS
Download the syllabus (v1.0)
LECTURES & CLASSROOMS
- Lecture Time: Tuesday/Thursday - 11:00AM to 2:30PM
- Classroom: Forest Sciences Centre (FSC) - Room: 1005
- Office hours: Wednesday, 10:00AM -12:00 PM
TEXTBOOKS
We will rely on the following book for this course:
- Title: Computer Networking: A Top-Down Approach – seventh edition (get 8th edition if buying new or if you plan on taking 417)
- Authors: James Kurose and Keith Ross
- ISBN-13: 978-0-13-359414-0
TA TEAM
- Seraj Abo Sabbah (ubcsabo@student.ubc.ca)
- Ken Li (junxua01@student.ubc.ca)
- Ali Mehrabian (alimehrabian619@student.ubc.ca)
- Alireza Rafiei (alireza.rafiei@student.ubc.ca)
- William Shen (wshen05@student.ubc.ca)
- Arman Moztarzadeh (arman88@student.ubc.ca)
COURSE COORDINATORS
- Gale Chen (gale.chen@ubc.ca)
- Irene Yuan (yuanke@cs.ubc.ca)
- cpsc317-admin@cs.ubc.ca
HANDOUT
Lecture 1
Introduction [SLIDES]
Design of the Internet [SLIDES]
In-Class-Work: Circuit vs Packet Switching
Design of the Internet: Switching Protocols [SLIDES]
In-Class-Work: Protocol Layers |
Lecture 2
Network Performance [SLIDES]
In-Class-Work: Network Performance Metrics
Network Performance: Delay [SLIDES]
In-Class-work: Network Delay
Application Layer Protocols [SLIDES]
In-Class-work: Application Architecture and Transport Protocols
Lecture 4
Application Layer Protocols: peer-to-peer [SLIDES] In-Class-Work: Peer to Peer Applications |
Transport: Introduction and UDP [SLIDES] In-Class-Work: Transport |
Transport: State Machines and Reliability [SLIDES] In-Class-Work: Finite State Machines |
Lecture 5
Transport: Lost Segments and Timeouts [SLIDES] In-Class-Work: Timeouts and Reliable Data Transfer |
Transport: Windowing Protocols [SLIDES] In-Class-Work: Go-Back-N |
Transport: Selective Repeat [SLIDES] In-Class-Work: Selective Repeat |
Lecture 6
Transport: Flow and Congestion Control, TCP overview [SLIDES] In-Class-Work: TCP |
Transport: TCP [SLIDES] In-Class-Work: TCP Congestion Management |
Transport: TCP wrap up [SLIDES] In-Class-Work: TCP Congestion Management |
Lecture 7
Transport: Alternate Protocols [SLIDES] |
Network Layer: History and ASes [SLIDES] In-Class-Work: Networks and Autonomous Systems |
Network Layer: IP and Address Forwarding [SLIDES] In-Class-Work: IP addresses |
Lecture 8
Network Layer: IP Address Ranges [SLIDES] In-Class-Work: IP address segregation, splitting, and forwarding |
Network Layer: Routing [SLIDES] In-Class-Work: Link State Routing |
Network Layer: Distance Vector Routing [SLIDES] In-Class-Work: Distance Vector Routing
|
Lecture 9
Network Layer: Inter-domain routing [SLIDES] |
Network Address Translation (NAT) [SLIDES] In-Class-Work: Network Address Translation |
Link Layer: Introduction, Error Detection [SLIDES] In-Class-Work: MAC addresses, and error detection and correction |
|
Lecture 10
Link Layer: Access control and ARP [SLIDES]
In-Class-Work: Switches and ARP
Link Layer: DHCP [SLIDES] In-Class-Work: DHCP |
Link Layer: Physical and Link Layer Issues [SLIDES] |
Lecture 11
Security: Introduction [SLIDES] In-Class-Work: Breaking encryption |
Security: Encryption [SLIDES] In-Class-Work: Advanced encryption Security: Asymmetric Encryption [SLIDES] In-Class-Work: Asymmetric encryption
|
Lecture 12
Security: Authentication and TLS [SLIDES] In-Class-Work: Protocol security |
Security: IPSec, VPN, Firewall and IDS [SLIDES] In-Class-Work: VPNs and Secure Protocols Security: Availability [SLIDES] In-Class-Work: VPNs and Secure Protocols |
Tutorials
- Tutorial 1: Playing with the Internet
- Tutorial 2: TCP sockets in Java
- Tutorial 3: Understanding DICT and DNS RFCs
- Tutorial 4: DNS
- Tutorial 5: Writing tests for DNS
- Tutorial 6: Sockets in C
- Tutorial 7: Debugging with GDB
- Tutorial 8: TCP review
- Tutorial 9: Getting started with PA4