Show description
Network+ Networking Concepts — Complete Course
Network+ Networking Concepts — Complete Course
☰
CompTIA Network+
Networking Concepts
23% of Exam
Core Models
OSI Model
Encapsulation
Infrastructure
Network Appliances
Network Topologies
Transmission Media
Connectors & Transceivers
Protocols
Ports & Protocols
Traffic Types
Addressing
IPv4 Addressing
Subnetting & CIDR
Cloud
Cloud Concepts
Reference
Glossary
// Networking Concepts — Section 1
Network+ CompleteCourse Module
Everything you need to know about networking concepts for the CompTIA Network+ exam. OSI model, protocols, topologies, IPv4, cloud, and more — all in one place.
9Major Topics
7OSI Layers
14Key Protocols
23%Exam Weight
// 01 — OSI Model
The OSI Model
The Open Systems Interconnection (OSI) model is a conceptual framework that standardizes network communication into seven distinct layers. Each layer has a specific role and communicates with the layers above and below it. Think of it as a recipe — each step depends on the one before it.
📡 Memory Aid
Top-down: "All People Seem To Need Data Processing" (Application → Physical)
Bottom-up: "Please Do Not Throw Sausage Pizza Away" (Physical → Application)
7
Application
PDU: Data
Protocols / Examples
HTTP, HTTPS, FTP, DNS, SMTP, SNMP, DHCP, SSH, Telnet, RDP
6
Presentation
PDU: Data
Protocols / Examples
TLS/SSL, JPEG, MPEG, ASCII, EBCDIC, encryption, compression
5
Session
PDU: Data
Protocols / Examples
NetBIOS, SOCKS, SIP, RPC, NFS — manages sessions/dialogs
4
Transport
PDU: Segment
Protocols / Examples
TCP (reliable), UDP (fast) — ports, flow control, segmentation
3
Network
PDU: Packet
Protocols / Examples
IP, ICMP, OSPF, BGP, EIGRP — routers, logical addressing
2
Data Link
PDU: Frame
Protocols / Examples
Ethernet, 802.11 Wi-Fi, ARP, PPP, STP — switches, MAC addresses
1
Physical
PDU: Bit
Protocols / Examples
Ethernet cables, fiber, hubs, repeaters, voltage signals, 1s and 0s
Layer Deep Dives
Layer 1 — Physical
Deals with raw bit transmission over a physical medium. Defines electrical, optical, and radio specifications. Devices: hubs, repeaters, cables. When there's a "bad cable," that's a Layer 1 problem.
KEY EXAM POINT: Hubs operate at Layer 1 — they broadcast all traffic to all ports (collision domain).
Layer 2 — Data Link
Provides node-to-node transfer and error detection using MAC addresses.…
Network+ Networking Concepts — Complete Course
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Network+ Networking Concepts — Complete Course</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;600;700&family=Syne:wght@400;600;700;800&display=swap" rel="stylesheet">
<style>
:root {
--bg: #080c12;
--bg2: #0d1320;
--card: #111827;
--card2: #1a2235;
--border: #1e2d45;
--border2: #243352;
--cyan: #00d4ff;
--cyan-dim: #00aacc;
--green: #00e5a0;
--green-dim: #00b87f;
--orange: #ff8c42;
--orange-dim: #cc6f30;
--yellow: #ffd166;
--red: #ff4d6d;
--text: #d4e0f0;
--text-dim: #7a90b0;
--text-bright: #f0f6ff;
--mono: 'JetBrains Mono', monospace;
--sans: 'Syne', sans-serif;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
background: var(--bg);
color: var(--text);
font-family: var(--sans);
display: flex;
min-height: 100vh;
overflow-x: hidden;
}
/* ─── SIDEBAR ─── */
#sidebar {
width: 260px;
min-width: 260px;
background: var(--bg2);
border-right: 1px solid var(--border);
position: fixed;
top: 0; left: 0; bottom: 0;
overflow-y: auto;
z-index: 100;
transition: transform .3s;
}
#sidebar::-webkit-scrollbar { width: 4px; }
#sidebar::-webkit-scrollbar-track { background: transparent; }
#sidebar::-webkit-scrollbar-thumb { background: var(--border2); border-radius: 2px; }
.sidebar-header {
padding: 24px 20px 16px;
border-bottom: 1px solid var(--border);
position: sticky;
top: 0;
background: var(--bg2);
z-index: 1;
}
.sidebar-header .badge {
font-family: var(--mono);
font-size: 10px;
color: var(--cyan);
letter-spacing: 3px;
text-transform: uppercase;
display: block;
margin-bottom: 6px;
}
.sidebar-header h2 {
font-size: 16px;
font-weight: 800;
color: var(--text-bright);
line-height: 1.3;
}
.sidebar-header .pct {
display: inline-block;
margin-top: 8px;
font-family: var(--mono);
font-size: 11px;
color: var(--green);
background: rgba(0,229,160,.1);
border: 1px solid rgba(0,229,160,.25);
padding: 2px 8px;
border-radius: 20px;
}
.nav-section {
padding: 10px 0;
border-bottom: 1px solid var(--border);
}
.nav-section-label {
font-family: var(--mono);
font-size: 9px;
letter-spacing: 2px;
color: var(--text-dim);
text-transform: uppercase;
padding: 6px 20px 4px;
display: block;
}
.nav-link {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 20px;
color: var(--text-dim);
text-decoration: none;
font-size: 13px;
font-weight: 600;
transition: all .15s;
border-left: 2px solid transparent;
}
.nav-link:hover, .nav-link.active {
color: var(--cyan);
background: rgba(0,212,255,.05);
border-left-color: var(--cyan);
}
.nav-link .dot {
width: 6px; height: 6px;
border-radius: 50%;
background: var(--border2);
flex-shrink: 0;
transition: background .15s;
}
.nav-link:hover .dot, .nav-link.active .dot {
background: var(--cyan);
}
/* ─── MAIN ─── */
#main {
margin-left: 260px;
flex: 1;
max-width: calc(100% - 260px);
}
/* ─── HERO ─── */
.hero {
padding: 60px 60px 40px;
border-bottom: 1px solid var(--border);
background: radial-gradient(ellipse 60% 50% at 70% 50%, rgba(0,212,255,.06) 0%, transparent 70%);
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: 0; right: 0;
width: 400px; height: 400px;
background: radial-gradient(circle, rgba(0,229,160,.04) 0%, transparent 70%);
pointer-events: none;
}
.hero-tag {
font-family: var(--mono);
font-size: 11px;
letter-spacing: 3px;
color: var(--cyan);
text-transform: uppercase;
margin-bottom: 16px;
display: block;
}
.hero h1 {
font-size: clamp(28px, 4vw, 48px);
font-weight: 800;
color: var(--text-bright);
line-height: 1.1;
margin-bottom: 16px;
}
.hero h1 span { color: var(--cyan); }
.hero p {
font-size: 16px;
color: var(--text-dim);
max-width: 600px;
line-height: 1.7;
margin-bottom: 28px;
}
.hero-stats {
display: flex;
gap: 32px;
flex-wrap: wrap;
}
.hero-stat {
display: flex;
flex-direction: column;
}
.hero-stat .num {
font-family: var(--mono);
font-size: 28px;
font-weight: 700;
color: var(--green);
}
.hero-stat .label {
font-size: 12px;
color: var(--text-dim);
margin-top: 2px;
}
/* ─── SECTIONS ─── */
.section {
padding: 60px 60px;
border-bottom: 1px solid var(--border);
}
.section-tag {
font-family: var(--mono);
font-size: 10px;
letter-spacing: 3px;
text-transform: uppercase;
margin-bottom: 10px;
display: block;
}
.section h2 {
font-size: 30px;
font-weight: 800;
color: var(--text-bright);
margin-bottom: 10px;
line-height: 1.2;
}
.section-intro {
font-size: 15px;
color: var(--text-dim);
max-width: 700px;
line-height: 1.7;
margin-bottom: 40px;
}
.section-divider {
height: 1px;
background: var(--border);
margin: 40px 0;
}
h3 {
font-size: 18px;
font-weight: 700;
color: var(--text-bright);
margin-bottom: 16px;
}
h4 {
font-size: 14px;
font-weight: 700;
color: var(--cyan);
margin-bottom: 8px;
font-family: var(--mono);
letter-spacing: 1px;
text-transform: uppercase;
}
p { font-size: 14px; color: var(--text); line-height: 1.7; margin-bottom: 12px; }
/* ─── CARDS ─── */
.card {
background: var(--card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 24px;
transition: border-color .2s;
}
.card:hover { border-color: var(--border2); }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
/* ─── OSI MODEL ─── */
.osi-stack {
max-width: 680px;
margin: 0 auto;
}
.osi-layer {
display: grid;
grid-template-columns: 60px 1fr 1fr;
align-items: stretch;
border: 1px solid var(--border);
border-bottom: none;
border-radius: 0;
transition: transform .15s, box-shadow .15s;
cursor: default;
}
.osi-layer:first-child { border-radius: 10px 10px 0 0; }
.osi-layer:last-child { border-radius: 0 0 10px 10px; border-bottom: 1px solid var(--border); }
.osi-layer:hover { transform: translateX(4px); }
.osi-num {
display: flex;
align-items: center;
justify-content: center;
font-family: var(--mono);
font-size: 20px;
font-weight: 700;
padding: 16px;
}
.osi-info {
padding: 14px 18px;
border-left: 1px solid var(--border);
display: flex;
flex-direction: column;
justify-content: center;
}
.osi-name { font-size: 15px; font-weight: 700; color: var(--text-bright); }
.osi-pdu { font-family: var(--mono); font-size: 11px; color: var(--text-dim); margin-top: 2px; }
.osi-examples {
padding: 14px 18px;
border-left: 1px solid var(--border);
display: flex;
flex-direction: column;
justify-content: center;
}
.osi-examples .label { font-size: 10px; color: var(--text-dim); font-family: var(--mono); letter-spacing: 1px; text-transform: uppercase; }
.osi-examples .val { font-size: 13px; color: var(--text); margin-top: 3px; }
.layer-7 { background: rgba(0,229,160,.07); } .layer-7 .osi-num { color: var(--green); }
.layer-6 { background: rgba(0,229,160,.05); } .layer-6 .osi-num { color: var(--green-dim); }
.layer-5 { background: rgba(0,212,255,.05); } .layer-5 .osi-num { color: var(--cyan-dim); }
.layer-4 { background: rgba(0,212,255,.07); } .layer-4 .osi-num { color: var(--cyan); }
.layer-3 { background: rgba(255,140,66,.05); } .layer-3 .osi-num { color: var(--orange); }
.layer-2 { background: rgba(255,140,66,.07); } .layer-2 .osi-num { color: var(--orange-dim); }
.layer-1 { background: rgba(255,77,109,.06); } .layer-1 .osi-num { color: var(--red); }
.osi-legend {
display: flex;
gap: 20px;
margin-top: 20px;
justify-content: center;
flex-wrap: wrap;
}
.osi-legend-item {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
color: var(--text-dim);
}
.osi-legend-dot { width: 10px; height: 10px; border-radius: 2px; }
.osi-encap {
display: flex;
align-items: center;
justify-content: center;
margin: 30px 0;
gap: 0;
}
.encap-box {
padding: 8px 14px;
font-family: var(--mono);
font-size: 11px;
border: 1px solid var(--border);
background: var(--card);
white-space: nowrap;
}
.encap-arrow {
font-size: 18px;
color: var(--text-dim);
padding: 0 8px;
}
/* ─── APPLIANCES ─── */
.appliance-card {
background: var(--card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 20px;
transition: all .2s;
display: flex;
flex-direction: column;
gap: 10px;
}
.appliance-card:hover {
border-color: var(--cyan);
background: rgba(0,212,255,.03);
transform: translateY(-2px);
}
.appliance-icon {
width: 40px; height: 40px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
}
.appliance-name {
font-size: 15px;
font-weight: 700;
color: var(--text-bright);
}
.appliance-layer {
font-family: var(--mono);
font-size: 10px;
color: var(--text-dim);
letter-spacing: 1px;
}
.appliance-desc {
font-size: 13px;
color: var(--text-dim);
line-height: 1.6;
}
/* ─── PORTS TABLE ─── */
.ports-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}
.ports-table th {
font-family: var(--mono);
font-size: 10px;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--text-dim);
padding: 10px 16px;
text-align: left;
border-bottom: 1px solid var(--border);
}
.ports-table td {
padding: 11px 16px;
border-bottom: 1px solid rgba(30,45,69,.5);
vertical-align: top;
}
.ports-table tr:hover td { background: rgba(0,212,255,.02); }
.port-num {
font-family: var(--mono);
font-weight: 700;
font-size: 14px;
}
.proto-tcp { color: var(--cyan); }
.proto-udp { color: var(--orange); }
.proto-both { color: var(--green); }
.tag {
display: inline-block;
padding: 2px 8px;
border-radius: 4px;
font-family: var(--mono);
font-size: 10px;
font-weight: 600;
letter-spacing: .5px;
}
.tag-tcp { background: rgba(0,212,255,.12); color: var(--cyan); border: 1px solid rgba(0,212,255,.2); }
.tag-udp { background: rgba(255,140,66,.12); color: var(--orange); border: 1px solid rgba(255,140,66,.2); }
.tag-both { background: rgba(0,229,160,.12); color: var(--green); border: 1px solid rgba(0,229,160,.2); }
.tag-secure { background: rgba(0,229,160,.08); color: var(--green-dim); border: 1px solid rgba(0,229,160,.15); }
/* ─── SVG TOPOLOGIES ─── */
.topology-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
margin-top: 20px;
}
.topology-card {
background: var(--card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 20px;
display: flex;
flex-direction: column;
gap: 12px;
transition: border-color .2s;
}
.topology-card:hover { border-color: var(--border2); }
.topology-card h4 {
font-size: 14px;
font-weight: 700;
color: var(--text-bright);
font-family: var(--sans);
letter-spacing: 0;
text-transform: none;
margin: 0;
}
.topology-card p {
font-size: 12px;
color: var(--text-dim);
margin: 0;
}
.topo-svg {
width: 100%;
height: 120px;
}
/* ─── IPv4 ─── */
.subnet-calc {
background: var(--card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 28px;
max-width: 700px;
}
.binary-row {
font-family: var(--mono);
font-size: 13px;
display: flex;
gap: 0;
flex-wrap: wrap;
align-items: center;
margin-bottom: 10px;
}
.bit-group {
display: flex;
gap: 1px;
margin-right: 8px;
}
.bit {
width: 18px; height: 22px;
display: flex;
align-items: center;
justify-content: center;
font-family: var(--mono);
font-size: 12px;
border-radius: 3px;
}
.bit-1 { background: rgba(0,212,255,.15); color: var(--cyan); }
.bit-0 { background: rgba(255,255,255,.04); color: var(--text-dim); }
.bit-net { background: rgba(0,229,160,.15); color: var(--green); }
.bit-host { background: rgba(255,140,66,.12); color: var(--orange); }
.ip-classes-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}
.ip-classes-table th {
background: var(--card2);
padding: 10px 14px;
text-align: left;
font-family: var(--mono);
font-size: 10px;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--text-dim);
border-bottom: 1px solid var(--border);
}
.ip-classes-table td {
padding: 11px 14px;
border-bottom: 1px solid rgba(30,45,69,.5);
font-size: 13px;
}
.ip-classes-table tr:hover td { background: rgba(0,212,255,.02); }
/* ─── GLOSSARY ─── */
.glossary-search {
background: var(--card);
border: 1px solid var(--border);
border-radius: 8px;
padding: 12px 18px;
font-size: 14px;
color: var(--text);
font-family: var(--mono);
width: 100%;
max-width: 500px;
outline: none;
transition: border-color .2s;
margin-bottom: 28px;
}
.glossary-search::placeholder { color: var(--text-dim); }
.glossary-search:focus { border-color: var(--cyan); }
.glossary-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 14px;
}
.glossary-item {
background: var(--card);
border: 1px solid var(--border);
border-radius: 8px;
padding: 16px 18px;
transition: border-color .2s;
}
.glossary-item:hover { border-color: var(--border2); }
.glossary-item.hidden { display: none; }
.glossary-term {
font-family: var(--mono);
font-size: 13px;
font-weight: 700;
color: var(--cyan);
margin-bottom: 6px;
}
.glossary-def {
font-size: 13px;
color: var(--text-dim);
line-height: 1.6;
margin: 0;
}
/* ─── CLOUD ─── */
.cloud-diagram {
background: var(--card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 30px;
text-align: center;
}
/* ─── MEDIA ─── */
.media-comparison {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
}
.media-card {
background: var(--card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 22px;
transition: all .2s;
}
.media-card:hover {
border-color: var(--green);
background: rgba(0,229,160,.02);
transform: translateY(-2px);
}
.media-title {
font-size: 16px;
font-weight: 700;
color: var(--text-bright);
margin-bottom: 6px;
}
.media-spec {
display: flex;
justify-content: space-between;
padding: 6px 0;
border-bottom: 1px solid var(--border);
font-size: 12px;
}
.media-spec:last-child { border-bottom: none; }
.media-spec .k { color: var(--text-dim); }
.media-spec .v { color: var(--text); font-family: var(--mono); }
/* ─── TRAFFIC ─── */
.traffic-cards {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
}
.traffic-card {
background: var(--card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 22px;
text-align: center;
transition: all .2s;
}
.traffic-card:hover { transform: translateY(-3px); border-color: var(--border2); }
.traffic-icon {
width: 60px; height: 60px;
margin: 0 auto 14px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
}
.traffic-name {
font-size: 16px;
font-weight: 700;
color: var(--text-bright);
margin-bottom: 8px;
}
.traffic-desc {
font-size: 12px;
color: var(--text-dim);
line-height: 1.6;
margin: 0;
}
/* ─── CONNECTORS ─── */
.connector-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 14px;
}
.connector-card {
background: var(--card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 18px;
text-align: center;
transition: all .2s;
}
.connector-card:hover { border-color: var(--orange); }
.connector-visual {
height: 60px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 10px;
}
.connector-name {
font-family: var(--mono);
font-size: 14px;
font-weight: 700;
color: var(--orange);
margin-bottom: 6px;
}
.connector-desc {
font-size: 11px;
color: var(--text-dim);
line-height: 1.5;
}
/* ─── INFO BOXES ─── */
.info-box {
border-radius: 8px;
padding: 16px 20px;
margin: 16px 0;
border-left: 3px solid;
font-size: 13px;
line-height: 1.7;
}
.info-cyan { background: rgba(0,212,255,.06); border-color: var(--cyan); color: var(--text); }
.info-green { background: rgba(0,229,160,.06); border-color: var(--green); color: var(--text); }
.info-orange { background: rgba(255,140,66,.06); border-color: var(--orange); color: var(--text); }
.info-red { background: rgba(255,77,109,.06); border-color: var(--red); color: var(--text); }
.info-yellow { background: rgba(255,209,102,.06); border-color: var(--yellow); color: var(--text); }
.info-label {
font-family: var(--mono);
font-size: 10px;
letter-spacing: 2px;
text-transform: uppercase;
margin-bottom: 6px;
display: block;
font-weight: 700;
}
/* ─── PROGRESS BAR ─── */
.progress-bar {
height: 4px;
background: var(--border);
border-radius: 2px;
overflow: hidden;
margin: 6px 0 12px;
}
.progress-fill {
height: 100%;
border-radius: 2px;
background: linear-gradient(90deg, var(--cyan), var(--green));
}
/* ─── MOBILE TOGGLE ─── */
#sidebar-toggle {
display: none;
position: fixed;
top: 16px;
left: 16px;
z-index: 200;
background: var(--card);
border: 1px solid var(--border);
color: var(--text);
width: 40px;
height: 40px;
border-radius: 8px;
font-size: 18px;
cursor: pointer;
align-items: center;
justify-content: center;
}
@media (max-width: 900px) {
#sidebar { transform: translateX(-100%); }
#sidebar.open { transform: translateX(0); }
#sidebar-toggle { display: flex; }
#main { margin-left: 0; max-width: 100%; }
.section { padding: 40px 24px; }
.hero { padding: 60px 24px 40px; }
.grid-2, .grid-3, .grid-4, .traffic-cards, .connector-grid { grid-template-columns: 1fr 1fr; }
.topology-grid { grid-template-columns: 1fr 1fr; }
.media-comparison { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
.grid-2, .grid-3, .grid-4, .traffic-cards, .connector-grid, .topology-grid { grid-template-columns: 1fr; }
.osi-layer { grid-template-columns: 50px 1fr; }
.osi-examples { display: none; }
}
/* ─── SCROLL ANIMATION ─── */
.fade-in {
opacity: 0;
transform: translateY(20px);
transition: opacity .5s, transform .5s;
}
.fade-in.visible {
opacity: 1;
transform: translateY(0);
}
/* ─── INLINE CODE ─── */
code {
font-family: var(--mono);
font-size: 12px;
background: rgba(0,212,255,.08);
color: var(--cyan);
padding: 1px 6px;
border-radius: 3px;
}
/* ─── TABS ─── */
.tabs {
display: flex;
gap: 0;
border-bottom: 1px solid var(--border);
margin-bottom: 24px;
}
.tab-btn {
padding: 10px 20px;
background: none;
border: none;
border-bottom: 2px solid transparent;
color: var(--text-dim);
font-family: var(--sans);
font-size: 13px;
font-weight: 700;
cursor: pointer;
transition: all .2s;
margin-bottom: -1px;
}
.tab-btn:hover { color: var(--text); }
.tab-btn.active { color: var(--cyan); border-bottom-color: var(--cyan); }
.tab-pane { display: none; }
.tab-pane.active { display: block; }
/* ─── CIDR table ─── */
.cidr-table {
width: 100%;
border-collapse: collapse;
font-size: 12px;
font-family: var(--mono);
}
.cidr-table th {
padding: 8px 12px;
text-align: left;
border-bottom: 1px solid var(--border);
color: var(--text-dim);
font-size: 10px;
letter-spacing: 1px;
text-transform: uppercase;
}
.cidr-table td {
padding: 8px 12px;
border-bottom: 1px solid rgba(30,45,69,.4);
}
.cidr-table tr:hover td { background: rgba(0,212,255,.02); }
.subnetting-visual {
background: var(--card2);
border-radius: 8px;
padding: 20px;
font-family: var(--mono);
font-size: 13px;
margin: 16px 0;
}
</style>
</head>
<body>
<!-- Sidebar Toggle -->
<button id="sidebar-toggle" onclick="toggleSidebar()">☰</button>
<!-- SIDEBAR -->
<nav id="sidebar">
<div class="sidebar-header">
<span class="badge">CompTIA Network+</span>
<h2>Networking Concepts</h2>
<span class="pct">23% of Exam</span>
</div>
<div class="nav-section">
<span class="nav-section-label">Core Models</span>
<a class="nav-link" href="#osi"><span class="dot"></span> OSI Model</a>
<a class="nav-link" href="#encapsulation"><span class="dot"></span> Encapsulation</a>
</div>
<div class="nav-section">
<span class="nav-section-label">Infrastructure</span>
<a class="nav-link" href="#appliances"><span class="dot"></span> Network Appliances</a>
<a class="nav-link" href="#topologies"><span class="dot"></span> Network Topologies</a>
<a class="nav-link" href="#media"><span class="dot"></span> Transmission Media</a>
<a class="nav-link" href="#connectors"><span class="dot"></span> Connectors & Transceivers</a>
</div>
<div class="nav-section">
<span class="nav-section-label">Protocols</span>
<a class="nav-link" href="#ports"><span class="dot"></span> Ports & Protocols</a>
<a class="nav-link" href="#traffic"><span class="dot"></span> Traffic Types</a>
</div>
<div class="nav-section">
<span class="nav-section-label">Addressing</span>
<a class="nav-link" href="#ipv4"><span class="dot"></span> IPv4 Addressing</a>
<a class="nav-link" href="#subnetting"><span class="dot"></span> Subnetting & CIDR</a>
</div>
<div class="nav-section">
<span class="nav-section-label">Cloud</span>
<a class="nav-link" href="#cloud"><span class="dot"></span> Cloud Concepts</a>
</div>
<div class="nav-section">
<span class="nav-section-label">Reference</span>
<a class="nav-link" href="#glossary"><span class="dot"></span> Glossary</a>
</div>
</nav>
<!-- MAIN CONTENT -->
<main id="main">
<!-- HERO -->
<div class="hero">
<span class="hero-tag">// Networking Concepts — Section 1</span>
<h1>Network+ <span>Complete</span><br>Course Module</h1>
<p>Everything you need to know about networking concepts for the CompTIA Network+ exam. OSI model, protocols, topologies, IPv4, cloud, and more — all in one place.</p>
<div class="hero-stats">
<div class="hero-stat"><span class="num">9</span><span class="label">Major Topics</span></div>
<div class="hero-stat"><span class="num">7</span><span class="label">OSI Layers</span></div>
<div class="hero-stat"><span class="num">14</span><span class="label">Key Protocols</span></div>
<div class="hero-stat"><span class="num">23%</span><span class="label">Exam Weight</span></div>
</div>
</div>
<!-- ══════════ OSI MODEL ══════════ -->
<section class="section fade-in" id="osi">
<span class="section-tag" style="color: var(--green);">// 01 — OSI Model</span>
<h2>The OSI Model</h2>
<p class="section-intro">The Open Systems Interconnection (OSI) model is a conceptual framework that standardizes network communication into seven distinct layers. Each layer has a specific role and communicates with the layers above and below it. Think of it as a recipe — each step depends on the one before it.</p>
<div class="info-box info-cyan">
<span class="info-label" style="color: var(--cyan);">📡 Memory Aid</span>
<strong>Top-down:</strong> "All People Seem To Need Data Processing" (Application → Physical)<br>
<strong>Bottom-up:</strong> "Please Do Not Throw Sausage Pizza Away" (Physical → Application)
</div>
<div class="osi-stack">
<div class="osi-layer layer-7">
<div class="osi-num">7</div>
<div class="osi-info">
<div class="osi-name">Application</div>
<div class="osi-pdu">PDU: Data</div>
</div>
<div class="osi-examples">
<span class="label">Protocols / Examples</span>
<span class="val">HTTP, HTTPS, FTP, DNS, SMTP, SNMP, DHCP, SSH, Telnet, RDP</span>
</div>
</div>
<div class="osi-layer layer-6">
<div class="osi-num">6</div>
<div class="osi-info">
<div class="osi-name">Presentation</div>
<div class="osi-pdu">PDU: Data</div>
</div>
<div class="osi-examples">
<span class="label">Protocols / Examples</span>
<span class="val">TLS/SSL, JPEG, MPEG, ASCII, EBCDIC, encryption, compression</span>
</div>
</div>
<div class="osi-layer layer-5">
<div class="osi-num">5</div>
<div class="osi-info">
<div class="osi-name">Session</div>
<div class="osi-pdu">PDU: Data</div>
</div>
<div class="osi-examples">
<span class="label">Protocols / Examples</span>
<span class="val">NetBIOS, SOCKS, SIP, RPC, NFS — manages sessions/dialogs</span>
</div>
</div>
<div class="osi-layer layer-4">
<div class="osi-num">4</div>
<div class="osi-info">
<div class="osi-name">Transport</div>
<div class="osi-pdu">PDU: Segment</div>
</div>
<div class="osi-examples">
<span class="label">Protocols / Examples</span>
<span class="val">TCP (reliable), UDP (fast) — ports, flow control, segmentation</span>
</div>
</div>
<div class="osi-layer layer-3">
<div class="osi-num">3</div>
<div class="osi-info">
<div class="osi-name">Network</div>
<div class="osi-pdu">PDU: Packet</div>
</div>
<div class="osi-examples">
<span class="label">Protocols / Examples</span>
<span class="val">IP, ICMP, OSPF, BGP, EIGRP — routers, logical addressing</span>
</div>
</div>
<div class="osi-layer layer-2">
<div class="osi-num">2</div>
<div class="osi-info">
<div class="osi-name">Data Link</div>
<div class="osi-pdu">PDU: Frame</div>
</div>
<div class="osi-examples">
<span class="label">Protocols / Examples</span>
<span class="val">Ethernet, 802.11 Wi-Fi, ARP, PPP, STP — switches, MAC addresses</span>
</div>
</div>
<div class="osi-layer layer-1">
<div class="osi-num">1</div>
<div class="osi-info">
<div class="osi-name">Physical</div>
<div class="osi-pdu">PDU: Bit</div>
</div>
<div class="osi-examples">
<span class="label">Protocols / Examples</span>
<span class="val">Ethernet cables, fiber, hubs, repeaters, voltage signals, 1s and 0s</span>
</div>
</div>
</div>
<div class="section-divider"></div>
<h3>Layer Deep Dives</h3>
<div class="grid-2" style="gap: 16px;">
<div class="card">
<h4>Layer 1 — Physical</h4>
<p>Deals with raw bit transmission over a physical medium. Defines electrical, optical, and radio specifications. Devices: hubs, repeaters, cables. When there's a "bad cable," that's a Layer 1 problem.</p>
<div class="info-box info-red" style="margin: 0; padding: 10px 14px;">
<span style="font-family: var(--mono); font-size: 11px; color: var(--red);">KEY EXAM POINT: Hubs operate at Layer 1 — they broadcast all traffic to all ports (collision domain).</span>
</div>
</div>
<div class="card">
<h4>Layer 2 — Data Link</h4>
<p>Provides node-to-node transfer and error detection using MAC addresses. Split into two sublayers: LLC (Logical Link Control) for flow control, and MAC (Media Access Control) for addressing. Devices: switches, bridges.</p>
<div class="info-box info-orange" style="margin: 0; padding: 10px 14px;">
<span style="font-family: var(--mono); font-size: 11px; color: var(--orange);">MAC addresses = 48-bit hardware address (e.g., AA:BB:CC:DD:EE:FF) — burned into NICs.</span>
</div>
</div>
<div class="card">
<h4>Layer 3 — Network</h4>
<p>Handles logical addressing and routing. IP addresses live here. Routers inspect Layer 3 headers to make forwarding decisions. Protocols: IP, ICMP (ping), OSPF, BGP. This is where subnetting lives.</p>
<div class="info-box info-orange" style="margin: 0; padding: 10px 14px;">
<span style="font-family: var(--mono); font-size: 11px; color: var(--orange);">Routers break up broadcast domains. Each router interface is a separate network.</span>
</div>
</div>
<div class="card">
<h4>Layer 4 — Transport</h4>
<p>TCP provides reliable, ordered, error-checked delivery (3-way handshake: SYN, SYN-ACK, ACK). UDP is connectionless and fast — no guarantees. Port numbers live at Layer 4 to multiplex services.</p>
<div class="info-box info-cyan" style="margin: 0; padding: 10px 14px;">
<span style="font-family: var(--mono); font-size: 11px; color: var(--cyan);">TCP: SYN → SYN-ACK → ACK to open. FIN/RST to close. Window size controls flow.</span>
</div>
</div>
<div class="card">
<h4>Layer 5 — Session</h4>
<p>Manages sessions between applications — opening, maintaining, and terminating conversations. Enables full-duplex vs half-duplex modes. Examples: NetBIOS for Windows networking, SIP for VoIP, RPC.</p>
</div>
<div class="card">
<h4>Layer 6 — Presentation</h4>
<p>Translates, encrypts, and compresses data. Converts from application format to network format and back. TLS/SSL encryption happens here. File formats like JPEG, MP4, and character encoding like ASCII.</p>
<div class="info-box info-green" style="margin: 0; padding: 10px 14px;">
<span style="font-family: var(--mono); font-size: 11px; color: var(--green);">TLS happens at Layer 6 (encryption) but TLS handshake negotiation touches Layer 4-7 interaction.</span>
</div>
</div>
</div>
<div class="section-divider" id="encapsulation"></div>
<h3>Encapsulation / Decapsulation</h3>
<p>Data travels down the OSI stack on the sending side (encapsulation) and up the stack on the receiving side (decapsulation). Each layer wraps data with its own header (and sometimes trailer).</p>
<div style="overflow-x: auto; padding: 20px 0;">
<div style="min-width: 700px;">
<div style="display: flex; flex-direction: column; gap: 6px; font-family: var(--mono); font-size: 12px;">
<div style="display: flex; align-items: center; gap: 10px;">
<span style="color: var(--text-dim); width: 110px;">App (L7):</span>
<div style="padding: 6px 12px; background: rgba(0,229,160,.12); border: 1px solid rgba(0,229,160,.3); border-radius: 4px; color: var(--green);">DATA</div>
</div>
<div style="display: flex; align-items: center; gap: 10px;">
<span style="color: var(--text-dim); width: 110px;">Transport (L4):</span>
<div style="padding: 6px 12px; background: rgba(0,212,255,.12); border: 1px solid rgba(0,212,255,.3); border-radius: 4px 0 0 4px; color: var(--cyan);">TCP/UDP Header</div>
<div style="padding: 6px 12px; background: rgba(0,229,160,.08); border: 1px solid rgba(0,229,160,.2); border-radius: 0 4px 4px 0; color: var(--green-dim);">DATA</div>
</div>
<div style="display: flex; align-items: center; gap: 10px;">
<span style="color: var(--text-dim); width: 110px;">Network (L3):</span>
<div style="padding: 6px 12px; background: rgba(255,140,66,.12); border: 1px solid rgba(255,140,66,.3); border-radius: 4px 0 0 4px; color: var(--orange);">IP Header</div>
<div style="padding: 6px 12px; background: rgba(0,212,255,.08); border: 1px solid rgba(0,212,255,.2); border-radius: 0; color: var(--cyan-dim);">TCP Header</div>
<div style="padding: 6px 12px; background: rgba(0,229,160,.06); border: 1px solid rgba(0,229,160,.15); border-radius: 0 4px 4px 0; color: var(--green-dim);">DATA</div>
</div>
<div style="display: flex; align-items: center; gap: 10px;">
<span style="color: var(--text-dim); width: 110px;">Data Link (L2):</span>
<div style="padding: 6px 12px; background: rgba(255,77,109,.12); border: 1px solid rgba(255,77,109,.3); border-radius: 4px 0 0 4px; color: var(--red);">Eth Header</div>
<div style="padding: 6px 12px; background: rgba(255,140,66,.08); border: 1px solid rgba(255,140,66,.2); border-radius: 0; color: var(--orange-dim);">IP Hdr</div>
<div style="padding: 6px 12px; background: rgba(0,212,255,.06); border: 1px solid rgba(0,212,255,.15); border-radius: 0; color: var(--cyan-dim);">TCP Hdr</div>
<div style="padding: 6px 12px; background: rgba(0,229,160,.04); border: 1px solid rgba(0,229,160,.1); border-radius: 0; color: var(--green-dim);">DATA</div>
<div style="padding: 6px 12px; background: rgba(255,77,109,.1); border: 1px solid rgba(255,77,109,.25); border-radius: 0 4px 4px 0; color: var(--red);">FCS</div>
</div>
<div style="display: flex; align-items: center; gap: 10px;">
<span style="color: var(--text-dim); width: 110px;">Physical (L1):</span>
<div style="padding: 6px 12px; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.1); border-radius: 4px; color: var(--text-dim);">1010110100101011 ... (raw bits on wire)</div>
</div>
</div>
<p style="font-size: 12px; color: var(--text-dim); margin-top: 14px;">FCS = Frame Check Sequence (CRC error detection at Layer 2)</p>
</div>
</div>
</section>
<!-- ══════════ APPLIANCES ══════════ -->
<section class="section fade-in" id="appliances">
<span class="section-tag" style="color: var(--orange);">// 02 — Network Appliances</span>
<h2>Networking Appliances</h2>
<p class="section-intro">Physical or virtual devices that perform specific network functions. Knowing which OSI layer each device operates at is crucial — it determines what they can "see" and what decisions they can make.</p>
<div class="grid-3" style="gap: 16px;">
<div class="appliance-card">
<div class="appliance-icon" style="background: rgba(0,212,255,.1);">🔀</div>
<div>
<div class="appliance-name">Router</div>
<div class="appliance-layer">OSI LAYER 3 — NETWORK</div>
</div>
<div class="appliance-desc">Connects different networks together and forwards packets based on IP addresses. Uses routing tables (static or dynamic via OSPF, BGP, EIGRP). Separates broadcast domains. Every interface is a separate subnet.</div>
<div class="info-box info-cyan" style="margin: 0; padding: 8px 12px; font-size: 12px;">
<strong>Key:</strong> Routers use IP (L3) addresses. They strip and rebuild frames (L2) at each hop.
</div>
</div>
<div class="appliance-card">
<div class="appliance-icon" style="background: rgba(0,229,160,.1);">⚡</div>
<div>
<div class="appliance-name">Switch</div>
<div class="appliance-layer">OSI LAYER 2 — DATA LINK (L3 for managed)</div>
</div>
<div class="appliance-desc">Connects devices within a LAN using MAC address tables (CAM table). Learns MAC addresses from incoming frames and forwards unicast traffic only to the correct port. Reduces collisions. Layer 3 switches can also route between VLANs.</div>
<div class="info-box info-green" style="margin: 0; padding: 8px 12px; font-size: 12px;">
<strong>STP:</strong> Spanning Tree Protocol prevents loops. VLANs segment traffic logically.
</div>
</div>
<div class="appliance-card">
<div class="appliance-icon" style="background: rgba(255,77,109,.1);">🛡️</div>
<div>
<div class="appliance-name">Firewall</div>
<div class="appliance-layer">OSI LAYER 3–7 (depending on type)</div>
</div>
<div class="appliance-desc">Filters traffic based on rules. Stateless (packet filtering, L3-4) or Stateful (tracks connection state, L4-5) or NGFW — Next-Gen (deep packet inspection, L7, app awareness). Can be hardware, software, or cloud-based.</div>
<div class="info-box info-red" style="margin: 0; padding: 8px 12px; font-size: 12px;">
<strong>NGFW:</strong> Inspects application layer, blocks specific apps (Facebook, BitTorrent), performs SSL inspection.
</div>
</div>
<div class="appliance-card">
<div class="appliance-icon" style="background: rgba(255,209,102,.1);">🔍</div>
<div>
<div class="appliance-name">IDS / IPS</div>
<div class="appliance-layer">OSI LAYER 3–7 — PASSIVE / INLINE</div>
</div>
<div class="appliance-desc"><strong>IDS (Intrusion Detection System):</strong> Monitors and alerts only — does not block. Placed out-of-band (passive/tap mode). <strong>IPS (Intrusion Prevention System):</strong> Actively blocks malicious traffic — placed inline. Both use signature-based and anomaly-based detection.</div>
</div>
<div class="appliance-card">
<div class="appliance-icon" style="background: rgba(0,212,255,.1);">⚖️</div>
<div>
<div class="appliance-name">Load Balancer</div>
<div class="appliance-layer">OSI LAYER 4–7</div>
</div>
<div class="appliance-desc">Distributes incoming traffic across multiple servers to prevent overload. Algorithms: Round Robin, Least Connections, IP Hash, Weighted. Provides high availability, session persistence (sticky sessions), and health checking.</div>
</div>
<div class="appliance-card">
<div class="appliance-icon" style="background: rgba(0,229,160,.1);">🔗</div>
<div>
<div class="appliance-name">Proxy Server</div>
<div class="appliance-layer">OSI LAYER 7 — APPLICATION</div>
</div>
<div class="appliance-desc"><strong>Forward Proxy:</strong> Sits between clients and internet. Provides caching, content filtering, anonymity. <strong>Reverse Proxy:</strong> Sits in front of servers — hides backend infrastructure, provides SSL termination, caching, load balancing.</div>
</div>
<div class="appliance-card">
<div class="appliance-icon" style="background: rgba(255,140,66,.1);">💾</div>
<div>
<div class="appliance-name">NAS</div>
<div class="appliance-layer">NETWORK ATTACHED STORAGE</div>
</div>
<div class="appliance-desc">File-level storage connected to a network. Uses protocols like NFS, SMB/CIFS. Accessible by multiple clients simultaneously. Acts as a dedicated file server. Common for home/SMB file sharing and backups. Has its own IP address.</div>
</div>
<div class="appliance-card">
<div class="appliance-icon" style="background: rgba(255,77,109,.1);">🏗️</div>
<div>
<div class="appliance-name">SAN</div>
<div class="appliance-layer">STORAGE AREA NETWORK</div>
</div>
<div class="appliance-desc">Block-level storage over a dedicated high-speed network. Uses Fibre Channel (FC) or iSCSI. Appears to servers as a local disk. Extremely fast, low latency. Used in enterprise environments for databases and VMs. More complex and expensive than NAS.</div>
<div class="info-box info-orange" style="margin: 0; padding: 8px 12px; font-size: 12px;">
<strong>NAS vs SAN:</strong> NAS = file-level (smarter, over Ethernet). SAN = block-level (faster, dedicated network).
</div>
</div>
<div class="appliance-card">
<div class="appliance-icon" style="background: rgba(0,212,255,.1);">📡</div>
<div>
<div class="appliance-name">Wireless Devices</div>
<div class="appliance-layer">OSI LAYER 1–2</div>
</div>
<div class="appliance-desc"><strong>WAP (Wireless Access Point):</strong> Extends wired network wirelessly. <strong>Wireless Controller (WLC):</strong> Centrally manages multiple WAPs (thin APs). <strong>LWAPP/CAPWAP:</strong> Protocol used between controller and APs. Supports roaming, load balancing, and centralized policy enforcement.</div>
</div>
</div>
<div class="section-divider"></div>
<div class="info-box info-yellow">
<span class="info-label" style="color: var(--yellow);">🧠 Exam Quick Reference</span>
<strong>Hub</strong> (L1) → dumb, broadcasts everywhere | <strong>Switch</strong> (L2) → MAC table, smart unicast | <strong>Router</strong> (L3) → IP routing, breaks broadcasts | <strong>Firewall</strong> (L3–7) → filters by rules | <strong>IDS</strong> → passive, alerts only | <strong>IPS</strong> → inline, blocks actively
</div>
</section>
<!-- ══════════ TOPOLOGIES ══════════ -->
<section class="section fade-in" id="topologies">
<span class="section-tag" style="color: var(--cyan);">// 03 — Network Topologies</span>
<h2>Network Topologies</h2>
<p class="section-intro">A network topology defines how devices are physically and logically connected. Physical topology is the actual cable/hardware layout. Logical topology is how data flows through the network, which may differ from physical.</p>
<div class="topology-grid">
<!-- STAR -->
<div class="topology-card">
<h4>⭐ Star / Hub-and-Spoke</h4>
<svg class="topo-svg" viewBox="0 0 200 120">
<!-- Center hub -->
<circle cx="100" cy="60" r="14" fill="rgba(0,212,255,.2)" stroke="#00d4ff" stroke-width="1.5"/>
<text x="100" y="65" text-anchor="middle" fill="#00d4ff" font-size="8" font-family="JetBrains Mono">HUB</text>
<!-- Lines to nodes -->
<line x1="100" y1="46" x2="100" y2="18" stroke="#243352" stroke-width="1.5"/>
<line x1="100" y1="74" x2="100" y2="102" stroke="#243352" stroke-width="1.5"/>
<line x1="86" y1="52" x2="42" y2="30" stroke="#243352" stroke-width="1.5"/>
<line x1="114" y1="52" x2="158" y2="30" stroke="#243352" stroke-width="1.5"/>
<line x1="86" y1="68" x2="42" y2="90" stroke="#243352" stroke-width="1.5"/>
<line x1="114" y1="68" x2="158" y2="90" stroke="#243352" stroke-width="1.5"/>
<!-- End nodes -->
<circle cx="100" cy="12" r="6" fill="rgba(0,229,160,.2)" stroke="#00e5a0" stroke-width="1.5"/>
<circle cx="100" cy="108" r="6" fill="rgba(0,229,160,.2)" stroke="#00e5a0" stroke-width="1.5"/>
<circle cx="36" cy="26" r="6" fill="rgba(0,229,160,.2)" stroke="#00e5a0" stroke-width="1.5"/>
<circle cx="164" cy="26" r="6" fill="rgba(0,229,160,.2)" stroke="#00e5a0" stroke-width="1.5"/>
<circle cx="36" cy="94" r="6" fill="rgba(0,229,160,.2)" stroke="#00e5a0" stroke-width="1.5"/>
<circle cx="164" cy="94" r="6" fill="rgba(0,229,160,.2)" stroke="#00e5a0" stroke-width="1.5"/>
</svg>
<p>All devices connect to a central hub/switch. Single point of failure at the center, but individual node failures don't affect others. Most common LAN topology today.</p>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim); display: flex; gap: 12px; margin-top: 4px;">
<span style="color: var(--green);">✓ Easy to troubleshoot</span>
<span style="color: var(--red);">✗ Center = SPOF</span>
</div>
</div>
<!-- MESH -->
<div class="topology-card">
<h4>🕸 Full Mesh</h4>
<svg class="topo-svg" viewBox="0 0 200 120">
<!-- 4 nodes -->
<circle cx="60" cy="30" r="8" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="140" cy="30" r="8" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="60" cy="90" r="8" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="140" cy="90" r="8" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1.5"/>
<!-- All connections -->
<line x1="68" y1="30" x2="132" y2="30" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<line x1="60" y1="38" x2="60" y2="82" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<line x1="140" y1="38" x2="140" y2="82" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<line x1="68" y1="90" x2="132" y2="90" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<line x1="66" y1="36" x2="134" y2="84" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<line x1="134" y1="36" x2="66" y2="84" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<text x="100" y="64" text-anchor="middle" fill="#ff8c42" font-size="7" font-family="JetBrains Mono">n(n-1)/2</text>
<text x="100" y="76" text-anchor="middle" fill="rgba(255,140,66,.5)" font-size="7" font-family="JetBrains Mono">connections</text>
</svg>
<p>Every device connects directly to every other device. Highly redundant — no SPOF. Used in WANs and critical backbone networks. Formula: n(n-1)/2 connections needed.</p>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim); display: flex; gap: 12px; margin-top: 4px;">
<span style="color: var(--green);">✓ High redundancy</span>
<span style="color: var(--red);">✗ Expensive to scale</span>
</div>
</div>
<!-- RING -->
<div class="topology-card">
<h4>⭕ Ring (Logical)</h4>
<svg class="topo-svg" viewBox="0 0 200 120">
<circle cx="100" cy="60" r="40" fill="none" stroke="#243352" stroke-width="1.5" stroke-dasharray="4,4"/>
<!-- 6 nodes on ring -->
<circle cx="100" cy="20" r="7" fill="rgba(0,212,255,.2)" stroke="#00d4ff" stroke-width="1.5"/>
<circle cx="135" cy="40" r="7" fill="rgba(0,212,255,.2)" stroke="#00d4ff" stroke-width="1.5"/>
<circle cx="135" cy="80" r="7" fill="rgba(0,212,255,.2)" stroke="#00d4ff" stroke-width="1.5"/>
<circle cx="100" cy="100" r="7" fill="rgba(0,212,255,.2)" stroke="#00d4ff" stroke-width="1.5"/>
<circle cx="65" cy="80" r="7" fill="rgba(0,212,255,.2)" stroke="#00d4ff" stroke-width="1.5"/>
<circle cx="65" cy="40" r="7" fill="rgba(0,212,255,.2)" stroke="#00d4ff" stroke-width="1.5"/>
<!-- Arrow showing token flow -->
<path d="M 110 22 A 40 40 0 0 1 138 48" stroke="#00d4ff" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
<defs>
<marker id="arrow" markerWidth="6" markerHeight="6" refX="3" refY="3" orient="auto">
<path d="M 0 0 L 6 3 L 0 6 Z" fill="#00d4ff"/>
</marker>
</defs>
<text x="100" y="62" text-anchor="middle" fill="rgba(0,212,255,.4)" font-size="7" font-family="JetBrains Mono">token</text>
</svg>
<p>Data travels in one direction around a ring. Token Ring uses a token-passing system — only device holding the token can transmit. Single break can break the whole ring. Largely historical (Token Ring, FDDI).</p>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim); display: flex; gap: 12px; margin-top: 4px;">
<span style="color: var(--green);">✓ No collisions</span>
<span style="color: var(--red);">✗ One break = failure</span>
</div>
</div>
<!-- SPINE AND LEAF -->
<div class="topology-card">
<h4>🍃 Spine and Leaf</h4>
<svg class="topo-svg" viewBox="0 0 200 120">
<!-- Spine switches -->
<rect x="20" y="15" width="35" height="18" rx="3" fill="rgba(0,229,160,.15)" stroke="#00e5a0" stroke-width="1.5"/>
<rect x="83" y="15" width="35" height="18" rx="3" fill="rgba(0,229,160,.15)" stroke="#00e5a0" stroke-width="1.5"/>
<rect x="146" y="15" width="35" height="18" rx="3" fill="rgba(0,229,160,.15)" stroke="#00e5a0" stroke-width="1.5"/>
<text x="37" y="27" text-anchor="middle" fill="#00e5a0" font-size="6" font-family="JetBrains Mono">SPINE</text>
<text x="100" y="27" text-anchor="middle" fill="#00e5a0" font-size="6" font-family="JetBrains Mono">SPINE</text>
<text x="163" y="27" text-anchor="middle" fill="#00e5a0" font-size="6" font-family="JetBrains Mono">SPINE</text>
<!-- Leaf switches -->
<rect x="10" y="65" width="40" height="18" rx="3" fill="rgba(0,212,255,.12)" stroke="#00d4ff" stroke-width="1"/>
<rect x="80" y="65" width="40" height="18" rx="3" fill="rgba(0,212,255,.12)" stroke="#00d4ff" stroke-width="1"/>
<rect x="150" y="65" width="40" height="18" rx="3" fill="rgba(0,212,255,.12)" stroke="#00d4ff" stroke-width="1"/>
<text x="30" y="77" text-anchor="middle" fill="#00d4ff" font-size="6" font-family="JetBrains Mono">LEAF</text>
<text x="100" y="77" text-anchor="middle" fill="#00d4ff" font-size="6" font-family="JetBrains Mono">LEAF</text>
<text x="170" y="77" text-anchor="middle" fill="#00d4ff" font-size="6" font-family="JetBrains Mono">LEAF</text>
<!-- Each leaf connects to all spines -->
<line x1="30" y1="65" x2="37" y2="33" stroke="#243352" stroke-width="1"/>
<line x1="30" y1="65" x2="100" y2="33" stroke="#243352" stroke-width="1"/>
<line x1="30" y1="65" x2="163" y2="33" stroke="#243352" stroke-width="1"/>
<line x1="100" y1="65" x2="37" y2="33" stroke="#243352" stroke-width="1"/>
<line x1="100" y1="65" x2="100" y2="33" stroke="#243352" stroke-width="1"/>
<line x1="100" y1="65" x2="163" y2="33" stroke="#243352" stroke-width="1"/>
<line x1="170" y1="65" x2="37" y2="33" stroke="#243352" stroke-width="1"/>
<line x1="170" y1="65" x2="100" y2="33" stroke="#243352" stroke-width="1"/>
<line x1="170" y1="65" x2="163" y2="33" stroke="#243352" stroke-width="1"/>
<!-- Servers below leaves -->
<line x1="30" y1="83" x2="30" y2="105" stroke="#243352" stroke-width="1"/>
<line x1="100" y1="83" x2="100" y2="105" stroke="#243352" stroke-width="1"/>
<line x1="170" y1="83" x2="170" y2="105" stroke="#243352" stroke-width="1"/>
<circle cx="30" cy="108" r="4" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1"/>
<circle cx="100" cy="108" r="4" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1"/>
<circle cx="170" cy="108" r="4" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1"/>
</svg>
<p>Modern data center topology. Every leaf switch connects to every spine switch. Provides predictable latency (always 2 hops), east-west traffic optimization, and easy horizontal scaling. Replace the Three-Tier model in modern DCs.</p>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim); display: flex; gap: 12px; margin-top: 4px;">
<span style="color: var(--green);">✓ Equal latency</span>
<span style="color: var(--green);">✓ Scales easily</span>
</div>
</div>
<!-- THREE TIER -->
<div class="topology-card">
<h4>🏢 Three-Tier Hierarchical</h4>
<svg class="topo-svg" viewBox="0 0 200 120">
<!-- Core -->
<rect x="65" y="8" width="70" height="20" rx="4" fill="rgba(255,77,109,.12)" stroke="#ff4d6d" stroke-width="1.5"/>
<text x="100" y="22" text-anchor="middle" fill="#ff4d6d" font-size="8" font-family="JetBrains Mono">CORE</text>
<!-- Distribution -->
<rect x="20" y="50" width="65" height="18" rx="3" fill="rgba(255,140,66,.1)" stroke="#ff8c42" stroke-width="1.5"/>
<rect x="115" y="50" width="65" height="18" rx="3" fill="rgba(255,140,66,.1)" stroke="#ff8c42" stroke-width="1.5"/>
<text x="52" y="62" text-anchor="middle" fill="#ff8c42" font-size="6.5" font-family="JetBrains Mono">DISTRIBUTION</text>
<text x="148" y="62" text-anchor="middle" fill="#ff8c42" font-size="6.5" font-family="JetBrains Mono">DISTRIBUTION</text>
<!-- Access -->
<rect x="5" y="92" width="35" height="18" rx="3" fill="rgba(0,212,255,.08)" stroke="#00d4ff" stroke-width="1"/>
<rect x="45" y="92" width="35" height="18" rx="3" fill="rgba(0,212,255,.08)" stroke="#00d4ff" stroke-width="1"/>
<rect x="120" y="92" width="35" height="18" rx="3" fill="rgba(0,212,255,.08)" stroke="#00d4ff" stroke-width="1"/>
<rect x="160" y="92" width="35" height="18" rx="3" fill="rgba(0,212,255,.08)" stroke="#00d4ff" stroke-width="1"/>
<text x="22" y="104" text-anchor="middle" fill="#00d4ff" font-size="5.5" font-family="JetBrains Mono">ACCESS</text>
<text x="62" y="104" text-anchor="middle" fill="#00d4ff" font-size="5.5" font-family="JetBrains Mono">ACCESS</text>
<text x="137" y="104" text-anchor="middle" fill="#00d4ff" font-size="5.5" font-family="JetBrains Mono">ACCESS</text>
<text x="177" y="104" text-anchor="middle" fill="#00d4ff" font-size="5.5" font-family="JetBrains Mono">ACCESS</text>
<!-- Lines -->
<line x1="100" y1="28" x2="52" y2="50" stroke="#243352" stroke-width="1.5"/>
<line x1="100" y1="28" x2="148" y2="50" stroke="#243352" stroke-width="1.5"/>
<line x1="52" y1="68" x2="22" y2="92" stroke="#243352" stroke-width="1"/>
<line x1="52" y1="68" x2="62" y2="92" stroke="#243352" stroke-width="1"/>
<line x1="148" y1="68" x2="137" y2="92" stroke="#243352" stroke-width="1"/>
<line x1="148" y1="68" x2="177" y2="92" stroke="#243352" stroke-width="1"/>
</svg>
<p>Traditional enterprise topology with Core (fast backbone), Distribution (routing/policies), and Access (endpoint connection) layers. Predictable, well-understood, but more latency for east-west traffic than Spine-Leaf.</p>
</div>
<!-- POINT TO POINT -->
<div class="topology-card">
<h4>↔ Point-to-Point</h4>
<svg class="topo-svg" viewBox="0 0 200 120">
<circle cx="40" cy="60" r="20" fill="rgba(0,229,160,.1)" stroke="#00e5a0" stroke-width="1.5"/>
<circle cx="160" cy="60" r="20" fill="rgba(0,229,160,.1)" stroke="#00e5a0" stroke-width="1.5"/>
<text x="40" y="64" text-anchor="middle" fill="#00e5a0" font-size="8" font-family="JetBrains Mono">A</text>
<text x="160" y="64" text-anchor="middle" fill="#00e5a0" font-size="8" font-family="JetBrains Mono">B</text>
<line x1="60" y1="60" x2="140" y2="60" stroke="#00e5a0" stroke-width="2.5" stroke-dasharray="6,3"/>
<!-- Arrows showing bidirectional -->
<path d="M 75 55 L 60 60 L 75 65" fill="none" stroke="#00e5a0" stroke-width="1.5"/>
<path d="M 125 55 L 140 60 L 125 65" fill="none" stroke="#00e5a0" stroke-width="1.5"/>
<text x="100" y="48" text-anchor="middle" fill="rgba(0,229,160,.5)" font-size="8" font-family="JetBrains Mono">dedicated link</text>
</svg>
<p>A direct connection between exactly two devices. Used in WAN links (leased lines, T1/T3), serial connections, and PPP. Simple but doesn't scale. Very common in WAN environments and wireless backhaul.</p>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim);">
<span style="color: var(--green);">✓ Simple, dedicated bandwidth</span>
</div>
</div>
<!-- HYBRID -->
<div class="topology-card">
<h4>🔀 Hybrid</h4>
<svg class="topo-svg" viewBox="0 0 200 120">
<!-- Star cluster on left -->
<circle cx="40" cy="60" r="12" fill="rgba(0,212,255,.15)" stroke="#00d4ff" stroke-width="1.5"/>
<circle cx="15" cy="35" r="6" fill="rgba(0,212,255,.1)" stroke="#00d4ff" stroke-width="1"/>
<circle cx="15" cy="60" r="6" fill="rgba(0,212,255,.1)" stroke="#00d4ff" stroke-width="1"/>
<circle cx="15" cy="85" r="6" fill="rgba(0,212,255,.1)" stroke="#00d4ff" stroke-width="1"/>
<line x1="28" y1="48" x2="21" y2="38" stroke="#00d4ff" stroke-width="1"/>
<line x1="28" y1="60" x2="21" y2="60" stroke="#00d4ff" stroke-width="1"/>
<line x1="28" y1="72" x2="21" y2="80" stroke="#00d4ff" stroke-width="1"/>
<!-- Mesh in middle-right -->
<circle cx="110" cy="40" r="8" fill="rgba(255,140,66,.15)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="145" cy="60" r="8" fill="rgba(255,140,66,.15)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="110" cy="80" r="8" fill="rgba(255,140,66,.15)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="175" cy="40" r="8" fill="rgba(255,140,66,.15)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="175" cy="80" r="8" fill="rgba(255,140,66,.15)" stroke="#ff8c42" stroke-width="1.5"/>
<line x1="118" y1="40" x2="137" y2="56" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<line x1="118" y1="80" x2="137" y2="64" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<line x1="118" y1="40" x2="167" y2="40" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<line x1="118" y1="80" x2="167" y2="80" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<line x1="153" y1="60" x2="167" y2="46" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<line x1="153" y1="60" x2="167" y2="74" stroke="#ff8c42" stroke-width="1" opacity=".6"/>
<!-- Connection between the two -->
<line x1="52" y1="60" x2="102" y2="60" stroke="#00e5a0" stroke-width="2" stroke-dasharray="4,3"/>
<text x="77" y="55" text-anchor="middle" fill="rgba(0,229,160,.5)" font-size="6" font-family="JetBrains Mono">WAN</text>
</svg>
<p>Combines two or more topology types. Most real-world networks are hybrid — e.g., a star LAN connected via a mesh WAN. Provides flexibility to optimize different parts of the network for their specific needs.</p>
</div>
<!-- COLLAPSED CORE -->
<div class="topology-card">
<h4>🗜 Collapsed Core</h4>
<svg class="topo-svg" viewBox="0 0 200 120">
<!-- Combined core/distribution -->
<rect x="55" y="18" width="90" height="28" rx="5" fill="rgba(0,229,160,.12)" stroke="#00e5a0" stroke-width="2"/>
<text x="100" y="31" text-anchor="middle" fill="#00e5a0" font-size="7" font-family="JetBrains Mono">CORE + DISTRIBUTION</text>
<text x="100" y="41" text-anchor="middle" fill="rgba(0,229,160,.5)" font-size="6" font-family="JetBrains Mono">(collapsed into one layer)</text>
<!-- Access switches -->
<rect x="10" y="78" width="40" height="16" rx="3" fill="rgba(0,212,255,.08)" stroke="#00d4ff" stroke-width="1"/>
<rect x="80" y="78" width="40" height="16" rx="3" fill="rgba(0,212,255,.08)" stroke="#00d4ff" stroke-width="1"/>
<rect x="150" y="78" width="40" height="16" rx="3" fill="rgba(0,212,255,.08)" stroke="#00d4ff" stroke-width="1"/>
<text x="30" y="90" text-anchor="middle" fill="#00d4ff" font-size="6" font-family="JetBrains Mono">ACCESS</text>
<text x="100" y="90" text-anchor="middle" fill="#00d4ff" font-size="6" font-family="JetBrains Mono">ACCESS</text>
<text x="170" y="90" text-anchor="middle" fill="#00d4ff" font-size="6" font-family="JetBrains Mono">ACCESS</text>
<line x1="100" y1="46" x2="30" y2="78" stroke="#243352" stroke-width="1.5"/>
<line x1="100" y1="46" x2="100" y2="78" stroke="#243352" stroke-width="1.5"/>
<line x1="100" y1="46" x2="170" y2="78" stroke="#243352" stroke-width="1.5"/>
<!-- End devices -->
<line x1="30" y1="94" x2="30" y2="110" stroke="#243352" stroke-width="1"/>
<line x1="100" y1="94" x2="100" y2="110" stroke="#243352" stroke-width="1"/>
<line x1="170" y1="94" x2="170" y2="110" stroke="#243352" stroke-width="1"/>
<circle cx="30" cy="112" r="3" fill="rgba(255,140,66,.3)" stroke="#ff8c42" stroke-width="1"/>
<circle cx="100" cy="112" r="3" fill="rgba(255,140,66,.3)" stroke="#ff8c42" stroke-width="1"/>
<circle cx="170" cy="112" r="3" fill="rgba(255,140,66,.3)" stroke="#ff8c42" stroke-width="1"/>
</svg>
<p>Merges the Core and Distribution layers into one. Used in smaller networks where the cost and complexity of separate layers isn't justified. Reduces hardware cost but may become a bottleneck as the network grows.</p>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim);">
<span style="color: var(--green);">✓ Cost effective</span>
<span style="color: var(--red); margin-left: 12px;">✗ Bottleneck risk</span>
</div>
</div>
</div>
</section>
<!-- ══════════ PORTS & PROTOCOLS ══════════ -->
<section class="section fade-in" id="ports">
<span class="section-tag" style="color: var(--yellow);">// 04 — Ports & Protocols</span>
<h2>Ports & Protocols</h2>
<p class="section-intro">Port numbers identify specific services running on a device. Well-known ports are 0–1023, registered ports 1024–49151, dynamic/ephemeral ports 49152–65535. Know these cold for the exam.</p>
<div class="info-box info-yellow">
<span class="info-label" style="color: var(--yellow);">🔑 Quick Rule</span>
<strong>TCP</strong> = connection-oriented, reliable, ordered, error-checked (handshake) — used when data integrity matters.<br>
<strong>UDP</strong> = connectionless, fast, no guarantees — used for DNS, streaming, gaming, VoIP.
</div>
<div style="overflow-x: auto; border-radius: 10px; border: 1px solid var(--border);">
<table class="ports-table">
<thead>
<tr>
<th>Port</th>
<th>Protocol</th>
<th>Transport</th>
<th>Full Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="port-num proto-tcp">20/21</span></td>
<td>FTP</td>
<td><span class="tag tag-tcp">TCP</span></td>
<td>File Transfer Protocol</td>
<td>Port 21 = control (commands). Port 20 = data transfer (active mode). Cleartext — not secure. Use SFTP or FTPS instead.</td>
</tr>
<tr>
<td><span class="port-num proto-tcp">22</span></td>
<td>SSH / SFTP</td>
<td><span class="tag tag-tcp">TCP</span> <span class="tag tag-secure">SECURE</span></td>
<td>Secure Shell / Secure FTP</td>
<td>Encrypted remote access shell. SFTP tunnels file transfers over SSH. Replaced Telnet and FTP for secure management. Uses public key or password auth.</td>
</tr>
<tr>
<td><span class="port-num" style="color: var(--red);">23</span></td>
<td>Telnet</td>
<td><span class="tag tag-tcp">TCP</span></td>
<td>Teletype Network</td>
<td>Remote access — CLEARTEXT. Credentials and data sent in plain text. Never use in production. Replaced by SSH. Still appears on exam — know it's insecure.</td>
</tr>
<tr>
<td><span class="port-num proto-tcp">25</span></td>
<td>SMTP</td>
<td><span class="tag tag-tcp">TCP</span></td>
<td>Simple Mail Transfer Protocol</td>
<td>Sends outbound email between mail servers. Also used by clients to submit email. Port 587 (STARTTLS) or 465 (SMTPS) for secure submission.</td>
</tr>
<tr>
<td><span class="port-num proto-both">53</span></td>
<td>DNS</td>
<td><span class="tag tag-both">TCP+UDP</span></td>
<td>Domain Name System</td>
<td>Resolves hostnames to IP addresses. UDP for queries (fast, small). TCP for zone transfers between DNS servers (large data). Hierarchical: root → TLD → authoritative.</td>
</tr>
<tr>
<td><span class="port-num proto-udp">67/68</span></td>
<td>DHCP</td>
<td><span class="tag tag-udp">UDP</span></td>
<td>Dynamic Host Config Protocol</td>
<td>Port 67 = server, 68 = client. Auto-assigns IP config. Process: DORA — Discover, Offer, Request, Acknowledge. Leases IPs for a time period.</td>
</tr>
<tr>
<td><span class="port-num proto-tcp">80</span></td>
<td>HTTP</td>
<td><span class="tag tag-tcp">TCP</span></td>
<td>Hypertext Transfer Protocol</td>
<td>Unencrypted web traffic. Request/response model. Methods: GET, POST, PUT, DELETE, HEAD. Stateless — cookies maintain sessions. OSI Layer 7.</td>
</tr>
<tr>
<td><span class="port-num proto-tcp">443</span></td>
<td>HTTPS</td>
<td><span class="tag tag-tcp">TCP</span> <span class="tag tag-secure">SECURE</span></td>
<td>HTTP Secure (over TLS)</td>
<td>HTTP encrypted via TLS. Uses certificates (PKI) for authentication. TLS 1.3 is current standard. HSTS forces HTTPS. Essential for any production web service.</td>
</tr>
<tr>
<td><span class="port-num proto-udp">161/162</span></td>
<td>SNMP</td>
<td><span class="tag tag-udp">UDP</span></td>
<td>Simple Network Mgmt Protocol</td>
<td>161 = queries to devices (GET). 162 = traps sent FROM devices to NMS (unsolicited alerts). v1/v2c use community strings (insecure). v3 adds encryption and auth.</td>
</tr>
<tr>
<td><span class="port-num proto-both">389</span></td>
<td>LDAP</td>
<td><span class="tag tag-both">TCP+UDP</span></td>
<td>Lightweight Directory Access Protocol</td>
<td>Queries/modifies directory services (Active Directory). LDAPS on port 636 adds TLS encryption. Used for authentication, user/group lookup. Think "phone book for the network."</td>
</tr>
<tr>
<td><span class="port-num proto-tcp">3389</span></td>
<td>RDP</td>
<td><span class="tag tag-tcp">TCP</span></td>
<td>Remote Desktop Protocol</td>
<td>Microsoft's remote GUI access protocol. Full graphical desktop session over the network. Should always be behind VPN or have NLA enabled. Common attack target — keep it off the public internet.</td>
</tr>
<tr>
<td><span class="port-num proto-both">5060/5061</span></td>
<td>SIP</td>
<td><span class="tag tag-both">TCP+UDP</span></td>
<td>Session Initiation Protocol</td>
<td>Initiates, modifies, terminates VoIP sessions. Port 5060 = cleartext, 5061 = TLS encrypted. Works with RTP (Real-Time Transport, UDP) for actual voice/video payload.</td>
</tr>
</tbody>
</table>
</div>
<div class="section-divider"></div>
<h3>Protocol Analysis Tips</h3>
<div class="grid-3">
<div class="card">
<h4>Secure vs Insecure Pairs</h4>
<div style="font-family: var(--mono); font-size: 12px; display: flex; flex-direction: column; gap: 8px;">
<div style="display: flex; justify-content: space-between;"><span style="color: var(--red);">Telnet :23</span><span style="color: var(--green);">SSH :22 ✓</span></div>
<div style="display: flex; justify-content: space-between;"><span style="color: var(--red);">FTP :21</span><span style="color: var(--green);">SFTP :22 ✓</span></div>
<div style="display: flex; justify-content: space-between;"><span style="color: var(--red);">HTTP :80</span><span style="color: var(--green);">HTTPS :443 ✓</span></div>
<div style="display: flex; justify-content: space-between;"><span style="color: var(--red);">LDAP :389</span><span style="color: var(--green);">LDAPS :636 ✓</span></div>
<div style="display: flex; justify-content: space-between;"><span style="color: var(--red);">SIP :5060</span><span style="color: var(--green);">SIPS :5061 ✓</span></div>
</div>
</div>
<div class="card">
<h4>UDP Protocols</h4>
<p>These use UDP because speed matters more than reliability:</p>
<div style="font-family: var(--mono); font-size: 12px; color: var(--text-dim); display: flex; flex-direction: column; gap: 4px;">
<span><span style="color: var(--orange);">:53</span> DNS queries</span>
<span><span style="color: var(--orange);">:67/68</span> DHCP</span>
<span><span style="color: var(--orange);">:69</span> TFTP</span>
<span><span style="color: var(--orange);">:123</span> NTP</span>
<span><span style="color: var(--orange);">:161</span> SNMP</span>
<span><span style="color: var(--orange);">:5060</span> SIP (also TCP)</span>
</div>
</div>
<div class="card">
<h4>DHCP DORA Process</h4>
<div style="font-family: var(--mono); font-size: 12px; display: flex; flex-direction: column; gap: 8px;">
<div><span style="color: var(--cyan);">D</span> – Discover: Client broadcasts, seeking DHCP server</div>
<div><span style="color: var(--green);">O</span> – Offer: Server responds with IP offer</div>
<div><span style="color: var(--orange);">R</span> – Request: Client accepts the offered IP</div>
<div><span style="color: var(--yellow);">A</span> – Acknowledge: Server confirms, lease begins</div>
</div>
</div>
</div>
</section>
<!-- ══════════ TRAFFIC TYPES ══════════ -->
<section class="section fade-in" id="traffic">
<span class="section-tag" style="color: var(--green);">// 05 — Traffic Types</span>
<h2>Traffic Types</h2>
<p class="section-intro">Network traffic is classified by how it's addressed and delivered. Understanding these distinctions is key for designing efficient networks and configuring devices correctly.</p>
<div class="traffic-cards">
<div class="traffic-card">
<div class="traffic-icon" style="background: rgba(0,212,255,.12);">
<svg width="30" height="30" viewBox="0 0 30 30">
<circle cx="8" cy="15" r="4" fill="rgba(0,212,255,.3)" stroke="#00d4ff" stroke-width="1.5"/>
<circle cx="22" cy="15" r="4" fill="rgba(0,212,255,.3)" stroke="#00d4ff" stroke-width="1.5"/>
<path d="M 12 15 L 18 15" stroke="#00d4ff" stroke-width="2" marker-end="url(#a1)"/>
<defs><marker id="a1" markerWidth="5" markerHeight="5" refX="4" refY="2.5" orient="auto"><path d="M 0 0 L 5 2.5 L 0 5" fill="none" stroke="#00d4ff" stroke-width="1"/></marker></defs>
</svg>
</div>
<div class="traffic-name">Unicast</div>
<p class="traffic-desc">One-to-one communication. Traffic sent from a single source to a single specific destination. Most normal web browsing, file transfers, and connections are unicast. Every device has a unique IP address for unicast.</p>
<div style="margin-top: 12px; font-family: var(--mono); font-size: 11px; color: var(--cyan);">1 → 1</div>
</div>
<div class="traffic-card">
<div class="traffic-icon" style="background: rgba(255,140,66,.12);">
<svg width="30" height="30" viewBox="0 0 30 30">
<circle cx="8" cy="15" r="4" fill="rgba(255,140,66,.3)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="22" cy="8" r="3" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1"/>
<circle cx="22" cy="15" r="3" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1"/>
<circle cx="22" cy="22" r="3" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1"/>
<line x1="12" y1="14" x2="19" y2="9" stroke="#ff8c42" stroke-width="1.5"/>
<line x1="12" y1="15" x2="19" y2="15" stroke="#ff8c42" stroke-width="1.5"/>
<line x1="12" y1="16" x2="19" y2="21" stroke="#ff8c42" stroke-width="1.5"/>
</svg>
</div>
<div class="traffic-name">Multicast</div>
<p class="traffic-desc">One-to-many (specific group) communication. A single source sends to a defined multicast group. Efficient for streaming, video conferencing, routing protocol updates. IPv4 multicast range: 224.0.0.0–239.255.255.255 (Class D).</p>
<div style="margin-top: 12px; font-family: var(--mono); font-size: 11px; color: var(--orange);">1 → group</div>
</div>
<div class="traffic-card">
<div class="traffic-icon" style="background: rgba(0,229,160,.12);">
<svg width="30" height="30" viewBox="0 0 30 30">
<circle cx="8" cy="15" r="4" fill="rgba(0,229,160,.3)" stroke="#00e5a0" stroke-width="1.5"/>
<circle cx="22" cy="8" r="3" fill="rgba(0,229,160,.2)" stroke="#00e5a0" stroke-width="1"/>
<circle cx="22" cy="15" r="3" fill="rgba(0,229,160,.2)" stroke="#00e5a0" stroke-width="1"/>
<circle cx="22" cy="22" r="3" fill="rgba(0,229,160,.2)" stroke="#00e5a0" stroke-width="1"/>
<line x1="12" y1="14" x2="19" y2="9" stroke="#00e5a0" stroke-width="1.5"/>
<line x1="12" y1="15" x2="19" y2="15" stroke="#00e5a0" stroke-width="1.5"/>
<line x1="12" y1="16" x2="19" y2="21" stroke="#00e5a0" stroke-width="1.5"/>
<text x="15" y="29" fill="rgba(0,229,160,.6)" font-size="5" font-family="JetBrains Mono">nearest</text>
</svg>
</div>
<div class="traffic-name">Anycast</div>
<p class="traffic-desc">One-to-nearest communication. Traffic is sent to one address but multiple nodes share it — routing sends traffic to the topologically nearest one. Used in CDNs, DNS (Cloudflare 1.1.1.1, Google 8.8.8.8), and IPv6. Provides redundancy and performance.</p>
<div style="margin-top: 12px; font-family: var(--mono); font-size: 11px; color: var(--green);">1 → nearest</div>
</div>
<div class="traffic-card">
<div class="traffic-icon" style="background: rgba(255,77,109,.12);">
<svg width="30" height="30" viewBox="0 0 30 30">
<circle cx="15" cy="15" r="4" fill="rgba(255,77,109,.3)" stroke="#ff4d6d" stroke-width="1.5"/>
<circle cx="5" cy="5" r="3" fill="rgba(255,77,109,.2)" stroke="#ff4d6d" stroke-width="1"/>
<circle cx="25" cy="5" r="3" fill="rgba(255,77,109,.2)" stroke="#ff4d6d" stroke-width="1"/>
<circle cx="5" cy="25" r="3" fill="rgba(255,77,109,.2)" stroke="#ff4d6d" stroke-width="1"/>
<circle cx="25" cy="25" r="3" fill="rgba(255,77,109,.2)" stroke="#ff4d6d" stroke-width="1"/>
<line x1="11" y1="13" x2="8" y2="8" stroke="#ff4d6d" stroke-width="1.5"/>
<line x1="19" y1="13" x2="22" y2="8" stroke="#ff4d6d" stroke-width="1.5"/>
<line x1="11" y1="17" x2="8" y2="22" stroke="#ff4d6d" stroke-width="1.5"/>
<line x1="19" y1="17" x2="22" y2="22" stroke="#ff4d6d" stroke-width="1.5"/>
</svg>
</div>
<div class="traffic-name">Broadcast</div>
<p class="traffic-desc">One-to-all communication within a broadcast domain. Delivered to all devices on the local subnet. IPv4 broadcast address: 255.255.255.255 (limited) or subnet directed (e.g., 192.168.1.255). Routers do NOT forward broadcasts — they stop at router boundaries. IPv6 has no broadcast (uses multicast instead).</p>
<div style="margin-top: 12px; font-family: var(--mono); font-size: 11px; color: var(--red);">1 → all</div>
</div>
</div>
<div class="section-divider"></div>
<div class="info-box info-orange">
<span class="info-label" style="color: var(--orange);">⚠️ Broadcast Domains vs Collision Domains</span>
<strong>Collision Domain:</strong> Devices that can cause collisions (Layer 1 — hub ports). Each switch port breaks collision domains.<br>
<strong>Broadcast Domain:</strong> Devices that receive broadcasts. Only routers break broadcast domains. Switches do NOT reduce broadcasts (unless VLANs are configured).
</div>
</section>
<!-- ══════════ MEDIA ══════════ -->
<section class="section fade-in" id="media">
<span class="section-tag" style="color: var(--cyan);">// 06 — Transmission Media</span>
<h2>Transmission Media</h2>
<p class="section-intro">The physical or wireless medium used to carry network signals. Different media have different bandwidth, range, interference susceptibility, and cost characteristics.</p>
<h3>Wireless</h3>
<div class="grid-3" style="margin-bottom: 32px;">
<div class="media-card">
<div class="media-title">📶 Wi-Fi (802.11)</div>
<div style="margin: 12px 0 8px; font-family: var(--mono); font-size: 10px; color: var(--text-dim); letter-spacing: 1px; text-transform: uppercase;">Standards Comparison</div>
<div class="media-spec"><span class="k">802.11a</span><span class="v">5 GHz, 54 Mbps</span></div>
<div class="media-spec"><span class="k">802.11b</span><span class="v">2.4 GHz, 11 Mbps</span></div>
<div class="media-spec"><span class="k">802.11g</span><span class="v">2.4 GHz, 54 Mbps</span></div>
<div class="media-spec"><span class="k">802.11n (Wi-Fi 4)</span><span class="v">2.4/5 GHz, 600 Mbps</span></div>
<div class="media-spec"><span class="k">802.11ac (Wi-Fi 5)</span><span class="v">5 GHz, 3.5 Gbps</span></div>
<div class="media-spec"><span class="k">802.11ax (Wi-Fi 6)</span><span class="v">2.4/5/6 GHz, 9.6 Gbps</span></div>
<div class="info-box info-cyan" style="margin: 12px 0 0; padding: 8px 12px; font-size: 11px;">
2.4 GHz = longer range, more interference<br>5 GHz = shorter range, faster, less congested
</div>
</div>
<div class="media-card">
<div class="media-title">📱 Cellular</div>
<div style="margin: 12px 0 8px; font-family: var(--mono); font-size: 10px; color: var(--text-dim); letter-spacing: 1px; text-transform: uppercase;">Generations</div>
<div class="media-spec"><span class="k">2G (GSM/CDMA)</span><span class="v">Voice + SMS, <0.1 Mbps</span></div>
<div class="media-spec"><span class="k">3G (UMTS/HSPA)</span><span class="v">7.2–21 Mbps</span></div>
<div class="media-spec"><span class="k">4G LTE</span><span class="v">100+ Mbps, low latency</span></div>
<div class="media-spec"><span class="k">5G</span><span class="v">10 Gbps, <1ms latency</span></div>
<p style="font-size: 12px; color: var(--text-dim); margin-top: 10px;">Uses licensed spectrum bands. Network divided into cells with base stations (towers). Handoff between cells as device moves. 5G uses millimeter wave (mmWave) for ultra-fast short range and sub-6GHz for broad coverage.</p>
</div>
<div class="media-card">
<div class="media-title">🛰 Satellite</div>
<div style="margin: 12px 0 8px; font-family: var(--mono); font-size: 10px; color: var(--text-dim); letter-spacing: 1px; text-transform: uppercase;">Orbit Types</div>
<div class="media-spec"><span class="k">GEO (35,786 km)</span><span class="v">600+ ms latency</span></div>
<div class="media-spec"><span class="k">MEO</span><span class="v">GPS, 50–150 ms</span></div>
<div class="media-spec"><span class="k">LEO (550–1,200 km)</span><span class="v">20–40 ms (Starlink)</span></div>
<p style="font-size: 12px; color: var(--text-dim); margin-top: 10px;">GEO: traditional, high latency, good coverage. LEO: Starlink/OneWeb, low latency, better for realtime traffic. Used for remote/rural connectivity where no terrestrial option exists. Weather-sensitive. Line-of-sight required.</p>
</div>
</div>
<h3>Wired</h3>
<div class="media-comparison">
<div class="media-card">
<div style="font-family: var(--mono); font-size: 11px; color: var(--cyan); letter-spacing: 2px; text-transform: uppercase; margin-bottom: 8px;">Fiber Optic</div>
<div class="media-title">🔆 Fiber</div>
<div class="media-spec"><span class="k">Medium</span><span class="v">Light pulses in glass/plastic</span></div>
<div class="media-spec"><span class="k">Speed</span><span class="v">Up to 100 Tbps+</span></div>
<div class="media-spec"><span class="k">Distance</span><span class="v">SMF: 100 km+ / MMF: ~2 km</span></div>
<div class="media-spec"><span class="k">EMI</span><span class="v">Immune — light, not electricity</span></div>
<div class="media-spec"><span class="k">SMF (Single-Mode)</span><span class="v">Yellow jacket, long distance, laser</span></div>
<div class="media-spec"><span class="k">MMF (Multi-Mode)</span><span class="v">Orange/aqua jacket, shorter range</span></div>
<div class="info-box info-cyan" style="margin: 12px 0 0; padding: 10px 12px; font-size: 12px;">
<strong>SMF</strong>: Single ray of light, OS2 standard, used in WANs, ISP backbones.<br>
<strong>MMF</strong>: Multiple light paths, OM1–OM5, used in data centers. OM5 supports SWDM.
</div>
</div>
<div class="media-card">
<div style="font-family: var(--mono); font-size: 11px; color: var(--orange); letter-spacing: 2px; text-transform: uppercase; margin-bottom: 8px;">Coaxial</div>
<div class="media-title">📡 Coax</div>
<div class="media-spec"><span class="k">Medium</span><span class="v">Copper core, metallic shield</span></div>
<div class="media-spec"><span class="k">Speed</span><span class="v">Up to 10 Gbps (DOCSIS 3.1)</span></div>
<div class="media-spec"><span class="k">Distance</span><span class="v">~500 m (10BASE5)</span></div>
<div class="media-spec"><span class="k">Connectors</span><span class="v">BNC, F-type</span></div>
<div class="media-spec"><span class="k">Use Cases</span><span class="v">Cable TV, broadband internet, RF</span></div>
<div class="media-spec"><span class="k">RG-6</span><span class="v">Cable TV/broadband (better shielding)</span></div>
<div class="media-spec"><span class="k">RG-59</span><span class="v">CCTV, older TV (thinner)</span></div>
<div class="info-box info-orange" style="margin: 12px 0 0; padding: 10px 12px; font-size: 12px;">
The metallic shield provides noise immunity. "Thicknet" (10BASE5) and "Thinnet" (10BASE2) are historical Ethernet coax implementations.
</div>
</div>
<div class="media-card">
<div style="font-family: var(--mono); font-size: 11px; color: var(--green); letter-spacing: 2px; text-transform: uppercase; margin-bottom: 8px;">Direct Attach Copper</div>
<div class="media-title">⚡ DAC</div>
<div class="media-spec"><span class="k">Medium</span><span class="v">Twinaxial copper cable</span></div>
<div class="media-spec"><span class="k">Speed</span><span class="v">10G, 25G, 40G, 100G</span></div>
<div class="media-spec"><span class="k">Distance</span><span class="v">Up to ~15 m (passive) / 25 m (active)</span></div>
<div class="media-spec"><span class="k">Connectors</span><span class="v">SFP+, QSFP, QSFP+</span></div>
<div class="media-spec"><span class="k">Passive DAC</span><span class="v">No signal boosting, shorter range</span></div>
<div class="media-spec"><span class="k">Active DAC</span><span class="v">Has signal amplifiers built in</span></div>
<div class="info-box info-green" style="margin: 12px 0 0; padding: 10px 12px; font-size: 12px;">
Used to connect switches/servers in data centers. Much cheaper than fiber for short distances. Plugs into SFP+ ports just like optical modules.
</div>
</div>
</div>
</section>
<!-- ══════════ CONNECTORS ══════════ -->
<section class="section fade-in" id="connectors">
<span class="section-tag" style="color: var(--orange);">// 07 — Connectors & Transceivers</span>
<h2>Connectors & Transceivers</h2>
<p class="section-intro">Physical connectors terminate cables and mate with ports. Transceivers convert between electrical and optical signals. Knowing connector types is critical for real-world work and the exam.</p>
<h3>Fiber Connectors</h3>
<div class="connector-grid">
<div class="connector-card">
<div class="connector-visual">
<svg width="50" height="50" viewBox="0 0 50 50">
<!-- SC connector shape -->
<rect x="10" y="15" width="30" height="20" rx="3" fill="rgba(0,229,160,.15)" stroke="#00e5a0" stroke-width="1.5"/>
<rect x="18" y="10" width="14" height="8" rx="1" fill="rgba(0,229,160,.1)" stroke="#00e5a0" stroke-width="1"/>
<circle cx="25" cy="25" r="3" fill="rgba(0,229,160,.3)" stroke="#00e5a0" stroke-width="1"/>
<rect x="15" y="35" width="20" height="6" rx="1" fill="rgba(0,229,160,.1)" stroke="#00e5a0" stroke-width="1"/>
</svg>
</div>
<div class="connector-name">SC</div>
<div class="connector-desc">Subscriber/Square Connector. Push-pull mechanism. Popular in older fiber installations. Larger form factor — two SC connectors side by side (SC duplex).</div>
</div>
<div class="connector-card">
<div class="connector-visual">
<svg width="50" height="50" viewBox="0 0 50 50">
<!-- LC connector - smaller -->
<rect x="14" y="16" width="22" height="18" rx="2" fill="rgba(0,212,255,.15)" stroke="#00d4ff" stroke-width="1.5"/>
<rect x="18" y="11" width="14" height="7" rx="1" fill="rgba(0,212,255,.1)" stroke="#00d4ff" stroke-width="1"/>
<circle cx="25" cy="25" r="2.5" fill="rgba(0,212,255,.3)" stroke="#00d4ff" stroke-width="1"/>
<rect x="20" y="34" width="10" height="5" rx="1" fill="rgba(0,212,255,.1)" stroke="#00d4ff" stroke-width="1"/>
</svg>
</div>
<div class="connector-name">LC</div>
<div class="connector-desc">Lucent Connector. Small form factor — half the size of SC. Latch mechanism. Most common modern fiber connector in data centers and enterprise. Preferred in high-density environments.</div>
</div>
<div class="connector-card">
<div class="connector-visual">
<svg width="50" height="50" viewBox="0 0 50 50">
<!-- ST connector - bayonet style -->
<circle cx="25" cy="25" r="14" fill="rgba(255,140,66,.12)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="25" cy="25" r="6" fill="rgba(255,140,66,.2)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="25" cy="25" r="2" fill="rgba(255,140,66,.4)" stroke="#ff8c42" stroke-width="1"/>
<!-- Bayonet notch -->
<line x1="39" y1="20" x2="39" y2="28" stroke="#ff8c42" stroke-width="2"/>
</svg>
</div>
<div class="connector-name">ST</div>
<div class="connector-desc">Straight Tip. Bayonet twist-lock mechanism (like a BNC). Older standard, still found in legacy fiber installations. Round form factor. Being replaced by LC in newer deployments.</div>
</div>
<div class="connector-card">
<div class="connector-visual">
<svg width="60" height="50" viewBox="0 0 60 50">
<!-- MPO - multi-fiber -->
<rect x="8" y="16" width="44" height="18" rx="3" fill="rgba(255,209,102,.12)" stroke="#ffd166" stroke-width="1.5"/>
<rect x="12" y="20" width="36" height="10" rx="1" fill="rgba(255,209,102,.08)" stroke="#ffd166" stroke-width="1"/>
<!-- Multiple fiber dots -->
<circle cx="18" cy="25" r="1.5" fill="#ffd166"/>
<circle cx="23" cy="25" r="1.5" fill="#ffd166"/>
<circle cx="28" cy="25" r="1.5" fill="#ffd166"/>
<circle cx="33" cy="25" r="1.5" fill="#ffd166"/>
<circle cx="38" cy="25" r="1.5" fill="#ffd166"/>
<circle cx="43" cy="25" r="1.5" fill="#ffd166"/>
</svg>
</div>
<div class="connector-name">MPO/MTP</div>
<div class="connector-desc">Multi-fiber Push On. Carries 12 or 24 fibers in a single connector. Used for high-density 40G/100G connections in data centers. MTP is a brand name for high-performance MPO.</div>
</div>
</div>
<h3 style="margin-top: 32px;">Copper Connectors</h3>
<div class="connector-grid">
<div class="connector-card">
<div class="connector-visual">
<svg width="60" height="50" viewBox="0 0 60 50">
<!-- RJ45 -->
<rect x="10" y="12" width="40" height="28" rx="2" fill="rgba(0,212,255,.12)" stroke="#00d4ff" stroke-width="1.5"/>
<rect x="13" y="16" width="34" height="20" rx="1" fill="rgba(0,212,255,.06)" stroke="#00d4ff" stroke-width="1"/>
<!-- 8 pins -->
<rect x="16" y="32" width="3" height="6" rx="0.5" fill="#00d4ff"/>
<rect x="20" y="32" width="3" height="6" rx="0.5" fill="#00d4ff"/>
<rect x="24" y="32" width="3" height="6" rx="0.5" fill="#00d4ff"/>
<rect x="28" y="32" width="3" height="6" rx="0.5" fill="#00d4ff"/>
<rect x="32" y="32" width="3" height="6" rx="0.5" fill="#00d4ff"/>
<rect x="36" y="32" width="3" height="6" rx="0.5" fill="#00d4ff"/>
<rect x="40" y="32" width="3" height="6" rx="0.5" fill="#00d4ff"/>
<rect x="44" y="32" width="2" height="6" rx="0.5" fill="#00d4ff"/>
</svg>
</div>
<div class="connector-name">RJ45</div>
<div class="connector-desc">8P8C (8 Position 8 Contact). Standard Ethernet connector for twisted-pair cabling (Cat5e, Cat6, Cat6a). Used in all modern wired networking.</div>
</div>
<div class="connector-card">
<div class="connector-visual">
<svg width="60" height="50" viewBox="0 0 60 50">
<!-- RJ11 - smaller -->
<rect x="18" y="14" width="24" height="24" rx="2" fill="rgba(0,229,160,.1)" stroke="#00e5a0" stroke-width="1.5"/>
<rect x="21" y="18" width="18" height="16" rx="1" fill="rgba(0,229,160,.05)" stroke="#00e5a0" stroke-width="1"/>
<!-- 4 pins (6P4C) -->
<rect x="23" y="30" width="3" height="5" rx="0.5" fill="#00e5a0"/>
<rect x="27" y="30" width="3" height="5" rx="0.5" fill="#00e5a0"/>
<rect x="31" y="30" width="3" height="5" rx="0.5" fill="#00e5a0"/>
<rect x="35" y="30" width="3" height="5" rx="0.5" fill="#00e5a0"/>
</svg>
</div>
<div class="connector-name">RJ11</div>
<div class="connector-desc">6P2C or 6P4C connector. Smaller than RJ45. Used for telephone lines (POTS), DSL modems. Not compatible with Ethernet — different pin count and configuration.</div>
</div>
<div class="connector-card">
<div class="connector-visual">
<svg width="60" height="50" viewBox="0 0 60 50">
<!-- F-type -->
<circle cx="30" cy="25" r="15" fill="rgba(255,140,66,.1)" stroke="#ff8c42" stroke-width="1.5"/>
<circle cx="30" cy="25" r="8" fill="rgba(255,140,66,.08)" stroke="#ff8c42" stroke-width="1"/>
<circle cx="30" cy="25" r="3" fill="rgba(255,140,66,.3)" stroke="#ff8c42" stroke-width="1"/>
<!-- Thread lines -->
<path d="M 18 18 Q 30 10 42 18" stroke="#ff8c42" stroke-width="1" fill="none" stroke-dasharray="2,2"/>
<path d="M 15 25 Q 30 40 45 25" stroke="#ff8c42" stroke-width="1" fill="none" stroke-dasharray="2,2"/>
</svg>
</div>
<div class="connector-name">F-Type</div>
<div class="connector-desc">Screw-on coaxial connector. Used for cable TV, satellite dishes, and broadband internet (DOCSIS). Thread provides secure connection to prevent RF signal loss.</div>
</div>
<div class="connector-card">
<div class="connector-visual">
<svg width="60" height="50" viewBox="0 0 60 50">
<!-- BNC -->
<circle cx="30" cy="25" r="14" fill="rgba(255,77,109,.1)" stroke="#ff4d6d" stroke-width="1.5"/>
<circle cx="30" cy="25" r="6" fill="rgba(255,77,109,.08)" stroke="#ff4d6d" stroke-width="1"/>
<circle cx="30" cy="25" r="2.5" fill="rgba(255,77,109,.4)" stroke="#ff4d6d" stroke-width="1"/>
<!-- Bayonet notches -->
<rect x="44" y="23" width="4" height="4" rx="0.5" fill="#ff4d6d" opacity=".5"/>
<rect x="12" y="23" width="4" height="4" rx="0.5" fill="#ff4d6d" opacity=".5"/>
</svg>
</div>
<div class="connector-name">BNC</div>
<div class="connector-desc">Bayonet Neill–Concelman. Twist-lock coaxial connector. Used in CCTV/security cameras, 10BASE2 (Thinnet) legacy Ethernet, test equipment, RF applications. Quick-connect bayonet mechanism.</div>
</div>
</div>
<div class="section-divider"></div>
<h3>Transceivers (SFP / QSFP)</h3>
<div class="grid-3">
<div class="card">
<h4>SFP / SFP+</h4>
<p><strong>Small Form-factor Pluggable.</strong> Hot-swappable transceiver module used in switches, routers, and NICs. SFP supports up to 1 Gbps. SFP+ supports 10 Gbps. Can carry fiber or copper (via DAC). Enables flexible, modular port design.</p>
</div>
<div class="card">
<h4>QSFP / QSFP+</h4>
<p><strong>Quad Small Form-factor Pluggable.</strong> Carries 4 lanes of data. QSFP supports 40G (4×10G). QSFP+ also 40G. QSFP28 supports 100G (4×25G). Used in spine switches, high-bandwidth server links, and data center interconnects.</p>
</div>
<div class="card">
<h4>BiDi (Bidirectional)</h4>
<p>Transmits and receives on a single fiber strand using two different wavelengths (WDM — Wavelength Division Multiplexing). Useful when fiber runs are expensive or limited. Must be paired with matching BiDi on other end (TX wavelength A ↔ RX wavelength B).</p>
</div>
</div>
</section>
<!-- ══════════ IPv4 ══════════ -->
<section class="section fade-in" id="ipv4">
<span class="section-tag" style="color: var(--yellow);">// 08 — IPv4 Addressing</span>
<h2>IPv4 Addressing</h2>
<p class="section-intro">IPv4 uses 32-bit addresses written in dotted decimal notation (four octets, each 0–255). Understanding address types, classes, and special ranges is foundational to networking.</p>
<h3>Address Classes</h3>
<div style="overflow-x: auto; border-radius: 10px; border: 1px solid var(--border); margin-bottom: 30px;">
<table class="ip-classes-table">
<thead>
<tr>
<th>Class</th>
<th>First Octet Range</th>
<th>First Bits</th>
<th>Default Subnet Mask</th>
<th>Private Range (RFC 1918)</th>
<th>Networks / Hosts</th>
<th>Purpose</th>
</tr>
</thead>
<tbody>
<tr>
<td><span style="color: var(--cyan); font-family: var(--mono); font-weight: 700;">A</span></td>
<td><code>1–126</code></td>
<td><code>0xxxxxxx</code></td>
<td><code>255.0.0.0 /8</code></td>
<td><code>10.0.0.0–10.255.255.255</code></td>
<td>128 networks / 16.7M hosts</td>
<td>Large organizations, ISPs</td>
</tr>
<tr>
<td><span style="color: var(--green); font-family: var(--mono); font-weight: 700;">B</span></td>
<td><code>128–191</code></td>
<td><code>10xxxxxx</code></td>
<td><code>255.255.0.0 /16</code></td>
<td><code>172.16.0.0–172.31.255.255</code></td>
<td>16,384 networks / 65,534 hosts</td>
<td>Medium-large orgs</td>
</tr>
<tr>
<td><span style="color: var(--orange); font-family: var(--mono); font-weight: 700;">C</span></td>
<td><code>192–223</code></td>
<td><code>110xxxxx</code></td>
<td><code>255.255.255.0 /24</code></td>
<td><code>192.168.0.0–192.168.255.255</code></td>
<td>2M+ networks / 254 hosts</td>
<td>Small networks, home/office</td>
</tr>
<tr>
<td><span style="color: var(--yellow); font-family: var(--mono); font-weight: 700;">D</span></td>
<td><code>224–239</code></td>
<td><code>1110xxxx</code></td>
<td>N/A</td>
<td>N/A</td>
<td>N/A</td>
<td>Multicast groups only</td>
</tr>
<tr>
<td><span style="color: var(--red); font-family: var(--mono); font-weight: 700;">E</span></td>
<td><code>240–255</code></td>
<td><code>1111xxxx</code></td>
<td>N/A</td>
<td>N/A</td>
<td>N/A</td>
<td>Reserved / Experimental</td>
</tr>
</tbody>
</table>
</div>
<h3>Special Address Ranges</h3>
<div class="grid-2">
<div class="card">
<h4>Special Purpose Addresses</h4>
<div style="font-family: var(--mono); font-size: 12px; display: flex; flex-direction: column; gap: 10px;">
<div>
<div style="color: var(--cyan);">127.0.0.1 — Loopback</div>
<div style="color: var(--text-dim); margin-top: 2px;">Refers to the local machine itself. Range: 127.0.0.0/8. Used for testing TCP/IP stack without sending traffic over the network.</div>
</div>
<div>
<div style="color: var(--orange);">169.254.x.x — APIPA</div>
<div style="color: var(--text-dim); margin-top: 2px;">Automatic Private IP Addressing. Assigned when DHCP fails. Range: 169.254.0.0/16. Device can only communicate with other APIPA devices on the same segment. Means DHCP is broken.</div>
</div>
<div>
<div style="color: var(--green);">0.0.0.0 — Unspecified</div>
<div style="color: var(--text-dim); margin-top: 2px;">Used before IP is assigned (DHCP Discover source), or as default route (0.0.0.0/0 = "route to anywhere").</div>
</div>
<div>
<div style="color: var(--yellow);">255.255.255.255 — Limited Broadcast</div>
<div style="color: var(--text-dim); margin-top: 2px;">Sent to all devices on the local subnet. Routers never forward this. DHCP Discover uses this as destination.</div>
</div>
</div>
</div>
<div class="card">
<h4>Public vs Private</h4>
<p><strong>Private IPs (RFC 1918):</strong> Not routable on the public internet. Used internally. Translated to public IPs via NAT (Network Address Translation) at the router/firewall.</p>
<div style="font-family: var(--mono); font-size: 12px; color: var(--text-dim); margin: 12px 0; display: flex; flex-direction: column; gap: 6px;">
<div><span style="color: var(--green);">10.0.0.0/8</span> — 16.7 million addresses (Class A private)</div>
<div><span style="color: var(--green);">172.16.0.0/12</span> — 1M addresses (Class B private range)</div>
<div><span style="color: var(--green);">192.168.0.0/16</span> — 65,536 addresses (most common home/office)</div>
</div>
<p><strong>Public IPs</strong> are assigned by IANA and RIRs (ARIN, RIPE, APNIC). Every public address is globally unique. NAT allows thousands of internal devices to share a single public IP.</p>
<div class="info-box info-green" style="margin: 0; padding: 8px 12px; font-size: 12px;">
<strong>NAT Types:</strong> Static NAT (1:1), Dynamic NAT (pool), PAT/NAT overload (many:1 using ports) — PAT is what home routers do.
</div>
</div>
</div>
</section>
<!-- ══════════ SUBNETTING ══════════ -->
<section class="section fade-in" id="subnetting">
<span class="section-tag" style="color: var(--cyan);">// 09 — Subnetting & CIDR</span>
<h2>Subnetting & CIDR</h2>
<p class="section-intro">Subnetting divides a large network into smaller sub-networks. CIDR (Classless Inter-Domain Routing) replaces class-based addressing with flexible prefix lengths. VLSM (Variable Length Subnet Masking) allows different subnet sizes within the same address space.</p>
<div class="tabs">
<button class="tab-btn active" onclick="showTab('cidr-tab', this)">CIDR Reference</button>
<button class="tab-btn" onclick="showTab('calc-tab', this)">How to Subnet</button>
<button class="tab-btn" onclick="showTab('vlsm-tab', this)">VLSM</button>
</div>
<div id="cidr-tab" class="tab-pane active">
<p style="margin-bottom: 16px;">The subnet mask determines which bits are the <span style="color: var(--green);">network portion</span> and which are the <span style="color: var(--orange);">host portion</span>.</p>
<div class="binary-row" style="margin-bottom: 20px; align-items: flex-start; flex-direction: column; gap: 8px;">
<div style="display: flex; align-items: center; gap: 10px;">
<span style="color: var(--text-dim); width: 140px; font-family: var(--mono); font-size: 12px;">IP: 192.168.1.100</span>
<div class="bit-group">
<div class="bit bit-net">1</div><div class="bit bit-net">1</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div>
</div>
<div class="bit-group">
<div class="bit bit-net">1</div><div class="bit bit-net">0</div><div class="bit bit-net">1</div><div class="bit bit-net">0</div><div class="bit bit-net">1</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div>
</div>
<div class="bit-group">
<div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">0</div><div class="bit bit-net">1</div>
</div>
<div class="bit-group">
<div class="bit bit-host">0</div><div class="bit bit-host">1</div><div class="bit bit-host">1</div><div class="bit bit-host">0</div><div class="bit bit-host">0</div><div class="bit bit-host">1</div><div class="bit bit-host">0</div><div class="bit bit-host">0</div>
</div>
</div>
<div style="display: flex; align-items: center; gap: 10px;">
<span style="color: var(--text-dim); width: 140px; font-family: var(--mono); font-size: 12px;">Mask: /24</span>
<div class="bit-group">
<div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div>
</div>
<div class="bit-group">
<div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div>
</div>
<div class="bit-group">
<div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div><div class="bit bit-1">1</div>
</div>
<div class="bit-group">
<div class="bit bit-0">0</div><div class="bit bit-0">0</div><div class="bit bit-0">0</div><div class="bit bit-0">0</div><div class="bit bit-0">0</div><div class="bit bit-0">0</div><div class="bit bit-0">0</div><div class="bit bit-0">0</div>
</div>
</div>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim); margin-top: 4px;">
<span style="color: var(--green);">■ = Network bits (24 bits)</span>
<span style="color: var(--orange);">■ = Host bits (8 bits = 256 addresses, 254 usable)</span>
</div>
</div>
<div style="overflow-x: auto; border-radius: 10px; border: 1px solid var(--border);">
<table class="cidr-table">
<thead>
<tr>
<th>CIDR</th>
<th>Subnet Mask</th>
<th>Wildcard</th>
<th>Hosts (Usable)</th>
<th>Addresses</th>
<th>Subnets from /24</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr><td style="color: var(--cyan);">/8</td><td>255.0.0.0</td><td>0.255.255.255</td><td style="color: var(--green);">16,777,214</td><td>16,777,216</td><td>—</td><td>Class A size</td></tr>
<tr><td style="color: var(--cyan);">/9</td><td>255.128.0.0</td><td>0.127.255.255</td><td style="color: var(--green);">8,388,606</td><td>8,388,608</td><td>—</td><td></td></tr>
<tr><td style="color: var(--cyan);">/16</td><td>255.255.0.0</td><td>0.0.255.255</td><td style="color: var(--green);">65,534</td><td>65,536</td><td>—</td><td>Class B size</td></tr>
<tr><td style="color: var(--cyan);">/17</td><td>255.255.128.0</td><td>0.0.127.255</td><td style="color: var(--green);">32,766</td><td>32,768</td><td>—</td><td></td></tr>
<tr><td style="color: var(--cyan);">/20</td><td>255.255.240.0</td><td>0.0.15.255</td><td style="color: var(--green);">4,094</td><td>4,096</td><td>16 subnets</td><td></td></tr>
<tr><td style="color: var(--cyan);">/21</td><td>255.255.248.0</td><td>0.0.7.255</td><td style="color: var(--green);">2,046</td><td>2,048</td><td>8 subnets</td><td></td></tr>
<tr><td style="color: var(--cyan);">/22</td><td>255.255.252.0</td><td>0.0.3.255</td><td style="color: var(--green);">1,022</td><td>1,024</td><td>4 subnets</td><td></td></tr>
<tr><td style="color: var(--cyan);">/23</td><td>255.255.254.0</td><td>0.0.1.255</td><td style="color: var(--green);">510</td><td>512</td><td>2 subnets</td><td></td></tr>
<tr><td style="color: var(--cyan);">/24</td><td>255.255.255.0</td><td>0.0.0.255</td><td style="color: var(--green);">254</td><td>256</td><td>1 subnet</td><td>Most common LAN</td></tr>
<tr><td style="color: var(--cyan);">/25</td><td>255.255.255.128</td><td>0.0.0.127</td><td style="color: var(--green);">126</td><td>128</td><td>2 subnets</td><td></td></tr>
<tr><td style="color: var(--cyan);">/26</td><td>255.255.255.192</td><td>0.0.0.63</td><td style="color: var(--green);">62</td><td>64</td><td>4 subnets</td><td></td></tr>
<tr><td style="color: var(--cyan);">/27</td><td>255.255.255.224</td><td>0.0.0.31</td><td style="color: var(--green);">30</td><td>32</td><td>8 subnets</td><td></td></tr>
<tr><td style="color: var(--cyan);">/28</td><td>255.255.255.240</td><td>0.0.0.15</td><td style="color: var(--green);">14</td><td>16</td><td>16 subnets</td><td></td></tr>
<tr><td style="color: var(--cyan);">/29</td><td>255.255.255.248</td><td>0.0.0.7</td><td style="color: var(--green);">6</td><td>8</td><td>32 subnets</td><td>Small segments</td></tr>
<tr><td style="color: var(--cyan);">/30</td><td>255.255.255.252</td><td>0.0.0.3</td><td style="color: var(--green);">2</td><td>4</td><td>64 subnets</td><td>Point-to-point links</td></tr>
<tr><td style="color: var(--cyan);">/31</td><td>255.255.255.254</td><td>0.0.0.1</td><td style="color: var(--green);">2 (no net/bcast)</td><td>2</td><td>128 subnets</td><td>P2P (RFC 3021)</td></tr>
<tr><td style="color: var(--cyan);">/32</td><td>255.255.255.255</td><td>0.0.0.0</td><td style="color: var(--green);">1</td><td>1</td><td>—</td><td>Host route (loopback)</td></tr>
</tbody>
</table>
</div>
</div>
<div id="calc-tab" class="tab-pane">
<h3>How to Subnet — Step by Step</h3>
<div class="card" style="max-width: 700px;">
<p><strong>Example:</strong> You have <code>192.168.10.0/26</code>. Find the network, broadcast, host range, and number of subnets from /24.</p>
<div class="subnetting-visual">
<div style="color: var(--cyan); margin-bottom: 12px;">Step 1: Determine the block size</div>
<div style="color: var(--text-dim);"> /26 = 26 network bits, 6 host bits</div>
<div style="color: var(--text-dim);"> Host bits: 6 → 2^6 = 64 addresses per subnet</div>
<div style="color: var(--text-dim);"> Usable hosts: 64 - 2 = <span style="color: var(--green);">62 hosts</span></div>
<br>
<div style="color: var(--cyan);">Step 2: Find subnet mask</div>
<div style="color: var(--text-dim);"> 256 - 64 = 192 → mask is 255.255.255.192</div>
<br>
<div style="color: var(--cyan);">Step 3: List subnets (block size = 64)</div>
<div style="color: var(--text-dim);"> 192.168.10.0 → 192.168.10.0 – 192.168.10.63 (subnet 1)</div>
<div style="color: var(--text-dim);"> 192.168.10.64 → 192.168.10.64 – 192.168.10.127 (subnet 2)</div>
<div style="color: var(--text-dim);"> 192.168.10.128 → 192.168.10.128 – 192.168.10.191 (subnet 3)</div>
<div style="color: var(--text-dim);"> 192.168.10.192 → 192.168.10.192 – 192.168.10.255 (subnet 4)</div>
<br>
<div style="color: var(--cyan);">Step 4: For 192.168.10.0/26:</div>
<div> Network address: <span style="color: var(--orange);">192.168.10.0</span></div>
<div> First host: <span style="color: var(--green);">192.168.10.1</span></div>
<div> Last host: <span style="color: var(--green);">192.168.10.62</span></div>
<div> Broadcast: <span style="color: var(--red);">192.168.10.63</span></div>
</div>
<div class="info-box info-yellow" style="margin-top: 16px;">
<span class="info-label" style="color: var(--yellow);">Magic Number Trick</span>
<strong>Block size</strong> = 256 - last octet of subnet mask. Subnets start at multiples of block size.<br>
/25 → block = 128 → subnets: .0, .128<br>
/26 → block = 64 → subnets: .0, .64, .128, .192<br>
/27 → block = 32 → subnets: .0, .32, .64, .96, .128, .160, .192, .224
</div>
</div>
</div>
<div id="vlsm-tab" class="tab-pane">
<h3>VLSM — Variable Length Subnet Masking</h3>
<p style="margin-bottom: 20px;">VLSM allows using different subnet sizes within the same network. Instead of giving every subnet the same size (wasting addresses), you allocate exactly what's needed. Key principle: allocate largest subnets first.</p>
<div class="card" style="max-width: 700px;">
<p><strong>Scenario:</strong> Given <code>172.16.0.0/16</code>, create subnets for:</p>
<div style="font-family: var(--mono); font-size: 12px; color: var(--text-dim); margin: 12px 0; display: flex; flex-direction: column; gap: 4px;">
<div>Dept A: 500 hosts → needs 512 addresses → <span style="color: var(--cyan);">/23</span></div>
<div>Dept B: 100 hosts → needs 128 addresses → <span style="color: var(--cyan);">/25</span></div>
<div>Dept C: 25 hosts → needs 32 addresses → <span style="color: var(--cyan);">/27</span></div>
<div>WAN Link: 2 hosts → needs 4 addresses → <span style="color: var(--cyan);">/30</span></div>
</div>
<div class="subnetting-visual">
<div style="color: var(--green);">Allocate largest first:</div>
<div style="color: var(--text-dim);"> Dept A: 172.16.0.0/23 (172.16.0.0 – 172.16.1.255, 510 hosts)</div>
<div style="color: var(--text-dim);"> Dept B: 172.16.2.0/25 (172.16.2.0 – 172.16.2.127, 126 hosts)</div>
<div style="color: var(--text-dim);"> Dept C: 172.16.2.128/27 (172.16.2.128 – 172.16.2.159, 30 hosts)</div>
<div style="color: var(--text-dim);"> WAN: 172.16.2.160/30 (172.16.2.160 – 172.16.2.163, 2 hosts)</div>
</div>
<div class="info-box info-green" style="margin-top: 16px;">
Without VLSM, giving everyone /23 would waste 480+ addresses for the WAN link. VLSM lets you be precise.
</div>
</div>
</div>
</section>
<!-- ══════════ CLOUD ══════════ -->
<section class="section fade-in" id="cloud">
<span class="section-tag" style="color: var(--green);">// 10 — Cloud Concepts</span>
<h2>Cloud Concepts</h2>
<p class="section-intro">Cloud networking extends traditional networking concepts into virtualized, on-demand infrastructure. Understanding cloud deployment and service models, virtual networking constructs, and security is increasingly important for modern network professionals.</p>
<h3>Deployment Models</h3>
<div class="grid-3" style="margin-bottom: 32px;">
<div class="card" style="border-left: 3px solid var(--cyan);">
<h4>☁️ Public Cloud</h4>
<p>Infrastructure owned and managed by a third party (AWS, Azure, GCP). Resources shared across multiple customers (multi-tenant). Pay-as-you-go. No upfront hardware cost. Highly scalable. Data leaves your premises — security/compliance concern for some industries.</p>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim); margin-top: 12px;">Examples: AWS EC2, Azure VMs, Google Cloud Compute</div>
</div>
<div class="card" style="border-left: 3px solid var(--orange);">
<h4>🏢 Private Cloud</h4>
<p>Infrastructure dedicated exclusively to one organization. Can be on-premises (owned hardware) or hosted by a third party. Full control over security, compliance, and customization. Higher upfront cost. Common in government, healthcare, finance. OpenStack, VMware vSphere.</p>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim); margin-top: 12px;">Examples: On-prem VMware, OpenStack, AWS Outposts</div>
</div>
<div class="card" style="border-left: 3px solid var(--green);">
<h4>🔀 Hybrid Cloud</h4>
<p>Combination of public and private cloud, connected via VPN or dedicated link (AWS Direct Connect, Azure ExpressRoute). Sensitive workloads stay on-prem; scalable burst workloads move to public cloud. Requires consistent network policies and identity across both.</p>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim); margin-top: 12px;">Requires: VPN or dedicated circuits between environments</div>
</div>
</div>
<h3>Service Models</h3>
<div class="grid-3" style="margin-bottom: 32px;">
<div class="card">
<h4>IaaS — Infrastructure as a Service</h4>
<p>Provider manages hardware, networking, and storage. You manage: OS, middleware, runtime, applications, and data. Most control, most responsibility. Think AWS EC2, Azure VMs. Good for custom configurations and migrations.</p>
<div class="info-box info-cyan" style="margin: 12px 0 0; padding: 8px 12px; font-size: 12px;">
You manage: OS → Runtime → App → Data
</div>
</div>
<div class="card">
<h4>PaaS — Platform as a Service</h4>
<p>Provider manages infrastructure AND OS and middleware. You only manage applications and data. Faster development — no server patching. Examples: Heroku, Google App Engine, AWS Elastic Beanstalk. Less control over underlying environment.</p>
<div class="info-box info-green" style="margin: 12px 0 0; padding: 8px 12px; font-size: 12px;">
You manage: App → Data only
</div>
</div>
<div class="card">
<h4>SaaS — Software as a Service</h4>
<p>Everything managed by the provider. You just use the application. No infrastructure management whatsoever. Examples: Google Workspace, Microsoft 365, Salesforce, Zoom. Least control, least responsibility. Pay per user/subscription.</p>
<div class="info-box info-orange" style="margin: 12px 0 0; padding: 8px 12px; font-size: 12px;">
You manage: Nothing. Just use the app.
</div>
</div>
</div>
<div class="section-divider"></div>
<h3>Cloud Networking Concepts</h3>
<div class="grid-2">
<div class="card">
<h4>VPC — Virtual Private Cloud</h4>
<p>An isolated, logically segmented section of a cloud provider's network. You define IP ranges (CIDR), subnets, route tables, and gateways. VPCs are isolated by default — traffic doesn't cross between VPCs unless explicitly peered. Think of it as your own virtual data center in the cloud.</p>
<p>Contains: subnets (public and private), internet gateways, NAT gateways, route tables, security groups, and NACLs.</p>
</div>
<div class="card">
<h4>Network Security Groups (NSGs)</h4>
<p>Virtual firewall that controls inbound and outbound traffic at the VM/instance level or subnet level. Rules specify: protocol, port range, source/destination IP. Stateful — if you allow inbound, return traffic is automatically allowed.</p>
<div class="info-box info-red" style="margin: 12px 0 0; padding: 8px 12px; font-size: 12px;">
<strong>NACLs vs Security Groups:</strong> NACLs are stateless (must define both in/out), applied at subnet level. SGs are stateful, applied at instance level. NACLs have numbered rules processed in order.
</div>
</div>
<div class="card">
<h4>NFV — Network Functions Virtualization</h4>
<p>Replaces dedicated hardware appliances with software running on standard servers/VMs. Virtual routers, firewalls, load balancers, IDS/IPS, WAN optimization — all virtualized. Benefits: faster deployment, lower cost, flexibility, centralized management. Examples: Cisco CSR, Palo Alto VM-Series, F5 Virtual Edition.</p>
</div>
<div class="card">
<h4>Cloud Gateways</h4>
<div style="display: flex; flex-direction: column; gap: 10px;">
<div>
<div style="font-family: var(--mono); font-size: 11px; color: var(--cyan);">Internet Gateway</div>
<p style="margin: 2px 0;">Allows VPC resources to connect to the internet. Required for public subnets.</p>
</div>
<div>
<div style="font-family: var(--mono); font-size: 11px; color: var(--green);">NAT Gateway</div>
<p style="margin: 2px 0;">Allows private subnet instances to reach the internet without being directly accessible. Outbound only.</p>
</div>
<div>
<div style="font-family: var(--mono); font-size: 11px; color: var(--orange);">VPN Gateway</div>
<p style="margin: 2px 0;">Connects VPC to on-premises network over encrypted IPsec VPN tunnel.</p>
</div>
<div>
<div style="font-family: var(--mono); font-size: 11px; color: var(--yellow);">Transit Gateway / VPC Peering</div>
<p style="margin: 2px 0;">Connects multiple VPCs. Transit Gateway is a hub; VPC Peering is direct 1:1.</p>
</div>
</div>
</div>
</div>
<!-- Cloud architecture diagram -->
<div style="margin-top: 30px;">
<h3>VPC Architecture Visual</h3>
<div class="cloud-diagram">
<svg viewBox="0 0 700 320" width="100%" style="max-width: 700px;">
<!-- Internet cloud -->
<ellipse cx="350" cy="30" rx="100" ry="22" fill="rgba(0,212,255,.08)" stroke="#00d4ff" stroke-width="1.5" stroke-dasharray="5,3"/>
<text x="350" y="35" text-anchor="middle" fill="#00d4ff" font-size="12" font-family="JetBrains Mono">INTERNET</text>
<!-- Internet Gateway -->
<rect x="305" y="64" width="90" height="26" rx="4" fill="rgba(0,212,255,.12)" stroke="#00d4ff" stroke-width="1.5"/>
<text x="350" y="81" text-anchor="middle" fill="#00d4ff" font-size="10" font-family="JetBrains Mono">Internet GW</text>
<line x1="350" y1="52" x2="350" y2="64" stroke="#00d4ff" stroke-width="1.5"/>
<!-- VPC border -->
<rect x="40" y="100" width="620" height="210" rx="8" fill="rgba(0,229,160,.03)" stroke="#00e5a0" stroke-width="1.5" stroke-dasharray="6,4"/>
<text x="55" y="120" fill="#00e5a0" font-size="10" font-family="JetBrains Mono" opacity=".6">VPC: 10.0.0.0/16</text>
<!-- Public Subnet -->
<rect x="60" y="130" width="260" height="160" rx="6" fill="rgba(0,212,255,.04)" stroke="#00d4ff" stroke-width="1" stroke-dasharray="4,3"/>
<text x="190" y="148" text-anchor="middle" fill="#00d4ff" font-size="10" font-family="JetBrains Mono">Public Subnet 10.0.1.0/24</text>
<!-- NAT Gateway inside public -->
<rect x="75" y="158" width="95" height="24" rx="3" fill="rgba(255,209,102,.1)" stroke="#ffd166" stroke-width="1"/>
<text x="122" y="174" text-anchor="middle" fill="#ffd166" font-size="9" font-family="JetBrains Mono">NAT Gateway</text>
<!-- Web servers in public -->
<rect x="190" y="158" width="115" height="24" rx="3" fill="rgba(0,212,255,.1)" stroke="#00d4ff" stroke-width="1"/>
<text x="247" y="174" text-anchor="middle" fill="#00d4ff" font-size="9" font-family="JetBrains Mono">Web Servers</text>
<!-- Security Group label public -->
<rect x="75" y="195" width="230" height="18" rx="3" fill="rgba(255,77,109,.08)" stroke="#ff4d6d" stroke-width="1" stroke-dasharray="3,2"/>
<text x="190" y="207" text-anchor="middle" fill="#ff4d6d" font-size="8" font-family="JetBrains Mono">Security Group (HTTP 80, 443 IN)</text>
<!-- Load Balancer in public -->
<rect x="120" y="224" width="140" height="24" rx="3" fill="rgba(0,229,160,.1)" stroke="#00e5a0" stroke-width="1"/>
<text x="190" y="240" text-anchor="middle" fill="#00e5a0" font-size="9" font-family="JetBrains Mono">Load Balancer</text>
<!-- Private Subnet -->
<rect x="380" y="130" width="260" height="160" rx="6" fill="rgba(255,140,66,.03)" stroke="#ff8c42" stroke-width="1" stroke-dasharray="4,3"/>
<text x="510" y="148" text-anchor="middle" fill="#ff8c42" font-size="10" font-family="JetBrains Mono">Private Subnet 10.0.2.0/24</text>
<!-- App servers in private -->
<rect x="395" y="158" width="110" height="24" rx="3" fill="rgba(255,140,66,.1)" stroke="#ff8c42" stroke-width="1"/>
<text x="450" y="174" text-anchor="middle" fill="#ff8c42" font-size="9" font-family="JetBrains Mono">App Servers</text>
<!-- DB servers in private -->
<rect x="525" y="158" width="100" height="24" rx="3" fill="rgba(255,140,66,.1)" stroke="#ff8c42" stroke-width="1"/>
<text x="575" y="174" text-anchor="middle" fill="#ff8c42" font-size="9" font-family="JetBrains Mono">RDS Database</text>
<!-- Security Group label private -->
<rect x="395" y="195" width="230" height="18" rx="3" fill="rgba(255,77,109,.08)" stroke="#ff4d6d" stroke-width="1" stroke-dasharray="3,2"/>
<text x="510" y="207" text-anchor="middle" fill="#ff4d6d" font-size="8" font-family="JetBrains Mono">Security Group (8080 from subnet only)</text>
<!-- VPN Gateway right side -->
<rect x="395" y="224" width="230" height="24" rx="3" fill="rgba(255,209,102,.08)" stroke="#ffd166" stroke-width="1"/>
<text x="510" y="240" text-anchor="middle" fill="#ffd166" font-size="9" font-family="JetBrains Mono">VPN Gateway ← on-premises</text>
<!-- Connections -->
<line x1="350" y1="90" x2="190" y2="130" stroke="#00d4ff" stroke-width="1.5" stroke-dasharray="4,3"/>
<line x1="190" y1="248" x2="450" y2="170" stroke="#00e5a0" stroke-width="1.5" stroke-dasharray="4,3"/>
<line x1="122" y1="182" x2="122" y2="224" stroke="#ffd166" stroke-width="1" stroke-dasharray="3,2"/>
<!-- On-premises box outside -->
<rect x="590" y="8" width="95" height="36" rx="4" fill="rgba(255,140,66,.08)" stroke="#ff8c42" stroke-width="1"/>
<text x="637" y="24" text-anchor="middle" fill="#ff8c42" font-size="9" font-family="JetBrains Mono">On-Premises</text>
<text x="637" y="38" text-anchor="middle" fill="rgba(255,140,66,.5)" font-size="8" font-family="JetBrains Mono">Data Center</text>
<line x1="590" y1="26" x2="510" y2="236" stroke="#ffd166" stroke-width="1" stroke-dasharray="3,2"/>
</svg>
</div>
</div>
</section>
<!-- ══════════ GLOSSARY ══════════ -->
<section class="section fade-in" id="glossary">
<span class="section-tag" style="color: var(--text-dim);">// Reference</span>
<h2>Glossary of Terms</h2>
<p class="section-intro">Quick-reference definitions for all key networking concepts covered in this module.</p>
<input class="glossary-search" type="text" placeholder="🔍 Search terms..." oninput="filterGlossary(this.value)" />
<div class="glossary-grid" id="glossary-grid">
<div class="glossary-item"><div class="glossary-term">OSI Model</div><p class="glossary-def">Open Systems Interconnection model — 7-layer framework standardizing how network communication functions are divided and defined.</p></div>
<div class="glossary-item"><div class="glossary-term">PDU</div><p class="glossary-def">Protocol Data Unit — the form data takes at each OSI layer. Bit (L1), Frame (L2), Packet (L3), Segment (L4), Data (L5-7).</p></div>
<div class="glossary-item"><div class="glossary-term">MAC Address</div><p class="glossary-def">48-bit hardware address burned into NIC. Used at Layer 2 for local network communication. Format: AA:BB:CC:DD:EE:FF.</p></div>
<div class="glossary-item"><div class="glossary-term">IP Address</div><p class="glossary-def">32-bit (IPv4) or 128-bit (IPv6) logical address used at Layer 3 to identify devices globally and enable routing across networks.</p></div>
<div class="glossary-item"><div class="glossary-term">Subnet Mask</div><p class="glossary-def">32-bit value that defines the network and host portions of an IP address. Written in dotted decimal (255.255.255.0) or CIDR notation (/24).</p></div>
<div class="glossary-item"><div class="glossary-term">CIDR</div><p class="glossary-def">Classless Inter-Domain Routing — flexible IP address allocation using prefix length notation (/24) replacing fixed class boundaries.</p></div>
<div class="glossary-item"><div class="glossary-term">VLSM</div><p class="glossary-def">Variable Length Subnet Masking — using different prefix lengths within the same network to allocate address space efficiently based on actual needs.</p></div>
<div class="glossary-item"><div class="glossary-term">Broadcast Domain</div><p class="glossary-def">Group of devices that receive each other's broadcast messages. Routers separate broadcast domains; switches do not (without VLANs).</p></div>
<div class="glossary-item"><div class="glossary-term">Collision Domain</div><p class="glossary-def">Network segment where data packets can collide. Each switch port creates its own collision domain. Hubs share one collision domain.</p></div>
<div class="glossary-item"><div class="glossary-term">Router</div><p class="glossary-def">Layer 3 device that forwards packets between different networks based on IP addresses. Maintains routing tables. Breaks broadcast domains.</p></div>
<div class="glossary-item"><div class="glossary-term">Switch</div><p class="glossary-def">Layer 2 device that forwards frames using MAC address CAM table. Creates separate collision domains per port. Supports VLANs.</p></div>
<div class="glossary-item"><div class="glossary-term">Firewall</div><p class="glossary-def">Security device that filters network traffic based on rules. Stateless (packet-by-packet) or stateful (connection-aware). NGFW adds L7 inspection.</p></div>
<div class="glossary-item"><div class="glossary-term">IDS</div><p class="glossary-def">Intrusion Detection System — passive monitoring tool that detects and alerts on suspicious activity. Does not block traffic.</p></div>
<div class="glossary-item"><div class="glossary-term">IPS</div><p class="glossary-def">Intrusion Prevention System — active inline device that detects AND blocks malicious traffic in real time.</p></div>
<div class="glossary-item"><div class="glossary-term">Load Balancer</div><p class="glossary-def">Distributes incoming traffic across multiple servers to optimize performance, availability, and prevent overload.</p></div>
<div class="glossary-item"><div class="glossary-term">Proxy Server</div><p class="glossary-def">Intermediary server between clients and the internet. Forward proxy hides clients; reverse proxy hides servers.</p></div>
<div class="glossary-item"><div class="glossary-term">NAS</div><p class="glossary-def">Network Attached Storage — file-level storage device on a network. Uses NFS/SMB. Has own IP. Multiple clients can access simultaneously.</p></div>
<div class="glossary-item"><div class="glossary-term">SAN</div><p class="glossary-def">Storage Area Network — dedicated high-speed network for block-level storage. Uses Fibre Channel or iSCSI. Appears as local disk to servers.</p></div>
<div class="glossary-item"><div class="glossary-term">WAP</div><p class="glossary-def">Wireless Access Point — device that allows wireless clients to connect to a wired network. Operates at Layer 1-2.</p></div>
<div class="glossary-item"><div class="glossary-term">TCP</div><p class="glossary-def">Transmission Control Protocol — connection-oriented Layer 4 protocol. Provides reliable, ordered delivery via 3-way handshake and acknowledgments.</p></div>
<div class="glossary-item"><div class="glossary-term">UDP</div><p class="glossary-def">User Datagram Protocol — connectionless Layer 4 protocol. Fast but no delivery guarantees. Used for DNS, streaming, gaming, DHCP.</p></div>
<div class="glossary-item"><div class="glossary-term">FTP</div><p class="glossary-def">File Transfer Protocol — TCP port 20 (data) and 21 (control). Transfers files over a network. Cleartext — insecure. Replaced by SFTP/FTPS.</p></div>
<div class="glossary-item"><div class="glossary-term">SFTP</div><p class="glossary-def">SSH File Transfer Protocol — secure file transfer over SSH (port 22). Encrypts all data and credentials. Replacement for FTP.</p></div>
<div class="glossary-item"><div class="glossary-term">SSH</div><p class="glossary-def">Secure Shell — encrypted protocol (TCP 22) for remote command-line access. Replaced Telnet. Uses public/private key or password auth.</p></div>
<div class="glossary-item"><div class="glossary-term">Telnet</div><p class="glossary-def">TCP port 23. Remote access protocol that transmits all data in cleartext. Insecure — should never be used in production. Replaced by SSH.</p></div>
<div class="glossary-item"><div class="glossary-term">SMTP</div><p class="glossary-def">Simple Mail Transfer Protocol — TCP port 25. Sends outbound email between mail servers. Port 587 for TLS submission, 465 for SMTPS.</p></div>
<div class="glossary-item"><div class="glossary-term">DNS</div><p class="glossary-def">Domain Name System — resolves hostnames to IP addresses. UDP port 53 for queries, TCP 53 for zone transfers. Hierarchical distributed database.</p></div>
<div class="glossary-item"><div class="glossary-term">DHCP</div><p class="glossary-def">Dynamic Host Configuration Protocol — UDP 67/68. Auto-assigns IP config. Process: DORA (Discover, Offer, Request, Acknowledge).</p></div>
<div class="glossary-item"><div class="glossary-term">HTTP</div><p class="glossary-def">Hypertext Transfer Protocol — TCP port 80. Unencrypted web protocol. Stateless request/response model. Layer 7 application protocol.</p></div>
<div class="glossary-item"><div class="glossary-term">HTTPS</div><p class="glossary-def">HTTP Secure — TCP port 443. HTTP over TLS encryption. Uses SSL/TLS certificates for authentication and encryption.</p></div>
<div class="glossary-item"><div class="glossary-term">SNMP</div><p class="glossary-def">Simple Network Management Protocol — UDP 161/162. Monitors and manages network devices. v3 adds encryption. Traps are unsolicited alerts.</p></div>
<div class="glossary-item"><div class="glossary-term">LDAP</div><p class="glossary-def">Lightweight Directory Access Protocol — TCP/UDP 389. Queries directory services like Active Directory. LDAPS (636) adds TLS encryption.</p></div>
<div class="glossary-item"><div class="glossary-term">RDP</div><p class="glossary-def">Remote Desktop Protocol — TCP 3389. Microsoft's GUI remote access protocol. Keep behind VPN; common attack target on public internet.</p></div>
<div class="glossary-item"><div class="glossary-term">SIP</div><p class="glossary-def">Session Initiation Protocol — TCP/UDP 5060 (5061 for TLS). Sets up, modifies, terminates VoIP/video sessions. Works with RTP for media.</p></div>
<div class="glossary-item"><div class="glossary-term">Unicast</div><p class="glossary-def">One-to-one network communication. Traffic sent from single source to single specific destination. Most internet traffic is unicast.</p></div>
<div class="glossary-item"><div class="glossary-term">Multicast</div><p class="glossary-def">One-to-many communication to a defined group. Efficient for streaming. IPv4 range: 224.0.0.0–239.255.255.255 (Class D).</p></div>
<div class="glossary-item"><div class="glossary-term">Anycast</div><p class="glossary-def">Traffic sent to one address shared by multiple nodes — delivered to the topologically nearest one. Used in CDNs and DNS.</p></div>
<div class="glossary-item"><div class="glossary-term">Broadcast</div><p class="glossary-def">One-to-all within a broadcast domain. Address 255.255.255.255. Routers do not forward broadcasts. IPv6 eliminates broadcast in favor of multicast.</p></div>
<div class="glossary-item"><div class="glossary-term">Fiber Optic</div><p class="glossary-def">Transmission medium using light pulses through glass/plastic. Immune to EMI. SMF for long distance, MMF for short range. Extremely high bandwidth.</p></div>
<div class="glossary-item"><div class="glossary-term">Coaxial</div><p class="glossary-def">Cable with copper core surrounded by metallic shield. Used for cable TV (F-type) and legacy Ethernet. RG-6 for broadband, RG-59 for CCTV.</p></div>
<div class="glossary-item"><div class="glossary-term">DAC</div><p class="glossary-def">Direct Attach Copper — twinaxial cable with SFP+/QSFP connectors. Cheaper than fiber for short data center connections. Passive or active variants.</p></div>
<div class="glossary-item"><div class="glossary-term">SMF</div><p class="glossary-def">Single-Mode Fiber — single light path, 9μm core, yellow jacket. Long-distance (100+ km). Used in WAN and ISP infrastructure. OS2 standard.</p></div>
<div class="glossary-item"><div class="glossary-term">MMF</div><p class="glossary-def">Multi-Mode Fiber — multiple light paths, 50/62.5μm core, orange/aqua jacket. Short range (~2km). OM1–OM5 grades. Used in data centers.</p></div>
<div class="glossary-item"><div class="glossary-term">802.11</div><p class="glossary-def">IEEE standard for Wi-Fi wireless networking. Multiple amendments (a/b/g/n/ac/ax) define frequencies, speeds, and features.</p></div>
<div class="glossary-item"><div class="glossary-term">SC Connector</div><p class="glossary-def">Subscriber Connector — square push-pull fiber connector. Older standard, still found in legacy fiber deployments. Larger than LC.</p></div>
<div class="glossary-item"><div class="glossary-term">LC Connector</div><p class="glossary-def">Lucent Connector — small form-factor fiber connector with latch. Most common modern fiber connector. Half the size of SC. Used in high-density environments.</p></div>
<div class="glossary-item"><div class="glossary-term">MPO/MTP</div><p class="glossary-def">Multi-fiber connector carrying 12 or 24 fibers. Used for 40G/100G high-density connections. MTP is a high-performance MPO brand.</p></div>
<div class="glossary-item"><div class="glossary-term">RJ45</div><p class="glossary-def">8P8C connector for Ethernet twisted-pair cabling (Cat5e, Cat6, Cat6a). Standard wired network connector in offices and homes.</p></div>
<div class="glossary-item"><div class="glossary-term">RJ11</div><p class="glossary-def">6P2C/4C connector smaller than RJ45. Used for telephone lines and DSL modems. Not compatible with Ethernet.</p></div>
<div class="glossary-item"><div class="glossary-term">BNC</div><p class="glossary-def">Bayonet Neill-Concelman — twist-lock coaxial connector. Used in CCTV cameras, legacy 10BASE2 Ethernet, and test equipment.</p></div>
<div class="glossary-item"><div class="glossary-term">F-Type</div><p class="glossary-def">Screw-on coaxial connector used for cable TV, satellite dishes, and broadband internet (DOCSIS modems).</p></div>
<div class="glossary-item"><div class="glossary-term">SFP</div><p class="glossary-def">Small Form-factor Pluggable — hot-swappable transceiver for 1 Gbps (SFP) or 10 Gbps (SFP+). Fiber or copper via DAC cable.</p></div>
<div class="glossary-item"><div class="glossary-term">QSFP</div><p class="glossary-def">Quad SFP — 4-lane transceiver. QSFP28 = 100G. Used in high-bandwidth spine switches and server links.</p></div>
<div class="glossary-item"><div class="glossary-term">Star Topology</div><p class="glossary-def">All devices connect to a central switch/hub. Most common LAN topology. Easy troubleshooting but center is a single point of failure.</p></div>
<div class="glossary-item"><div class="glossary-term">Mesh Topology</div><p class="glossary-def">Every device connects to every other. Highly redundant. n(n-1)/2 connections needed. Used in WAN/critical networks.</p></div>
<div class="glossary-item"><div class="glossary-term">Spine and Leaf</div><p class="glossary-def">Modern data center topology. Every leaf connects to every spine. Equal latency (2 hops), optimized for east-west traffic.</p></div>
<div class="glossary-item"><div class="glossary-term">Three-Tier</div><p class="glossary-def">Core/Distribution/Access layers. Traditional enterprise design. Core for speed, Distribution for routing/policy, Access for endpoints.</p></div>
<div class="glossary-item"><div class="glossary-term">Collapsed Core</div><p class="glossary-def">Core and Distribution layers merged. Cost-effective for smaller networks. Risk of becoming a bottleneck as network grows.</p></div>
<div class="glossary-item"><div class="glossary-term">RFC 1918</div><p class="glossary-def">Defines private IP address ranges not routable on the internet: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16.</p></div>
<div class="glossary-item"><div class="glossary-term">APIPA</div><p class="glossary-def">Automatic Private IP Addressing — 169.254.0.0/16. Self-assigned when DHCP fails. Indicates DHCP is broken. Only communicates locally.</p></div>
<div class="glossary-item"><div class="glossary-term">NAT</div><p class="glossary-def">Network Address Translation — translates private IPs to public IPs at the router/firewall. PAT (Port Address Translation) shares one public IP among many devices.</p></div>
<div class="glossary-item"><div class="glossary-term">VPC</div><p class="glossary-def">Virtual Private Cloud — isolated virtual network in a cloud provider. You control subnets, routing, gateways, and security rules.</p></div>
<div class="glossary-item"><div class="glossary-term">NFV</div><p class="glossary-def">Network Functions Virtualization — replacing dedicated hardware appliances (routers, firewalls) with software on commodity servers.</p></div>
<div class="glossary-item"><div class="glossary-term">Security Group</div><p class="glossary-def">Virtual firewall at instance level in cloud environments. Stateful — return traffic automatically permitted. Applied to VMs/instances.</p></div>
<div class="glossary-item"><div class="glossary-term">NACL</div><p class="glossary-def">Network Access Control List — stateless firewall at subnet level in cloud. Rules processed in numbered order. Must define both inbound and outbound rules.</p></div>
<div class="glossary-item"><div class="glossary-term">IaaS</div><p class="glossary-def">Infrastructure as a Service — cloud model where provider manages hardware; you manage OS, runtime, and applications.</p></div>
<div class="glossary-item"><div class="glossary-term">PaaS</div><p class="glossary-def">Platform as a Service — provider manages infrastructure and OS; you manage applications and data only.</p></div>
<div class="glossary-item"><div class="glossary-term">SaaS</div><p class="glossary-def">Software as a Service — provider manages everything; you just use the application. Examples: Gmail, Microsoft 365, Salesforce.</p></div>
<div class="glossary-item"><div class="glossary-term">Internet Gateway</div><p class="glossary-def">Cloud component that allows VPC resources in public subnets to communicate with the internet.</p></div>
<div class="glossary-item"><div class="glossary-term">NAT Gateway</div><p class="glossary-def">Cloud component that lets private subnet instances reach the internet for outbound traffic without being publicly accessible.</p></div>
<div class="glossary-item"><div class="glossary-term">ARP</div><p class="glossary-def">Address Resolution Protocol — maps IP addresses to MAC addresses on a local network. Broadcasts "who has IP x.x.x.x?" and caches responses.</p></div>
<div class="glossary-item"><div class="glossary-term">OSPF</div><p class="glossary-def">Open Shortest Path First — link-state interior routing protocol. Uses Dijkstra algorithm. Fast convergence. Hierarchical with areas.</p></div>
<div class="glossary-item"><div class="glossary-term">BGP</div><p class="glossary-def">Border Gateway Protocol — the internet's routing protocol. Path-vector. Used between ISPs and for cloud multi-homing. Exterior Gateway Protocol.</p></div>
<div class="glossary-item"><div class="glossary-term">VLAN</div><p class="glossary-def">Virtual LAN — logically segments a switch into separate networks. Devices on different VLANs cannot communicate without a router (Layer 3 switch).</p></div>
<div class="glossary-item"><div class="glossary-term">STP</div><p class="glossary-def">Spanning Tree Protocol — prevents Layer 2 loops in switched networks by blocking redundant paths and electing a root bridge.</p></div>
<div class="glossary-item"><div class="glossary-term">TLS/SSL</div><p class="glossary-def">Transport Layer Security / Secure Sockets Layer — cryptographic protocol providing encryption, authentication, and integrity. TLS 1.3 is current standard.</p></div>
<div class="glossary-item"><div class="glossary-term">WDM</div><p class="glossary-def">Wavelength Division Multiplexing — transmitting multiple wavelengths of light simultaneously on a single fiber. DWDM for ultra-dense deployments.</p></div>
<div class="glossary-item"><div class="glossary-term">CAPWAP</div><p class="glossary-def">Control And Provisioning of Wireless Access Points — protocol used between wireless LAN controller and lightweight access points.</p></div>
</div>
</section>
<!-- Footer -->
<div style="padding: 40px 60px; border-top: 1px solid var(--border); display: flex; justify-content: space-between; align-items: center; flex-wrap: gap-16px;">
<div>
<div style="font-family: var(--mono); font-size: 10px; color: var(--text-dim); letter-spacing: 2px; text-transform: uppercase; margin-bottom: 6px;">Course Module</div>
<div style="font-size: 15px; font-weight: 700; color: var(--text-bright);">Network+ Networking Concepts — 23%</div>
</div>
<div style="font-family: var(--mono); font-size: 11px; color: var(--text-dim);">
OSI • Appliances • Topologies • Protocols • IPv4 • Cloud
</div>
</div>
</main>
<script>
// Sidebar toggle for mobile
function toggleSidebar() {
document.getElementById('sidebar').classList.toggle('open');
}
// Close sidebar when nav link clicked (mobile)
document.querySelectorAll('.nav-link').forEach(link => {
link.addEventListener('click', () => {
document.getElementById('sidebar').classList.remove('open');
});
});
// Glossary search
function filterGlossary(query) {
const q = query.toLowerCase();
document.querySelectorAll('.glossary-item').forEach(item => {
const term = item.querySelector('.glossary-term').textContent.toLowerCase();
const def = item.querySelector('.glossary-def').textContent.toLowerCase();
item.classList.toggle('hidden', q && !term.includes(q) && !def.includes(q));
});
}
// Tab switching
function showTab(id, btn) {
document.querySelectorAll('.tab-pane').forEach(p => p.classList.remove('active'));
document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
document.getElementById(id).classList.add('active');
btn.classList.add('active');
}
// Scroll animations
const observer = new IntersectionObserver(entries => {
entries.forEach(e => {
if (e.isIntersecting) {
e.target.classList.add('visible');
observer.unobserve(e.target);
}
});
}, { threshold: 0.05 });
document.querySelectorAll('.fade-in').forEach(el => observer.observe(el));
// Active nav link on scroll
const sections = document.querySelectorAll('section[id]');
const navLinks = document.querySelectorAll('.nav-link');
const scrollObserver = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
navLinks.forEach(link => link.classList.remove('active'));
const active = document.querySelector(`.nav-link[href="#${entry.target.id}"]`);
if (active) active.classList.add('active');
}
});
}, { rootMargin: '-30% 0px -60% 0px' });
sections.forEach(s => scrollObserver.observe(s));
</script>
</body>
</html>