
Calculateur VLSM IPv4
Répartir un réseau IPv4 en sous-réseaux de tailles variables selon le nombre d’hôtes requis.
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, /28Python
import ipaddress
for hosts in (50, 20, 10):
prefix = 32 - (hosts + 2 - 1).bit_length()
print(prefix) # /26, /27, /28; allocate largest firstJava
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, /28C#
int[] hosts = [50,20,10];
foreach (var h in hosts) Console.WriteLine(32 - (int)Math.Ceiling(Math.Log2(h+2))); // /26, /27, /28