Vzhledem k tomu, že původní návrh rozdělení tříd adres v internetu patrně nepředpokládal tak masové nasazení této architektury, jaké přišlo s vytvořením Internetu, a díky přidělování adres po celých sítích nastal brzy nedostatek IP adres. Situaci částečně vyřešila technika podsítí. Základní myšlenka této koncepce spočívá v možnosti rozdělit síť na několik podsítí, které se mohou směrovat odděleně. Ta část IP adresy, obsahující adresu uzlu v rámci sítě, rozdělíme na adresu podsítě a skutečnou adresu uzlu.
Jednotlivé pakety se pak směrují nikoliv na základě adresy sítě, ale podle adresy sítě a podsítě. Zpravidla je pak samotná adresa sítě nepodstatná, protože vše se řídí dvojicí adresa sítě a podsítě. Proto můžeme náš pohled zjednodušit tím, že prohlásíme dvojici síť-podsíť za adresu sítě. Jednoduše řečeno, zapomeneme na podsítě a adresy dál dělíme jen na síťovou a uzlovou část, ale v libovolném místě.
O tom, jak velká část adresy se použije k identifikaci sítě, rozhoduje takzvané podsíťová maska, která se nastavuje pro každou podsíť. Vlastní maska má tvar souvislé posloupnosti jednotkových bitů (délky max. 30), za kterými následuje posloupnost nul taková, aby délka celého řetězce byla rovna 32 bitům. Pro zápis masky se používá stejná notace, jako pro IP adresy: 4 tečkou oddělené desítkové hodnoty 4 bajtů (například 255.255.255.0).
Maska slouží primárně k oddělení síťové a uzlové části ale také k výpočtu broadcast adres. To se děje pomocí jednoduchých binárních operací:
kompletní IP adresa | AND | maska | = | adresa sítě
kompletní IP adresa | AND NOT | maska | = | adresa uzlu
kompletní IP adresa | OR NOT | maska | = | broadcast
Poznamenejme, že jednotlivým třídám IP adres je možné přidělit následující implicitní masky podsítě:
A | 255.0.0.0 |
B | 255.255.0.0 |
C | 255.255.255.0 |