CS 473 Networking

From Computer Science at Indiana State University
Jump to navigation Jump to 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)