Calculateur VLSM IPv4

Répartir un réseau IPv4 en sous-réseaux de tailles variables selon le nombre d’hôtes requis.

Saisissez le réseau IPv4 de départ, son préfixe CIDR et les nombres d’hôtes nécessaires, par exemple 50, 20, 10. Le résultat trie les sous-réseaux par taille décroissante. Chaque bloc réserve une adresse réseau et une adresse de diffusion ; les liaisons point à point /31 ne sont pas utilisées.

L’ordre d’affichage suit la taille décroissante des blocs ; à taille égale, l’ordre de saisie est conservé. Les adresses restantes sont comptées sans tenir compte d’autres contraintes de routage.

Méthode et hypothèses

Version de méthode 1.0.0 · Mise à jour

Répartir des sous-réseaux (VLSM)

Formule: Chaque bloc est la plus petite puissance de deux couvrant les hôtes requis et deux adresses réservées ; les blocs sont alignés et placés du plus grand au plus petit.

Saisissez le réseau IPv4 de départ, son préfixe CIDR et les nombres d’hôtes nécessaires, par exemple 50, 20, 10. Le résultat trie les sous-réseaux par taille décroissante. Chaque bloc réserve une adresse réseau et une adresse de diffusion ; les liaisons point à point /31 ne sont pas utilisées.

address
Adresse IPv4
prefix
Longueur du préfixe CIDR
hostRequirements
Hôtes requis par sous-réseau (séparés par des virgules)

IPv4 CIDR /0 à /32 et 1 à 64 besoins d’hôtes. Chaque sous-réseau réserve deux adresses (réseau et diffusion) et utilise un bloc aligné en puissance de deux ; /31 n’est pas utilisé.

Reproduire le calcul en code

Ces exemples utilisent les mêmes entrées et le même calcul de base que cet outil. Adaptez la validation et le formatage à votre application.

JavaScript
const hosts = [50, 20, 10];
const prefixFor = h => 32 - Math.ceil(Math.log2(h + 2));
console.log(hosts.map(prefixFor)); // /26, /27, /28 (allocate largest first)
TypeScript
const hosts: number[] = [50, 20, 10];
const prefixFor = (h: number): number => 32 - Math.ceil(Math.log2(h + 2));
console.log(hosts.map(prefixFor)); // /26, /27, /28
Python
import ipaddress
for hosts in (50, 20, 10):
    prefix = 32 - (hosts + 2 - 1).bit_length()
    print(prefix)  # /26, /27, /28; allocate largest first
Java
int[] hosts = {50,20,10};
for (int h : hosts) System.out.println(32 - (int)Math.ceil(Math.log(h+2)/Math.log(2))); // prefixes /26, /27, /28
C#
int[] hosts = [50,20,10];
foreach (var h in hosts) Console.WriteLine(32 - (int)Math.Ceiling(Math.Log2(h+2))); // /26, /27, /28

Comprendre les protocoles IP