Calculateur de sous-réseau IPv4

Calculer les adresses réseau et de diffusion, les masques, la plage et le nombre d’adresses d’un préfixe IPv4.

Saisissez une adresse IPv4 et un préfixe CIDR. Le calcul fournit les bornes et masques du sous-réseau. Pour /31, les deux adresses sont comptées comme utilisables sur une liaison point à point ; /32 représente une adresse unique.

Le calcul traite les préfixes sans classe (CIDR) ; aucune hypothèse de classe A/B/C n’est appliquée.

Méthode et hypothèses

Version de méthode 1.0.0 · Mise à jour

Calculer un sous-réseau IPv4

Formule: Adresse réseau = adresse IPv4 ET masque ; adresse de diffusion = réseau OU masque générique.

Saisissez une adresse IPv4 et un préfixe CIDR. Le calcul fournit les bornes et masques du sous-réseau. Pour /31, les deux adresses sont comptées comme utilisables sur une liaison point à point ; /32 représente une adresse unique.

address
Adresse IPv4
prefix
Longueur du préfixe CIDR

IPv4 uniquement : adresse décimale pointée valide et préfixe CIDR de /0 à /32. La capacité conventionnelle retire réseau et diffusion pour /0 à /30 ; /31 suit le cas point à point et /32 désigne une adresse unique.

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 octets = '192.168.1.130'.split('.').map(Number);
const ip = octets.reduce((n, octet) => (n << 8n) | BigInt(octet), 0n);
const mask = (0xFFFFFFFFn << 8n) & 0xFFFFFFFFn; // /24
const network = ip & mask;
const format = n => [24n, 16n, 8n, 0n].map(s => Number((n >> s) & 255n)).join('.');
console.log(format(network)); // 192.168.1.0
TypeScript
const octets = '192.168.1.130'.split('.').map(Number);
const ip = octets.reduce<bigint>((n, octet) => (n << 8n) | BigInt(octet), 0n);
const mask = (0xFFFFFFFFn << 8n) & 0xFFFFFFFFn; // /24
const network = ip & mask;
const format = (n: bigint) => [24n, 16n, 8n, 0n].map(s => Number((n >> s) & 255n)).join('.');
console.log(format(network)); // 192.168.1.0
Python
from ipaddress import ip_network

network = ip_network('192.168.1.130/24', strict=False)
print(network.network_address)  # 192.168.1.0
print(network.broadcast_address)  # 192.168.1.255
Java
long ip = 0;
for (String octet : "192.168.1.130".split("\\.")) {
    ip = (ip << 8) | Integer.parseInt(octet);
}
long mask = (0xFFFFFFFFL << 8) & 0xFFFFFFFFL; // /24
long network = ip & mask;
System.out.printf("%d.%d.%d.%d%n", (network >>> 24) & 255, (network >>> 16) & 255,
    (network >>> 8) & 255, network & 255); // 192.168.1.0
C#
var bytes = System.Net.IPAddress.Parse("192.168.1.130").GetAddressBytes();
for (var i = 0; i < bytes.Length; i++) bytes[i] &= (i < 3 ? (byte)255 : (byte)0); // /24
Console.WriteLine(new System.Net.IPAddress(bytes)); // 192.168.1.0
Autres langages
C
#include <arpa/inet.h>
#include <stdio.h>
#include <stdint.h>

struct in_addr ip; char out[INET_ADDRSTRLEN];
inet_pton(AF_INET, "192.168.1.130", &ip);
uint32_t network = ntohl(ip.s_addr) & 0xFFFFFF00u; // /24
ip.s_addr = htonl(network); inet_ntop(AF_INET, &ip, out, sizeof out);
puts(out); // 192.168.1.0
C++
#include <arpa/inet.h>
#include <cstdint>
#include <iostream>

struct in_addr ip{}; char out[INET_ADDRSTRLEN];
inet_pton(AF_INET, "192.168.1.130", &ip);
ip.s_addr = htonl(ntohl(ip.s_addr) & 0xFFFFFF00u); // /24
inet_ntop(AF_INET, &ip, out, sizeof out); std::cout << out; // 192.168.1.0
PHP
$bytes = inet_pton('192.168.1.130');
$ip = unpack('N', $bytes)[1] & 0xFFFFFF00; // /24
echo inet_ntop(pack('N', $ip)); // 192.168.1.0
PowerShell
$bytes = [Net.IPAddress]::Parse('192.168.1.130').GetAddressBytes()
$bytes[3] = 0 # /24: clear host octet
[Net.IPAddress]::new($bytes) # 192.168.1.0

Comprendre les protocoles IP