CS 473 Networking

From Computer Science
Jump to: navigation, search

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)