NCSC-6321  Internet Protocols (ST 754)

Course Description: The Internet is one of the most important technical inventions of the last 50 years. In this class we explore the TCP/IP family of protocols: IP, UDP, TCP, routing, DNS, ICMP, etc. (see the calendar for a full list). We will review briefly the application programming interface for distributed applications (i.e., sockets programming), and some factors in client / server design. Security is one of the design aspects that will be repeatedly featured. This course introduces about 15 or 16 protocols. For each protocol we discuss its function(s), messages, principles of operation, and design subtleties. Homework assignments will include some hands-on networking experiments. A project gives the opportunity to learn one protocol or property of the Internet in depth.

Course Objectives: You will become familiar with the basic protocols on which the Internet is based. This includes understanding what functions each protocol has, and how they interact to provide Internet-level service. You will learn how to analyze traffic on the Internet. You will learn how standard protocols are defined and written. You will learn the important references to use when checking for standards compliance, or when implementing a program or a product that should be standards compliant. You will learn to critically analyze protocol definitions for ambiguity and security vulnerabilities. You will learn some of the design principles that guide the standardization process, and what factors are weighed in making design choices. You will learn to write distributed applications that work properly across any TCP/IP network, and you will learn some techniques for making those applications efficient. You will learn some of the new Internet protocols that are likely to be important in the future. You will gain some appreciation for why the Internet has been so successful, and will continue to be used for a long time to come.

Course Outline by Topical Areas:

  • Introduction, the Internet
  • IP, version 4
  • Class-based IPv4 addresses
  • Datagram forwarding
  • ICMP
  • UDP
  • TCP and congestion control
  • The Sockets API
  • Client-server programming
  • Subnetting
  • Classless addresses and CIDR
  • Routing (BGP, RIP, OSPF)
  • Multicast
  • BOOTP and DHCP
  • DNS
  • NATs and VPNs
  • Quality of service
  • RTP and RTCP
  • Cryptography and security
  • IPSec
  • IP version 6
  • Mobile IP