# Linux Networking Fundamentals

## Prerequisites

This course requires high-level knowledge of commonly used jargon in TCP/IP stack like  DNS, TCP, UDP and HTTP. Basic familiarity with Linux jargon is sufficient to start this course. This course also expects basic exposure to Linux command-line tools. The course will require you to install certain utilities and run them as a part of the course exercises.

## What to expect from this course

Throughout the course, we cover how an SRE can optimize the system to improve their web stack performance and troubleshoot if there is an issue in any of the layers of the networking stack. This course tries to dig through each layer of traditional TCP/IP stack and expects an SRE to have a picture beyond the bird’s eye view of the functioning of the Internet.

## What is not covered under this course

This course spends time on the fundamentals. We are not covering concepts like HTTP/2.0, QUIC, TCP congestion control protocols, Anycast, BGP, CDN, Tunnels and Multicast. We expect that this course will provide the relevant basics to understand such concepts

## Course Content

### Birds eye view of the course

The course covers the question “What happens when you open linkedin.com in your browser?” The course follows the flow of TCP/IP stack.More specifically, the course covers topics of Application layer protocols DNS and HTTP, transport layer protocols UDP and TCP, networking layer protocol IP and Data Link Layer protocol 

## Table of Contents
1. [DNS](https://linkedin.github.io/school-of-sre/linux_networking/dns/)
2. [UDP](https://linkedin.github.io/school-of-sre/linux_networking/udp/)
3. [HTTP](https://linkedin.github.io/school-of-sre/linux_networking/http/)
4. [TCP](https://linkedin.github.io/school-of-sre/linux_networking/tcp/)
5. [IP Routing](https://linkedin.github.io/school-of-sre/linux_networking/ipr/)
