ECEA 5370 Network Systems Foundations
1st course in the Network Systems: Principles and Practice (Linux and Cloud Networking) Specialization
Instructor: Eric Keller, Associate Professor
Welcome! Throughout this course, Network Systems Foundations, you will delve into the fundamental layers of network communication. You will start with a thorough discussion of the Link Layer and its crucial role, moving on to the intricacies of Internet Protocol (IP) and router data planes, and then navigate through the complexities of the transport layer, application layer, and network security. With a practical focus, you'll write Python code to manage routing tables, analyze network traffic, simulate router functionalities, and create digital certificates for web servers. By the end of this course, you will have a well-rounded understanding of networking principles, from data transmission and routing to application protocols and security, and will be equipped with practical skills to navigate the ever-evolving landscape of network technology.
Learning Outcomes
- Utilize Python to analyze a pcap file containing a single TCP flow and calculate the maximum number of bytes in flight.
- Utilize socket programming to create a client and server in a graded assignment, implementing basic RPC functions (GET and PUT).
- Explain the function and significance of the Domain Name System (DNS) in internet communication.
- Describe how DNS resolvers discover root servers to resolve domain names.
- Identify the types of attacks that RPKI helps protect against in the network control plane.
- Analyze the strengths and weaknesses of symmetric and asymmetric encryption methods in network security.
- Differentiate between HTTP and HTTPS and identify the concerns that HTTPS addresses.
- Define network security and its importance in safeguarding networked systems and data.
- Apply the knowledge of network security principles to create a digital certificate for a web server in the programming assignment.
Ìý
Syllabus
Duration: 3Ìýhours
Welcome to Network Systems Foundations, over the next five weeks you'll explore topics related to network systems. This will center on the layered design of networks, and cover the link layer (Ethernet), network layer (IP), transport layer (TCP, UDP), and application layer (HTTP, gRPC). ÌýWith those as a foundation, you will learn about network security problems and how current solutions work at different layers. We'll start the course Ìýby understanding the Link Layer, comprehending its critical role, and exploring why it's vital in the realm of network communication. You'll explore the intriguing behavior of network switches, investigating how they react when receiving frames with various destination MAC addresses. You'll learn to distinguish between the characteristics of different channel partitioning methods, offering valuable insights into network efficiency. You'll explore the Ethernet Frame Check Sequence (FCS) field, uncovering its role and significance in data integrity. Finally, you'll have the opportunity to put your knowledge to the test by designing and developing Python code that can skillfully manage route announcements and withdrawals, ensuring the efficient maintenance of a routing table.
Duration: 6Ìýhours
This week, you will explore the network layer, which is responsible for routing packets between different networks and deals with logical addressing, routing, and forwarding. Throughout the week, you'll learn about the intricacies of the Internet Protocol (IP) and its pivotal role in orchestrating the efficient routing of data. Then, you will explore the intricate operations of router data planes and the concept of routing, focusing on the distinctions between Routing Link State Protocol and Routing Path Vector Protocol. You will then turn your attention to troubleshooting techniques for resolving network layer issues. At the end of the week, you will be tasked with the development of a Python program that simulates the functionalities of a simplified router akin to those employed in the Border Gateway Protocol (BGP).Ìý
Duration: 4Ìýhours
This week, you will explore the transport layer, which ensures end-to-end communication, error detection, and data flow control, and protocols like TCP (Transmission Control Protocol) and UDP (User Datagram Protocol) work at this layer. You'll begin the week with an overview of the transport layer and its relationship with the other layers. Then, you learn about multiplexing and how to efficiently combine multiple data streams into a single channel. Then the TCP protocol will be explored, beginning with the establishment of connections and extending to the nuances of congestion control. The concludes with a programming assignment in Python, where you will analyze a pcap file containing a single TCP flow to determine the maximum bytes in flight—a hands-on exploration of the week's concepts.Ìý
Duration: 5Ìýhours
This week, you will explore the application layer, where application-specific protocols and services reside. It includes protocols for services like email (e.g., SMTP), web browsing (e.g., HTTP), and file transfer (e.g., FTP). You'll begin the week with an overview of the application layer and its relationship with the other layers. Then, you'll explore the Domain Name System (DNS), unraveling its role in translating domain names to IP addresses. A vital aspect of network application development, socket programming, will be discussed, equipping you with the knowledge to facilitate network communication. The week further delves into application protocols, specifically HTTP and gRPC, detailing their structures and functions. This week, you'll have two programming assignments: one to explore gRPC, and the other, a graded assignment, to create a client-server using socket programming for RPC functionality.
Duration: 3Ìýhours
In this final week, you will delve into network security. The week begins with the basics of network security, then focuses on the intricacies of IPsec, securing the network data plane, and the role of RPKI in fortifying the network control plane. You will examine the bedrock of secure communication—TLS/HTTPS, which extends its protective embrace to the transport and application layers. The week will end with a programming assignment where you will create a digital certificate for a web server.
Duration: 2Ìýhours
This module contains materials for the final exam. If you've upgraded to the for-credit version of this course, please make sure you review the additional for-credit materials in the Introductory module and anywhere else they may be found.
To learn about ProctorU's exam proctoring, system test links, and privacy policy, visitÌýwww.colorado.edu/ecee/online-masters/current-students/proctoru.
Grading
Assignment | Percentage of Grade |
Quiz: Link Layer | 8% |
Programming Assignment: Modifying Ethernet Frames | 10% |
Quiz: Network Layer | 8% |
Programming Assignment: Network Layer - BGP Like Sim | 10% |
Quiz: Transport Layer | 8% |
Programming Assignment: TCP - Find Max Bytes in Flight | 10% |
Quiz: Application Layer | 8% |
Programming Assignment: Application Layer - Socket Programming | 10% |
Quiz: Network Security | 8% |
Programming Assignment: Network Security Lab - Certificates | 10% |
Final Exam | 10% |
Letter Grade Rubric
Letter GradeÌý | Minimum Percentage |
A | 93% |
A- | 90% |
B+ | 86% |
B | 83% |
B- | 80% |
C+ | 76% |
C | 73% |
C- | 70% |
D+ | 66% |
D | 60% |
F | 0% |