Masque de sous réseaux
par _SebF

Saisie de l'IP :

Saisie du masque :

1 - Fonction de calcul de masque de sous réseaux
2 - A propos de
3 - Suivi du développement
        3.1 - Problème restant
        3.2 - RoadMap
        3.3 - Suivi du projet
4 - Code source

1 - Fonction de calcul de masque de sous réseaux

Cette outil vous permettra de calculer, en fonction du masque de sous réseaux de votre choix, la plage IP disponible. L'outil vous indiquera en plus, la première adresse disponible ainsi que la dernière.

Posez vos questions, remarques, demande d'évolution et retour d'expérience sur le Forum dédié aux outils

2 - A propos de

Version

Version 1.2

Date de création

03 Février 2004

Dernière modification

06 Juillet 2007

Auteur

_SebF

3 - Suivi du développement

3.1 - Problème restant

3.2 - RoadMap

- Saisir l'adresse de début et de fin et calculer le masque.

3.3 - Suivi du projet

2007.07.06

V1.2

- Optimisation du code par Pascal de Serveurperso.com en remplaçant le case par une seule ligne.

2004.02.04

V1.1

- Addition d'une adresse IP à une constante grâce à la méthode suivante : Conversion de l'IP (chaîne) en inetaddr grâce à la commande ip2long(), puis addition de +1 par exemple et retour à la chaîne avec la fonction inverse long2ip().
- Traitement des cas particulier /31 et 32 pour faire apparaître les bon résultat (N/A par exemple).

2004.02.03

V1.0

- Création du formulaire de saisie.
- Création du script basé sur le squelette whois.php.
- Calcul du nombre d'host grâce à $calcul_host=pow(2,32-$calcul_mask)-2; signifiant 2 Exposant (32-masque), le tout -2 car on retire le réseau et le broadcast.
- Vérification des champ de saisie.

4 - Code source

<?PHP

// ********************************************
// Affichage de l'entete html
// ********************************************
echo
    '
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    <head>

    <LINK REL="StyleSheet" HREF="../style.css" TYPE="text/css">

    <title>FrameIP, Pour ceux qui aiment IP - Script Masque</title>

    <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <META NAME="AUTHOR" CONTENT="www.frameip.com">
    <META NAME="COPYRIGHT" CONTENT="Copyright (c) 2003 by framip">
    <META NAME="KEYWORDS" CONTENT="masque, ip, classe, A, B, C, D, E, 255, 0, 128, bits, binaire, routeur, wan, reseaux, lan, comaraison, adresse, segment, convertion, hote, passerelle, route, calcul, sousreseau">
    <META NAME="DESCRIPTION" CONTENT="Frameip, pour ceux qui aiment IP - Script Masque">
    <META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">
    <META NAME="REVISIT-AFTER" CONTENT="1 DAYS">
    <META NAME="RATING" CONTENT="GENERAL">
    <META NAME="GENERATOR" CONTENT="powered by frameip.com - webmaster@frameip.com">

    </head>

    <body>
    ';

// ********************************************
// Initiation des variables
// ********************************************
$calcul_adresse_ip=$_POST['IP'];
$calcul_mask=$_POST['MASK'];

// **********************************************
// Récupération de la date et heure
// **********************************************
$annee=date("Y");
$mois=date("m");
$jour=date("d");
$heure=date("H");
$minute=date("i");
$seconde=date("s");

// **********************************************
// Récupération de l'IP cliente
// **********************************************
$ip_client=getenv("REMOTE_ADDR");

// **********************************************
// Récupération du Ptr de l'IP cliente
// **********************************************
$ptr=gethostbyaddr("$ip_client");
if ($ptr==$ip_client)
$ptr="Pas de ptr";

// **********************************************
// Récupération du port TCP source
// **********************************************
$port_source=getenv("REMOTE_PORT");

// **********************************************
// Récupération de l'IP du browser
// **********************************************
$ip_browser=getenv("HTTP_X_FORWARDED_FOR");

// ********************************************
// Validation du champs IP
// ********************************************
$calcul_inetaddr=ip2long($calcul_adresse_ip);
$calcul_adresse_ip=long2ip($calcul_inetaddr);

// ********************************************
// Vérification de la saisie
// ********************************************
$erreur=0; // Initialisation
if (($calcul_inetaddr==0)||($calcul_inetaddr==-1))
    masque_erreur(1);
if (($calcul_mask<1)||($calcul_mask>32))
    masque_erreur(2);

// ********************************************
// Conversion du masque
// ********************************************
// Optimisation fournit par Pascal de Serveurperso.com
$calcul_chaine_mask = (string) long2ip(256*256*256*256 - pow(2, 32 - $calcul_mask));

// ********************************************
// Calcul du nombre de HOST
// ********************************************
if ($calcul_mask==32)
    $calcul_host=1;
