# Internet Protocol versie 4

Internet Protocol versie 4 (IPv4) is de vierde versie van het internetprotocol. Deze versie werd voor het eerst op grote schaal gebruikt en vormt de basis voor adressering (de identificatie van computers) binnen het internet.

## Adressen en adresbereik

IPv4 gebruikt adressen van 32 bits (4 bytes), waarmee in theorie maximaal 4.294.967.296 adressen mogelijk zijn. Onder meer wegens het beperkte aantal adressen van IPv4, wordt dit protocol opgevolgd door IPv6. IPv4 wordt beschreven in IETF RFC 791, gepubliceerd in september 1981.
Veel adresbereiken (address ranges) zijn gereserveerd voor onder andere lokale netwerken en multicast-adressen. Het gaat om:
Gereserveerde adresblokken :
| Adresbereik | Beschrijving | RFC |
| 0.0.0.0/8 | Current network (alleen geldig als bronadres) | RFC 5735 |
| 10.0.0.0/8 | Private network | RFC 1918 |
| 100.64.0.0/10 | Shared Address Space | RFC 6598 |
| 127.0.0.0/8 | Loopback | RFC 5735 |
| 169.254.0.0/16 | Link-local | RFC 3927 |
| 172.16.0.0/12 | Private network | RFC 1918 |
| 192.0.0.0/24 | IETF Protocol Assignments | RFC 5735 |
| 192.0.2.0/24 | TEST-NET-1, documentatie en voorbeelden | RFC 5735 |
| 192.88.99.0/24 | IPv6 to IPv4 relay | RFC 3068 |
| 192.168.0.0/16 | Private network | RFC 1918 |
| 198.18.0.0/15 | Network benchmark tests | RFC 2544 |
| 198.51.100.0/24 | TEST-NET-2, documentatie en voorbeelden | RFC 5737 |
| 203.0.113.0/24 | TEST-NET-3, documentatie en voorbeelden | RFC 5737 |
| 224.0.0.0/4 | IP multicast (voormalig klasse D-netwerk) | RFC 5771 |
| 240.0.0.0/4 | Gereserveerd (voormalig klasse E-netwerk) | RFC 1700 |
| 255.255.255.255 | Broadcast | RFC 919 |
De notatie "/n" bij een adresbereik geeft aan dat de eerste n bits van het bereik een vaste waarde hebben, terwijl de resterende bits gebruikt kunnen worden om de verschillende individuele adressen binnen het bereik aan te duiden.

### Subnetmasker

Het subnetmasker bepaalt het bereik van het subnet. Van ieder 32 bits IPv4-subnet is een aantal bits gereserveerd voor de hosts en een deel voor het netwerk. Iedere positie met een binaire 1 vormt onderdeel van het netwerkdeel, iedere 0 is ruimte voor de hosts in het subnet.
| Masker | 255.255.255.0 |
| Bits | /24 |
| Binair masker | 11111111.11111111.11111111.00000000 |
Dit masker kan worden toegepast op een IP-adres om het subnet te bepalen:
| IP-adres | 10.1.2.0 |
| Masker | 255.255.255.0 |
| Bereik subnet | 10.1.2.0 - 10.1.2.255 |
In dit voorbeeld kunnen is er in theorie ruimte voor 254 hosts in het subnet (2^24 = 256-2 = 254). In ieder subnet is er normaal gesproken een verlies van 2 adressen aan het broadcast-adres en een IP-adres voor de gateway.

### Classful networking

Dit is een verouderd concept wat nog maar heel weinig wordt gebruikt. Voor classful networking zijn een aantal klassen bepaald, de eerste 8 bits van een IP-adres bepalen de klasse van het adres en daarmee ook de grootte van het subnet. Het is dus mogelijk om het subnetmasker af te leiden uit het IP-adres. Iedere klasse had een vaste grootte voor het subnet (/8, /16 of /24), dit was relatief inefficiënt als er bijvoorbeeld minder adressen in een subnet nodig zijn.

### Classless networking

Met classless networking of classless inter-domain routering, afgekort CIDR, uit RFC 1519 is het concept van klassen losgelaten en is het masker dus niet meer impliciet te bepalen aan de hand van het IP-adres. Doordat het formaat van een subnet niet meer vastligt is het mogelijk om te variëren met het aantal bits voor het host-deel en het netwerkdeel:
| CIDR voorbeeld | 10.1.2.0/23 |
| Subnetmasker | 255.255.254.0 |
| Mask binair | 11111111.11111111.11111110.00000000 |
In het bovenstaande voorbeeld is een bit geleend van het netwerkdeel. Dit levert 9 bits op voor de hosts in het subnet, 2^9 = 512 - 2 = 510 bruikbare adressen.

#### Hiërarchie & VLSM

CIDR kent een hiërarchie waarbij meerdere subnetten in een supernet kunnen worden samengevat, bijvoorbeeld 10.1.0.0/24 t/m 10.1.3.0/24 kunnen worden samengevat als 10.1.0.0/22 (een supernet). Deze manier van aggregeren kan bijvoorbeeld geheugen besparen in routers als er maar 1 supernet hoeft te worden opgeslagen in plaats van meerdere onderliggende subnets.
Met variable length subnet mask, afgekort VLSM, uit RFC1878 werd het mogelijk om subnetten van verschillende lengtes te gebruiken onder een supernet. Een voorbeeld van een aantal subnetten met VSLM:
* 10.0.0.0/25 = 126 beschikbare adressen
* 10.0.0.128/25 = 126 beschikbare adressen
* 10.0.1.0/24 = 254 beschikbare adressen
Deze kunnen bij VLSM worden samengevat als één supernet: 10.0.0.0/23.

## IPv4-adresvoorstellingen

IPv4-adressen worden in documenten in het algemeen in een decimale notatie vermeld. Bijvoorbeeld: 91.198.174.192. De volgende notaties worden echter ook gebruikt:
| Decimaal (gebruikelijk) | 91.198.174.232 |
| Hexadecimaal | 0x5B.0xC6.0xAE.0xE8 |
| Octaal | 0133.0306.0256.0350 |
| Decimaal voluit | 1539747560 |
| Hexadecimaal voluit | 0x5BC6AEE8 |
Bovenstaand IP-adres verwijst naar wikipedia.org en kan in de browser ingegeven worden als http://91.198.174.192. De website kan ook worden opgeroepen via de andere notatiemethoden.

## Schaarste

Op 31 januari 2011 gaf IANA de laatste twee vrij te verdelen /8-adresbereiken uit. De laatste vijf overgebleven /8-adresblokken werden op 3 februari volgens afspraak verdeeld over de vijf Regional Internet Registry's.
Dit wil nog niet direct zeggen dat alle IPv4-adressen nu "op" zijn, maar de schaarste begint nu wel nijpend te worden. Deze dienen bijvoorbeeld via 'brokers' te worden aangekocht, tegen soms aanzienlijke prijzen. Op 25 november 2019 gaf de Regional Internet Registry voor Europa en het Midden-Oosten RIPE NCC aan dat ze die dag het laatste vrije /22-blok IPv4-adressen vrijgegeven hadden. Nieuwe aanvragers komen op een wachtlijst en moeten hopen op adressen van organisaties die opgeheven zijn of die anderszins hun ranges teruggeven aan de pool. Particulieren maken veelal gebruik van dynamisch toegekende adressen in combinatie met NAT of zelfs Carrier-grade NAT om de gevolgen van het IPv4-tekort zoveel mogelijk te beperken. Websites delen vaak een enkel IPv4-adres op basis van 'shared hosting' en 'Server Name Indication'.