CS 494 Internetworking Protocols

Credit Hours: 4
Course Coordinator: Nirupama Bulusu
Course Description: Advanced study of the protocols and algorithms used in the Internet (IETF) family of networking protocols. For example, ARP, IP, UDP. TCP, multicasting, routing protocols like RIP and OSPF, and application protocols like DNS, NFS, SNMP, FTP and HTTP. Issues such as addressing, name service, protocol design, and scalability will be explored.
Prerequisites: CS 333
Goals: To provide an overview of the structure and algorithms used in the TCP/IP networking protocols that make up the foundation of the Internet. Protocols and technologies covered will include an introduction to the link layer, ARP, IP, ICMP, UDP, TCP, routing protocols, and application protocols and systems like the DNS, NFS, SMTP, FTP, HTTP, and multicasting protocols and applications. To provide architectural insight into protocol design issues and operating system implementation techniques, typically in terms of the Berkeley UNIX socket programming model. To provide socket programming experience with the client/server model. To provide experience reading Internet RFC's and/or drafts.

Upon the successful completion of this course students will be able to:

  1. Explain fundamental ideas associated with Ethernet and the PPP point-to-point protocols. For Ethernet, explain CSMA/CD and MAC addresses.
  2. Explain the fundamental concepts associated with modern Ethernet switches, including full-duplex and collision-free networks, VLANs, spanning-trees, and adaptive-learning.
  3. Explain how ARP works in IPv4 and explain how broadcast can be used for link reachability.
  4. Setup a host and network in terms of IP addressing.
  5. Explain how traceroute and ping work, as well as ICMP redirects, and other ICMP mechanisms.
  6. Work with IPv4 addresses in terms of subnetting, VLSM, and supernetting.
  7. Explain the basic ideas behind sliding window protocols in general, and the TCP protocol in particular.
  8. Compare and contrast TCP and UDP in terms of the applications that use them.
  9. Compare and contrast vector-distance and link-state routing algorithms.
  10. Explain the architecture of application-layer protocols including HTTP, FTP, SMTP, DNS, and TELNET.
  11. Describe how layer 3 and layer 7 firewalls operate.
  12. Explain network attacks based on arp-spoofing, and IP address spoofing.
  13. Explain techniques involved in the Morris worm, and other network-based attacks.
  14. Program network-based applications using the socket mechanism.
Textbooks: Computer Networking: A Top-Down Approach, James Kurose and Keith Ross, 2016
References: Unix Network Programming.W. R. Stevens, 2nd edition. ISBN 0-13-490012-X. Prentice-Hall. 1998. (Useful for information on programming BSD sockets, in particular see chapters 4-6, 8, 9 in 2nd edition).
Major Topics:

1. Organization of Internet

2. Protocols up the Internet TCP/IP stack including: ethernet, PPP, ARP, IP (IP addressing, routing, IPv6), UDP, TCP, DNS, FTP, HTTP/WWW, email

3. Introduction to l3 dynamic routing protocols

4. Introduction to mobility problems including Mobile-IP and DHCP protocols

5. Introduction to network security

Laboratory Exercises: Two projects:
1. using UDP, construct a reliable protocol. 4 weeks.
2. using TCP, construct a remote file system, 4 weeks.
Projects are done in C using UDP and TCP sockets.


CAC Category Credits Core Advanced
Data Structures 0.5
Algorithms 1.0
Software Design 0.5
Computer Architecture 2.0
Programming Languages


Oral and Written Communications: There are no oral and written communications other than required documentation (protocol descriptions and test plans) for the two lab assignments.
Social and Ethical Issues: We spend two lectures on network security, including the mechanisms of network-based attacks on computers and defence mechanisms. There are test questions on network security.
Theoretical Content: There is a great deal of "theory" that is implicit, but nothing very explicit, therefore it is not possible to quantify it.

For example, there is an important theory of how network errors are dealt with by the TCP/IP stack (mostly in the TCP protocol itself, or at the application layer by users of UDP). One could argue then that the entire quarter is spent on that little piece of theory.

Problem Analysis: The nut of the problem here is understanding how the Internet works architecturally in terms of multi-layer protocol/addressing schemes, and host/router to host/router protocols. Thus "analysis" is part of the basic picture and is emphasized by the Steven's textbook. This textbook is singular in that it emphasizes how protocols actually work in terms of packet exchanges. Of course there is also analytical work in terms of the programming assignments. The first assignment in particular is construction of a reliable protocol. Students must design this protocol, or they risk failure in the course as a whole.
Solution Design: There are two lab assignments. The first teaches the students how to use UDP sockets, which is trivial. However the assignment requires that the students design a reliable UDP protocol. Making UDP reliable is non-trivial as in general, there is always one more design problem, until ultimately TCP as an extreme case, might be the result. Thus it is important that the students actually draw up a distributed algorithm for reliability. They are also saddled with the problem of multiple parallel reliable streams in this assignment. As a result, thinking about a design solution is imperative.

The second assignment using TCP is fairly straightforward, but still requires a client/server partition in terms of design. Students are asked to develop a Remote Procedure Call mechanism using TCP. Thus it is important exactly how they partition their remote file system design. For example, it is not good to simply create a remote procedure call function named "copy_file". Classically a file copy across a network should be further partitioned into more primitive functions.