else
    $calcul_host=pow(2,32-$calcul_mask)-2;

// ********************************************
// Calcul de la route
// ********************************************
$calcul_route=$calcul_inetaddr&ip2long($calcul_chaine_mask); // Ajoute l'IP et le masque en binaire
$calcul_route=long2ip($calcul_route); // Convertit l'adresse inetaddr en IP

// ********************************************
// Calcul de la premiere adresse
// ********************************************
if ($calcul_mask==32)
    $offset=0;
else
    $offset=1;

if ($calcul_mask==31)
    $calcul_premiere_ip="N/A";
else
    {
    $calcul_premiere_ip=ip2long($calcul_route)+$offset;
    $calcul_premiere_ip=long2ip($calcul_premiere_ip);
    }

// ********************************************
// Calcul de la dernière adresse
// ********************************************
if ($calcul_mask==32)
    $offset=-1;
else
    $offset=0;

if ($calcul_mask==31)
    $calcul_derniere_ip="N/A";
else
    {
    $calcul_derniere_ip=ip2long($calcul_route)+$calcul_host+$offset;
    $calcul_derniere_ip=long2ip($calcul_derniere_ip);
    }

// ********************************************
// Calcul du broadcast
// ********************************************
if ($calcul_mask==32)
    $offset=0;
else
    $offset=1;
$calcul_broadcast=ip2long($calcul_route)+$calcul_host+$offset;
$calcul_broadcast=long2ip($calcul_broadcast);

// ********************************************
// Présentation des résultats
// ********************************************
echo '
    <p align="center">
        <font size="4" color="#008000">
            <b>
                Masque de sous réseaux
            </b>
        </font>
    </p>
    ';

echo '
    <table border="0" width="100%" id="table1">
        <tr>
            <td width="50%" align="right"><b>Les saisies</b></td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td width="50%" align="right">Adresse IP :</td>
            <td>'.$calcul_adresse_ip.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">Masque de sous réseau :</td>
            <td>'.$calcul_mask.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td width="50%" align="right"><b>Les résultats</b></td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td width="50%" align="right">Masque de sous réseau :</td>
            <td>'.$calcul_chaine_mask.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">Nombre maximum d\'hôte :</td>
            <td>'.$calcul_host.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">L\'adresse de réseau (La route) :</td>
            <td>'.$calcul_route.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">Première adresse d\'hôte :</td>
            <td>'.$calcul_premiere_ip.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">Dernière adresse d\'hôte :</td>
            <td>'.$calcul_derniere_ip.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">Adresse de broadcast :</td>
            <td>'.$calcul_broadcast.'</td>
        </tr>
    </table>
    ';

// ********************************************
// Fin du script général
// ********************************************
fin_du_script();

// ********************************************
// Fonction d'affichage de l'erreur de saisie
// ********************************************
function masque_erreur($erreur) // $erreur représente le numéro d'erreur.
    {
    // ********************************************
    // Affichage de titre d'erreur
    // ********************************************
    echo
        '
        <p align="center">
            <b>
                <font size="5" color="#008000">
                    Erreur
                </font>
            </b>
        </p>
    ';
    echo "<BR>";

    // ********************************************
    // Message personnalisé
    // ********************************************
    switch ($erreur)
        {
        case 1:
            echo'Le calcul ne peux pas avoir lieu car le champ IP est vide ou non valide.';
        break;
        case 2:
            echo'Le calcul ne peux pas avoir lieu car le champ MASK est vide ou non valide.';
        break;
        }

    // ********************************************
    // Fin du script général
    // ********************************************
    fin_du_script();
    }

function fin_du_script()
    {
    // ********************************************
    // Affiche de l'Url
    // ********************************************
    echo '
        <p align="right">
            <a target="_blank" href="http://www.frameip.com">
                www.frameip.com
            </a>
        </p>
        ';

    // ********************************************
    // Fin de la page Html
    // ********************************************
    echo
        '
        </body>

        </html>
        ';

    // ********************************************
    // Fin du script général
    // ********************************************
    exit(0);
    }

?>



mot clé : ipv4 tcpip route 128 bits C binaire lan comaraison 255 E adresse 0 segment convertion calcul ip sousreseau masque A routeur reseaux voip D hote vpn ipv6 B ip passerelle classe wan

Copyright © 2011-2015 FrameIP TcpIP. Tous droits réservés. Les marques et marques commerciales mentionnées appartiennent à leurs propriétaires respectifs. L'utilisation de ce site Web TcpIP implique l'acceptation des conditions d'utilisation et du règlement sur le respect de la vie privée.
Sécurité entreprise Téléphonie entreprise Expert de votre Infrastructure Test ADSL Serinya Operateur Telecom