ЁЯПл The SchoolтА║ЁЯХ╕я╕П NetworkingтА║ЁЯПл рдзрдбрд╛ 02 тАФ IP addresses рдЖрдгрд┐ subnets: рдЗрдорд╛рд░рддреАрдЪрд╛ рдкрддреНрддрд╛
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯПл рдзрдбрд╛ 02 тАФ IP addresses рдЖрдгрд┐ subnets: рдЗрдорд╛рд░рддреАрдЪрд╛ рдкрддреНрддрд╛

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 02 ┬╖ рдкреБрдвреЗ: lesson-03-ports-sockets


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

рдзрдбреЗ 01тАУ02. рд▓рдЦреЛрдЯреНрдпрд╛рд╡рд░рдЪрд╛ рдкрддреНрддрд╛: IPv4, IPv6, subnets, CIDR, рдЦрд╛рдЬрдЧреА рдкрд▓реНрд▓реЗ, рдЖрдгрд┐ рдлрд╛рдЯрдХрд╛рд╡рд░рдЪрд╛ рдПрдХрдЪ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрддреНрддрд╛.

ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ

рд░рд╕реНрддреНрдпрд╛рд╡рд░рдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЗрдорд╛рд░рддреАрд▓рд╛ рдПрдХ рдкрддреНрддрд╛ рдЕрд╕рддреЛ тАФ dots рдЕрд╕рд▓реЗрд▓реЗ рдЪрд╛рд░ рдЖрдХрдбреЗ, рдЬрд╕реЗ 192.168.0.12. campus рдЪреНрдпрд╛ рдПрдХрд╛рдЪ wing рдордзрд▓реНрдпрд╛ рдЗрдорд╛рд░рддреАрдВрдЪреНрдпрд╛ рдкрддреНрддреНрдпрд╛рдЪреА рд╕реБрд░реБрд╡рд╛рдд рд╕рд╛рд░рдЦреА рдЕрд╕рддреЗ (192.168.0.) рдЖрдгрд┐ рддреНрдпрд╛ рдереЗрдЯ рдЪрд┐рдареНрдареНрдпрд╛ рджреЗрдК-рдШреЗрдК рд╢рдХрддрд╛рдд; рджреБрд╕рд▒реНрдпрд╛ wing рдХрдбреЗ рдЬрд╛рдгрд╛рд░реА рдЪрд┐рдареНрдареА рдЖрдзреА corridor рдЪреНрдпрд╛ рджрд╛рд░рд╛рдХрдбреЗ (gateway) рдЬрд╛рддреЗ. рдХрд╛рд╣реА рдкрддреНрддреЗ рдЦрд╛рдЬрдЧреА рдЕрд╕рддрд╛рдд: рдкреГрдереНрд╡реАрд╡рд░рдЪреА рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рд│рд╛ рдЖрдд рддреЗрдЪ рдкрддреНрддреЗ рд╡рд╛рдкрд░рддреЗ, рдЖрдгрд┐ рдЪрд┐рдареНрдареА рдмрд╛рд╣реЗрд░ рдкрдбрддрд╛рдирд╛ рдлрд╛рдЯрдХ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЬрд╛рдЧреА рд╢рд╛рд│реЗрдЪрд╛ рдПрдХрдЪ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрддреНрддрд╛ рд▓рд╛рд╡рддреЗ.

ЁЯЧ║я╕П рдЖрдХреГрддреА

flowchart LR
  subgraph wing["192.168.0.0/24 тАФ the wing (256 addresses)"]
    A[".12 your laptop"] ; B[".20 the printer"] ; G[".1 the gate (router)"]
  end
  G -->|NAT: from 203.0.113.7| I["ЁЯМН the internet"]

тЭУ рдХрд╛рдп

ЁЯдФ рдХрд╛

рдХреЛрдг рдереЗрдЯ рдмреЛрд▓рддреЛ рдЖрдгрд┐ рдХреЛрдг router рдорд╛рд░реНрдЧреЗ рдЬрд╛рддреЛ рд╣реЗ subnets рдард░рд╡рддрд╛рдд; security groups рдЖрдгрд┐ firewalls CIDR рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рддрд╛рдд; рдкреНрд░рддреНрдпреЗрдХ cloud VPC рдореНрд╣рдгрдЬреЗ рддреБрдореНрд╣реА рдЖрдЦрд▓реЗрд▓реНрдпрд╛ subnets рдЪрд╛ campus. /24 рд╕рд╣рдЬ рд╡рд╛рдЪрддрд╛ рдпреЗрдгреЗ рд╣реА рдХрд┐рдорд╛рди рдЕрдкреЗрдХреНрд╖рд╛ рдЖрд╣реЗ.

ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)

route рд╡рд┐рднрд╛рдЧ 8.8.8.8 "рдХрдбреЗ" рдПрдХ UDP socket рдЙрдШрдбрддреЛ рдкрдг рдХрд╛рд╣реАрд╣реА рдкрд╛рдард╡рдд рдирд╛рд╣реА тАФ OS рдмрд╛рд╣реЗрд░ рдЬрд╛рдгрд╛рд░рд╛ рдкрддреНрддрд╛ рдирд┐рд╡рдбрддреЗ, рдЖрдгрд┐ рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ code рдордзреВрди рддреБрдореНрд╣реА рдХреЛрдгрддреНрдпрд╛ wing рдордзреНрдпреЗ рдЖрд╣рд╛рдд рддреЗ рдХрд│рддреЗ.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛

python3 net/demo.py route
ip addr | grep inet 2>/dev/null || ifconfig | grep inet     # your addresses; note the /24 or netmask
ip route 2>/dev/null || netstat -rn | head -5               # the default gateway: the door out of the wing
python3 -c "import ipaddress as i; n=i.ip_network('192.168.0.0/24'); print(n.num_addresses, list(n.hosts())[:3], n.broadcast_address)"

тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ

рддреБрдордЪрд╛ рдмрд╛рд╣реЗрд░ рдЬрд╛рдгрд╛рд░рд╛ рдкрддреНрддрд╛ рдЦрд╛рдЬрдЧреА рдЕрд╕рддреЛ (192.168.тАж, 10.тАж рдХрд┐рдВрд╡рд╛ 172.16тАУ31.тАж); gateway рд╕рд╣рд╕рд╛ рддреБрдордЪреНрдпрд╛ wing рдЪрд╛ .1 рдЕрд╕рддреЛ; Python рдЪреА one-liner 256, рддреАрди host рдкрддреНрддреЗ рдЖрдгрд┐ 192.168.0.255 рдЫрд╛рдкрддреЗ.

ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ

рддреБрдореНрд╣реА рдПрдЦрд╛рджрд╛ рдкрддреНрддрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдЪрд╛ mask рд╡рд╛рдЪреВ рд╢рдХрддрд╛, рддреБрдордЪрд╛ gateway рд╢реЛрдзреВ рд╢рдХрддрд╛, рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ laptop рд╡рд░рдЪрд╛ рдкрддреНрддрд╛ internet рд▓рд╛ рджрд┐рд╕рдгрд╛рд░рд╛ рдкрддреНрддрд╛ рдХрд╛ рдирд╛рд╣реА рд╣реЗ рд╕рдордЬрд╛рд╡реВ рд╢рдХрддрд╛.

тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛

ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: рдПрдХрдореЗрдХрд╛рдВрд╡рд░ рдпреЗрдгрд╛рд░реЗ CIDRs рдЕрд╕рд▓реЗрд▓рд╛ VPC peer рд╣реЛрдК рд╢рдХрдд рдирд╛рд╣реА; /32 рдиреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ security group рдореНрд╣рдгрдЬреЗ рдПрдХ machine, /0 рдореНрд╣рдгрдЬреЗ рд╕рдЧрд│реЗ. AWS рд╢рд╛рд│реЗрдЪрд╛ campus рдореНрд╣рдгрдЬреЗ рд╣рд╛рдЪ рдзрдбрд╛, рдмрд┐рд▓рд╛рд╕рд╣.

тПня╕П рдкреБрдвреЗ

рдзрдбрд╛ 03 тАФ ports рдЖрдгрд┐ sockets: рдЦреЛрд▓реА рдХреНрд░рдорд╛рдВрдХ, рдЖрдгрд┐ server рдПрдХрд╛рдЪ рдЦреЛрд▓реАрдд рдХрд╛ рдРрдХрддреЛ рддрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рд╣реБрдгреНрдпрд╛рд▓рд╛ рд╕реНрд╡рддрдГрдЪреЗ рдмрд╛рдХ рдХрд╛ рдорд┐рд│рддреЗ.

ЁЯПл Lesson 02 тАФ IP addresses & subnets: the building's address

ЁЯУН You are here: Lesson 02 of 12 ┬╖ Next: lesson-03-ports-sockets


ЁЯУж What's in this branch

Lessons 01тАУ02. The address on the envelope: IPv4, IPv6, subnets, CIDR, private ranges, and the one public address at the gate.

ЁЯзТ Explain like I'm 5

Every building on the road has a street address тАФ four numbers with dots, like 192.168.0.12. Buildings on the same wing of the campus share the start of their address (192.168.0.) and can pass notes directly; a note to another wing goes to the corridor door (the gateway) first. Some addresses are private: every school on earth uses the same ones inside, and the gate swaps them for the school's one public address when a note leaves.

ЁЯЧ║я╕П Diagram

flowchart LR
  subgraph wing["192.168.0.0/24 тАФ the wing (256 addresses)"]
    A[".12 your laptop"] ; B[".20 the printer"] ; G[".1 the gate (router)"]
  end
  G -->|NAT: from 203.0.113.7| I["ЁЯМН the internet"]

тЭУ What

ЁЯдФ Why

Subnets decide who talks directly and who goes through a router; security groups and firewalls are written in CIDR; every cloud VPC is a campus of subnets you draw. Reading /24 fluently is table stakes.

ЁЯФз How (in this repo)

The route section opens a UDP socket "towards" 8.8.8.8 without sending тАФ the OS picks the outward address, which is how you learn which wing you are in from code.

ЁЯзк Try it

python3 net/demo.py route
ip addr | grep inet 2>/dev/null || ifconfig | grep inet     # your addresses; note the /24 or netmask
ip route 2>/dev/null || netstat -rn | head -5               # the default gateway: the door out of the wing
python3 -c "import ipaddress as i; n=i.ip_network('192.168.0.0/24'); print(n.num_addresses, list(n.hosts())[:3], n.broadcast_address)"

тЬЕ Verify тАФ what you should see

Your outward address is private (192.168.тАж, 10.тАж or 172.16тАУ31.тАж); the gateway is usually .1 of your wing; the Python one-liner prints 256, three host addresses and 192.168.0.255.

ЁЯПБ What you just proved

You can read an address and its mask, find your gateway, and explain why the address on your laptop is not the address the internet sees.

тЪая╕П Common mistakes

ЁЯПн Why this matters in production: a VPC with overlapping CIDRs cannot peer; a security group written as /32 is one machine, /0 is everyone. The AWS school's campus is this lesson with a bill.

тПня╕П Next

Lesson 03 тАФ ports & sockets: the room number, and why a server listens on one room while every visitor gets their own desk.

тЖР Previouswhy networkingNext тЖТports sockets

This page is the lesson's README from the lesson-02-ip-addresses branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.