Description
In this course, you will :
- About network fundamentals, socket programming in Python, command-line tools, and the main protocols of each layer.
- Gain hands-on experience not only with socket programming but also with implementing network protocols that require distributed processing.
Syllabus :
1. Getting to Know the Internet
- What is the Internet?
- A Quick History of The Internet
- Internet Standards Documents
- Communication Over the Internet
2. Access Networks
- The Edge of The Internet: End Systems
- What Are Access Networks?
- Types of Access Networks: DSL
- Types of Access Networks: Cable, FTTH, Dial-Up, and Satellite
3. Types of Computer Networks
- Types by Physical Medium: Guided Physical Media
- Types by Physical Medium: Unguided Physical Media
- Types by Geographical Distance
- Types by Topology
4. Network Infrastructure: The OSI Model
- Layered Architectures & Protocol Stacks
- The Open Systems Interconnection (OSI) Model
- The TCP/IP Model
5. The Application Layer
- What Is the Application Layer?
- Network Application Architectures
- P2P vs. Client-Server
- How Processes Communicate
- HTTP: The Basics
- HTTP: Request Messages
- Exercise: Looking at a Real HTTP Request
- HTTP: Response Messages
- Exercise: Looking at a Real HTTP Response
- Cookies
- Exercise: View and Manage Your Cookies
- Email: SMTP
- Exercise: Checking a Domain’s Mail Server with nslookup
- Email: POP & IMAP
- Email: Message Format
- DNS: Introduction
- Exercise: Finding Name Servers
- DNS: Records and Messages
- Exercise: Looking At DNS Response Messages and Resource Records
- BitTorrent
6. The Transport Layer
- What Is the Transport Layer?
- Multiplexing and Demultiplexing
- Multiplexing & Demultiplexing in UDP
- Introduction to Congestion Control
- More on Principles of Congestion Control
- Principles of Reliable Data Transfer
- Reliable Data Transfer: Sliding Window
- Reliable Data Transfer: Go-back-n
- The User Datagram Protocol
- UDP Checksum Calculation & Why UDP?
- Exercise: Capturing UDP Packets
- The Transmission Control Protocol
- Key Features of the Transmission Control Protocol
- TCP Segment Header
- TCP Header Flags
- TCP Headers: Window Size, Checksum & More
- TCP Connection Establishment: Three-way Handshake
- Other TCP Connection Establishment Methods
- When Connection Establishment Fails: Syn Floods & Retransmission
- TCP Connection Release
- Efficient data transmission with TCP
- TCP Window Scaling
- Exercise: Measuring RTT with Ping
- TCP Congestion Control: AIMD
- TCP Congestion Control: Slow Start
7. An Introduction to Socket Programming with Python
- Setting up a UDP Socket
- Writing a UDP Server
- Writing a UDP Client Program
- Running The UDP Server & Client Together
- Improvements to UDP Programs: Avoiding Arbitrary Servers
- A TCP Client-Server Program
8. Network Layer
- What Is the Network Layer?
- Organization of the Network layer
- The Control Plane: Static & Dynamic Routing
- The Control Plane: Distance Vector - Routing Information Protocol
- The Control Plane: Link State Routing
- The Control Plane: Route Calculation - Dijkstra's
- Programming Challenge: Implementing Dijkstra's
- Solution Review: Implementing Dijkstra's
- The Internet Protocol: Introduction to IPV4
- The Internet Protocol: IPV4 Address Allocation
- The Internet Protocol: IPV4 Packets
- The Internet Protocol: IPV4 Packet Fragmentation & Reassembly
- The Internet Control Message Protocol (ICMP)
- Address Resolution Protocol (ARP)
- Dynamic Host Configuration Protocol (DHCP)
- IPv4 in Practice: The Life of a Packet
- Why IPv6?
- IPv6 Features
- Middleboxes: Firewalls
- Middleboxes: NATs
- Introduction to Routing in IP: Intradomain & Interdomain
- Intradomain Routing: OSPF
- Interdomain Routing: Border Gateway Protocol
- Border Gateway Protocol: Determining the Best Routes
9. Link Layer
- What is The Data Link Layer?
- Principles of The Data Link Layer: The Framing Problem
- Principles of The Data Link Layer: Error Detection
- Medium Access Control: Static Allocation
- Medium Access Control: Stochastic Methods - ALOHA
- Medium Access Control: Stochastic Methods - CSMA
- Medium Access Control: Stochastic Methods - CSMA/CD
- Medium Access Control: Stochastic Methods - Optimizing CSMA/CD
- Introduction to Ethernet
- Ethernet Frame Format
- Physical Layers for Ethernet
- Ethernet Switches
- Programming Challenge: Spanning Tree Protocol
- Solution Review: Spanning Tree Protocol
- Virtual LANs