CS 473 Networking
Contents
Catalog Description
The course is an introduction to networking and includes detailed study of Internet protocols and socket programming. Topics include a study of IP, UDP, and TCP protocols, as well as application layer protocols such as HTTP and SMTP. Students learn to program both a client and server. Prerequisite - C or better in CS 202.
Prerequisites
- C programming.
Standard Content
Course Outline
- History and Operation of Packet Networks and Switched Networks
- Layered Protocols: TCP/IP and (maybe) OSI.
- Socket programming - TCP/UDP - in C.
- Example higher level protocols examined in some detail (e.g., SMTP or HTTP).
- Encryption and the four horsemen of the apocalypse: symmetric block ciphers, cryptographic hashing functions, public key cryptosystems, and cryptographic random number generation. Discussion of SHA, AES, RSA, TLS.
Learning Outcomes
- Understanding of data flow on the internet.
- Understanding the fundamentals of network security and encryption.
- Ability to write client and server programs in C.
Important Assignments and/or Exam Questions
- Reading and analyzing packet dumps.
- TCP Client/Server programming in C. Writing client and server programs for a specific purpose -- a multiuser game is a popular variant. The application level data might be text. Useful option: instructor writes the server, student writes the client.
- UCP Client/Server programming in C: Similar to the TCP assignment, but this is a natural place to require detailed packet design (bit fiddling) and introduce big endian/little endian issues.
Standard resources
- The original BSD Interprocess Communication tutorials are still very useful.
- Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition) 3rd Edition by W. Richard Stevens (Author), Bill Fenner (Author), Andrew M. Rudoff (Author)