- Licence Fondamentale d'Informatique
dimanche 19 mai 2013

Les classes d’adresses IP



Qu’est ce qu’une adresse IP?

Adresse IP (Internet Protocol): Une adresse IP est à l’inverse d’une @ MAC, uneadresse logique qui est configurable via le panneau de configuration puis connexion réseau. Une @ IP permet d’identifier une machine dans un réseau. Une adresse IP est composé de 32 bits et est codé en binaire.
Exemple d’adresse IP (binaire) : 1100 0000.1010 1000.0000 0000.0000 0001 =>192.168.0.1
Binaire : Le binaire est un système de numération qui utilise la base 2. C'est-à-dire qu’il y a deux valeurs possibles, qui sont le 0 et le 1 et que l’on appelle bit et 8 bits forment un octet.
Décimal
Binaire
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
La norme IPv4 (4 pour 4 octets soit 32 bits) permet d’identifier une machine sur un réseau, que ce soit un réseau public ou privé. Les adresses IP sont ainsi séparées en plusieurs classes : A, B, C, D et E.
Exemple d’adresse IP en binaire puis en décimal:
1100 0101.1010 1000.0000 1111.1010 1100 : 197.168.15.172
A quoi servent ces classes d’adresse et comment les distinguer ?
Tout d’abord, il faut savoir qu’une adresse IP est composée en deux parties :
· Une adresse réseau qui permet d’identifier l’adresse de sous réseau
· Une adresse hôte qui permet d’identifier la machine
Ce qu’il faut savoir avant de continuer : Une adresse IP qui a tous ces bits d’hôtes à 0 (par exemple 192.168.30.0) représente l’adresse du réseau. Elle ne peut pas être attribuée à une machine. En revanche lorsqu’une adresse IP a tous ces bits d’hôtes à 1 (par exemple 192.168.30.255), cela représente l’adresse de diffusion également appelébroadcast.
Ce qui diffère entre les classes, c’est le nombre d’adresse réseau et d’hôtes disponible.

Adresse de classe A :
Binaire :
Un adresse de classe A se code avec :
· 1 octet pour l’adresse réseau
· 3 octets pour l’adresse hôte
Soit XXXX XXXX. XXXX XXXX.XXXX XXXX.XXXX XXXX
Une adresse de classe A aura comme premier bit d’adresse réseau la valeur 0 en binaire.
Exemple :
0 XXX XXXX.XXXX XXXX.XXXX XXXX.XXXX XXXX est une adresse de classe A
1 XXX XXXX.XXXX XXXX.XXXX XXXX.XXXX XXXX n’est pas une adresse de classe A
Décimal :
Il est plus facile de comprendre les adresses IP lorsqu’elles sont écrites en décimal.
Les adresses de classe A ont le premier octet (en décimal) de l’adresse réseau compris entre 1 à 126, car l’adresse réseau des classes A est codée sur un octet.
Une astuce pour reconnaitre les classes d’adresses IP lorsqu’elles sont écrites en décimal est de regarder le premier nombre d’une adresse, s’il est compris entre 1 et 126, c’est alors une adresse de classe A, s’il est compris entre 128 et 191, c’est une classe B et entre 192 et 223, c’est une classe C.
Exemple :
79.20.69.230 est une adresse de classe A
192.168.0.69 n’est pas une adresse de classe A
Calcul du nombre d’adresse :
Pour calculer le nombre d’adresse réseau disponible dans une classe A, il suffit de faire le calcul (2^7)-2=126
Explication : Il y a 2^7 (de 00000000 à 01111111 avec 7 bits pouvant être à 1) possibilités de réseaux, soit 128 possibilités. Or le réseau 0 (premier octet valant 00000000) n'existe pas et l’adresse 127 est réservée pour désigner votre machine (me demandez pas pourquoi !), c’est pour cela que l’on ôte 2 au nombre d’adresses de réseaux et que l’on obtient en tout 126 réseaux.
Pour calculer le nombre d’adresse hôtes disponible dans une classe A, on utilise le même principe de calcul, mais ici sur les 3 octets restants, on arrive donc au calcul suivant :
2^(8+8+8 ) -2 = 2^(24)-2 = 16 777 214 adresses hôtes !
Remarque : Il ne faut pas oublier d’enlever l’adresse avec tous les bits d’hôtes à 0 (adresse du réseau) et celle à tous les bits d’hôtes à 1 (adresse de broadcast), soit 2 adresses.
Il existe dans chaque classe d’adresse, des adresses privées réservées à la création de réseaux locaux, car dans une entreprise, la plupart du temps, il n’y a qu’un seul accès Internet qui est partagé sur les différents PC. Les adresses privées permettent de créer des réseaux plus ou moins gros, et c’est dans cette optique que l’on va choisir d’utiliser un réseau privé de classe A, B ou C.
Adresses privées de classe A : de 10.0.0.1 à 10.255.255.254 soit 16 777 214 machines dans un réseau local (Hey les gars, on se fait un CS?)
On retrouve dans les adresses de classes A, les grosses entreprises qui ont besoin d’adresser beaucoup de machines comme par exemple Google, les FAI (Neuf, Free dont toutes les adresses commencent par 88,etc.) mais bizarrement Microsoft n’a pas une adresse de classe A, mais une de B. (bizarre non?)


Adresse de classe B :
Maintenant que l’on a vu avec les adresses de classe A comment le découpage binaire marchait, cela ne va pas être dur de comprendre les adresses de classe B.
Binaire :
Une adresse de classe B se code avec :
· 2 octets pour l’adresse réseau
· 2 octets pour l’adresse hôte
Soit XXXX XXXX. XXXX XXXX.XXXX XXXX.XXXX XXXX
Une adresse de classe B aura ses deux premiers bits d’adresse réseau de valeur 10 en binaire.
Ex : 10 XX XXXX.1010 1110. XXXX XXXX.XXXX XXXX
Décimal :
Les adresses de classe B ont le premier octet (en décimal) de l’adresse réseau compris entre 128 à 191, plus précisément entre 128.0 et 191.255 car l’adresse réseau des classes B est codée sur deux octets.
Ex : 136.56.0.30 est une adresse de classe B
Calcul du nombre d’adresse :
Le nombre d’adresse réseau est plus important que pour les adresses de classe A, puisqu’elle est codée non plus sur un mais deux octets, soit 2^14 (10 000000 00000000 à 10 111111 11111111 avec 16-2=14 bits pouvant être à 1) soit un total de 16384 adresses réseaux. Les deux bits en moins sont les 2 premiers qui restent inchangés.
Le nombre d’adresse hôtes est aussi codée sur 2 octets, soit (2^16) -2 = 65534 hôtes possible.
Remarque : Il ne faut pas oublier d’enlever l’adresse avec tous les bits d’hôtes à 0 (adresse du réseau) et celle à tous les bits d’hôtes à 1 (adresse de broadcast), soit 2 adresses.
Adresse privée de classe B : de 172.16.0.1 à 172.31.255.254 soit 1 048 574 adresses hôtes.

Adresse de classe C :
Qui n’a jamais fait un réseau local et utilisé l’adresse 192.168.0.X. Pas vous? Bon beh je vais expliquer tout ca !
Binaire :
Une adresse de classe C se code avec :
· 3 octets pour l’adresse réseau
· 1 octet pour l’adresse hôte
Soit XXXX XXXX. XXXX XXXX.XXXX XXXX.XXXX XXXX
Une adresse de classe C aura ses trois premiers bits d’adresse réseau de valeur 110 enbinaire.
Ex : 110 1 1011.1010 1110.0011 0110.XXXX XXXX
Décimal :
Les adresses de classe C ont le premier octet (en décimal) de l’adresse réseau compris entre 192 à 223, plus précisément entre 192.0.0 et 223.255.255 car l’adresse réseau des classes C est codée sur trois octets.
Ex : 192.168.30.8 est une adresse de classe C
Calcul du nombre d’adresse :
Le nombre d’adresse réseau est encore plus important que pour les classes B,puisqu’elle est codé sur 21 bits (24bits – 3 inchangés = 21) soit 2^21 = 2097152 adresses réseaux.
Le nombre d’adresse hôtes est en revanche plus petit que pour une classe B car il est codé sur un octet, soit (2^8 ) -2 =254. Il ne faut pas oublier d’enlever l’adresse avec tous les bits d’hôtes à 0 (adresse du réseau) et celle à tous les bits d’hôtes à 1 (adresse de broadcast), soit 2 adresses.
Adresses privées de classe C : de 192.168.0.1 à 192.168.0.254 soit 254 machines dans un réseau local.
Remarque : Une adresse de classe C n’est pas routable (ne peut pas passer un routeur) !
En résumé :
Classe
Début IP
Fin IP
Nb réseau
Nb hôtes
Début IP privé
Fin IP privé
A
1.0.0.0
126.255.255.255
126
16 777 214
10.0.0.1
10.255.255.254
B
128.0.0.0
191.255.255.255
16384
65534
172.16.0.1
172.31.255.254
C
192.0.0.0
223.255.255.255
2097152
254
192.168.0.1
192.168.0.254
Je ne parlerais que très peu des adresses de classe D et E car elles sont très peu utilisées.
Classe D : Adresses multicast, elles permettent la transmission pour une vidéo conférence par exemple. Les adresses réseaux vont de 224 à 231.
Classe E : Ce sont des adresses de test réservés pour le futur.
Maintenant que les classes d’adresses sont bien comprises (enfin j’espère) il est temps d’expliquer le principe et le fonctionnement des masques de sous-réseau.
(J’ai pris l’explication du site www.commentcamarche.net car elle est très bien faite et j’y ai modifié quelques trucs qui à mon goût mérite d’être approfondis).
En résumé, on fabrique un masque contenant des 1 aux emplacements des bits que l'on désire conserver, et des 0 pour ceux que l'on veut annuler. Une fois ce masque créé, il suffit de faire un ET logique entre la valeur que l'on désire masquer et le masque afin de garder intacte la partie que l'on désire et annuler le reste.
Ainsi, un masque réseau (en anglais netmask) se présente sous la forme de 4 octets séparés par des points (comme une adresse IP), il comprend (dans sa notation binaire) des zéros au niveau des bits de l'adresse IP que l'on veut annuler (et des 1 au niveau de ceux que l'on désire conserver).
Intérêt d'un masque de sous-réseau
Le premier intérêt d'un masque de sous-réseau est de permettre d'identifier simplement le réseau associé à une adresse IP.
En effet, le réseau est déterminé par un certain nombre d'octets de l'adresse IP (1 octet pour les adresses de classe A, 2 pour les adresses de classe B, et 3 octets pour la classe C).
Chaque classe possède un masque par défaut :
  • Pour une adresse de Classe A, seul le premier octet doit être conservé. Le masque possède la forme suivante 11111111.00000000.00000000.00000000, c'est-à-dire255.0.0.0 en notation décimale ;
  • Pour une adresse de Classe B, les deux premiers octets doivent être conservé, ce qui donne le masque suivant 11111111.11111111.00000000.00000000, correspondant à 255.255.0.0 en notation décimale ;
  • Pour une adresse de Classe C, avec le même raisonnement, le masque possédera la forme suivante 11111111.11111111.11111111.00000000, c'est-à-dire255.255.255.0 en notation décimale.

  • Or, un réseau est noté en prenant le nombre d'octets qui le caractérise, puis en complétant avec des 0. Le réseau associé à l'adresse 34.56.123.12 est par exemple34.0.0.0, car il s'agit d'une adresse IP de classe A.
    Pour connaître l'adresse du réseau associé à l'adresse IP 34.56.123.12, il suffit donc d'appliquer un masque dont le premier octet ne comporte que des 1 (soit 255 en notation décimale), puis des 0 sur les octets suivants.
    Le masque est: 11111111.00000000.00000000.00000000
    Le masque associé à l'adresse IP 34.208.123.12 est donc 255.0.0.0.
    La valeur binaire de 34.208.123.12 est: 00100010.11010000.01111011.00001100
    Principe du ET logique :
    ET
    0
    1
    0
    0
    0
    1
    0
    1
    Soit :
    0 ET 0 = 0
    0 ET 1 = 0
    1 ET 0 = 0
    1 ET 1 = 1
    Un ET logique entre l'adresse IP et le masque donne ainsi le résultat suivant :
    00100010.11010000.01111011.00001100
                                   ET
    11111111.00000000.00000000.00000000
                                   =
    00100010.00000000.00000000.00000000
    Soit 34.0.0.0. Il s'agit bien du réseau associé à l'adresse 34.208.123.12

    Création de sous-réseauxReprenons l'exemple du réseau 34.0.0.0, et supposons que l'on désire que les deux premiers bits du deuxième octet permettent de désigner le réseau.
    Le masque à appliquer sera alors 
    :

    11111111.11000000.00000000.00000000

    C'est-à-dire 255.192.0.0
    Si on applique ce masque, à l'adresse 34.208.123.12 on obtient :
    34.192.0.0
    En réalité il y a 4 cas de figures possibles pour le résultat du masquage d'une adresse IP d'un ordinateur du réseau 34.0.0.0
  • Soit les deux premiers bits du deuxième octet sont 00, auquel cas le résultat du masquage est34.0.0.0
  • Soit les deux premiers bits du deuxième octet sont 01, auquel cas le résultat du masquage est34.64.0.0
  • Soit les deux premiers bits du deuxième octet sont 10, auquel cas le résultat du masquage est34.128.0.0
  • Soit les deux premiers bits du deuxième octet sont 11, auquel cas le résultat du masquage est34.192.0.0
  • Ce masquage divise donc un réseau de classe A (pouvant admettre 16 777 214 ordinateurs) en 4 sous-réseaux - d'où le nom de masque de sous-réseau - pouvant admettre 2^22 ordinateurs, c'est-à-dire 4 194 304 ordinateurs.
    Il peut être intéressant de remarquer que dans les deux cas, le nombre total d'ordinateurs est le même, soit 16 777 214 ordinateurs (4 x 4194304 - 2 = 16777214).
    Le nombre de sous-réseaux dépend du nombre de bits attribués en plus au réseau (ici 2). Le nombre de sous-réseaux est donc :
    Nb bits
    Nb sous-réseaux
    1
    2
    2
    4
    3
    8
    4
    16
    5
    32
    6
    64
    7
    128
    8
    256

    Création du masque selon des contraintes
    Pour les deux exemples suivants, j’utiliserai l’adresse de réseau 192.168.10.0 de masque par défaut 255.255.255.0
    Imaginons que nous voulions créer des sous réseaux pouvant accueillir au maximum 8 machines.
    Il va donc falloir résoudre la petite équation 2^X >= 8 où X représente le nombre de bits dans la partie hôte (en partant de la fin) où va être codé le masque.
    Dans ce cas, X = 3 donc il y aura 3 bits à 0 pour identifier les hôtes, le reste des bits seront à 1, soit un masque à 255.255.255.248. (Car 1111 1000 en binaire donne 248 en décimal)
    Vérification : en vert les bits de masques et en violet les bits d’hôtes
    192.168.10.00000 000 soit 192.168.10.0
    192.168.10.00001 000 soit 192.168.10.8
    192.168.10.00010 000 soit 192.168.10.16
    192.168.10.00011 000 soit 192.168.10.24
    Etc…
    On remarque que dans chaque sous-réseau nous avons 8 adresses hôtes disponible (mais véritablement 6 car il faut enlever l’adresse du réseau et l’adresse du broadcast)
    Décomposition du 2ème sous-réseau :
    Adresse sous-réseau : 192.168.10.8 (192.168.10.00001 000)
    Adresse de broadcast : 192.168.10.15 (192.168.10.00001 111)
    Nb hôtes adressable : 6
    Adressage possible des hôtes : 192.168.10.9 à 192.168.10.14
    Autre cas de figure, on veut créer 17 sous réseaux.
    Toujours la même équation 2^X>= 14 ou X va représenter cette fois le nombre de bits dans la partie hôte (en partant du début) où va être codé le masque.
    Dans ce cas, X = 4 (car 16>14), donc il y aura 4 bit au début de la partie hôte pour identifier le sous-réseau soit un masque de 255.255.255.224 (car 1111 0000 en binaire donne 224 en décimal)

    Vérification : en vert les bits de masques et en violet les bits d’hôtes:
    192.168.10.0000 0000 soit 192.168.10.0
    192.168.10.0001 0000 soit 192.168.10.16
    192.168.10.0010 0000 soit 192.168.10.32
    192.168.10.0011 0000 soit 192.168.10.48
    192.168.10.0100 0000 soit 192.168.10.64
    Etc…
    Si l’on continue jusqu’à arriver à 256, on comptera en tout 16 sous-réseau, donc si on n’utilise pas les deux derniers, nous avons nos 14 sous-réseaux.
    Décomposition du 3ème sous réseau :
    Adresse sous-réseau : 192.168.10.32 (192.168.10.0010 0000)
    Adresse de broadcast : 192.168.10.47 (192.168.10.0010 1111)
    Nb hôtes adressable : 14
    Adressage possible des hôtes : 192.168.10.33 à 192.168.10.46
    Notation CIDR (Classless Inter-Domain Routing) :
    La notation CIDR permet d’écrire autrement le masque d’une adresse. Il se place à la fin de l’adresse réseau de cette façon : 192.168.10.0/24 pour un masque en 255.255.255.0.
    Fonctionnement du CIDR :
    Un masque de sous-réseau est toujours avec des bits à 1 continu. Ce qui veut dire que l’on ne peut pas trouver un masque tel que 255.255.255.(1011 0100), un masque sera toujours de la forme 255.255.255.1110 0000 ou 255.255.255.1111 100 etc…, il n’y aura jamais de 0 entre les 1. Pour calculer un CIDR, il faut juste compter le nombre de bits à 1 dans le masque.
    Ainsi un masque en 255.255.255.0 se notera /24.
    Exemple d’écriture: l’adresse 192.168.10.0 de masque 255.255.255.0 devient 192.168.10.0/24
    Voilà c’est tout pour les classes d’adresses IP et les masques, ce n’est pas facile de comprendre du premier coup, mais j’ai essayé de rendre ça le plus compréhensible que j’ai pu.
    dimanche 21 avril 2013

    Exercice : vues


    1. Créez une vue V_EMP contenant : le matricule, le nom, le numéro de département, la somme de la commission et du salaire baptisée GAINS, le lieu du département.
    2. Sélectionnez les lignes de V_EMP dont le salaire total est supérieur à 10.000 F
    3. Essayez de mettre à jour le nom de l'employé MARTIN à travers la vue V_EMP.
    4. Créez une vue VEMP10 qui ne contienne que les employés du département 10 de la table EMP (n'utilisez pas l'option CHECK pour cette création).
    5. Insérez dans cette vue un employé SOULIER qui appartient au département 20.
      Essayez ensuite de retrouver cet employé au moyen de la vue VEMP10 puis au moyen de la table EMP.  
    6. Détruisez cette vue VEMP10 et recréez-la avec l'option CHECK.
    7. Essayez d'insérer un employé BALARD pour le département 30. Que se passe-t-il ?
    8. Essayez de modifier le département d'un employé visualisé à l'aide de cette vue.
    9. Liste des salaires des employés avec le pourcentage par rapport au total des salaires de leur département (utilisez une vue qui fournira le total des salaires).
    10. Vous pourrez chercher une autre solution qui n'utilise pas de vue mais un select emboîté dans le from.


    ---------------------------------
    corrogier

    create view v_emp (matr, nom, dept, GAINS, lieu) as
      select matr, nome, emp.dept, sal + nvl(comm,0), lieu
      from emp,dept
      where emp.dept = dept.dept;select * from v_emp where SALTOT > 10000;
    update v_emp set nome = 'TOTO' where nome = 'MARTIN';
    -----
    create view vemp10 as select * from emp where dept=10;
    insert into vemp10 values
    (1117, 'SOULIER', 'RANGER', 7839, '18/05/81', 10000, 300, 20);
    drop view vemp10;
    create view VEMP10 as select * from emp
    where dept = 10 with check option;
    insert into vemp10 values
    (0007, 'BALARD', 'OUVRIER', 7839, '18-MAY-81', 10000, 300, 20);
    ORA-01402: view WITH CHECK OPTION where-clause violation
    update vemp10 set dept=20 where nome='LESAGE';
    On ne peut pas non plus utiliser update pour la meme raison.
    -----
    create view vt (dept, total) as
      select dept, sum(sal+nvl(comm,0)) from emp group by dept;
    select nome, sal+nvl(comm,0) salaire, (sal+nvl(comm,0))/total pourcentage
    from vt,emp
    where vt.dept=emp.dept;
    Avec les nouvelles possibilités offertes par SQL (select emboîté dans la clause from) on peut se passer de la création d'une vue:
    select nome, sal+nvl(comm,0) salaire, round((sal+nvl(comm,0))/total*100) pourcentage, emp.dept
    from emp, (select dept, sum(sal+nvl(comm,0)) total from emp group bydept) e1
    where e1.dept = emp.dept;
    Si on veut bien utiliser les facilités offertes par SQL*PLUS(pas dans SQL) :
    break on dept skip 1
    compute sum of salaire on dept
    column pourcentage format a7
    select nome, sal+nvl(comm,0) salaire,
           to_char(round((sal+nvl(comm,0))/total*100), '999')||' %' pourcentage,  emp.dept
    from emp, (select dept, sum(sal+nvl(comm,0)) total from emp group bydept) e1
    where e1.dept = emp.dept
    order by 4;
     

    Create View


    Les vues peuvent être considérées comme des tables virtuelles. Généralement, une table contient un jeu de définitions et elle est destinée à stocker physiquement les données. Une vue a également un jeu de définitions, créé au-dessus des tables ou d’autres vues, et elle ne stocke pas physiquement les données.
    La syntaxe pour la création d’une vue est comme suit :
    CREATE VIEW "nom de vue" AS "instruction SQL"
    "instruction SQL" peut être n’importe quelle instruction SQL que nous avons vue dans ce didacticiel.
    À titre d’illustration, utilisons un exemple simple. Supposons que nous avons la table suivante :
    TABLE Customer
    (First_Name char(50),
    Last_Name char(50),
    Address char(50),
    City char(50),
    Country char(25),
    Birth_Date date)


    et pour créer une vue appelée V_Customer contenant seulement les colonnes First_Name, Last_Name et Country de cette table, il faut saisir :
    CREATE VIEW V_Customer
    AS SELECT First_Name, Last_Name, Country
    FROM Customer

    Nous avons à présent une vue appelée V_Customer avec la structure suivante :
    View V_Customer
    (First_Name char(50),
    Last_Name char(50),
    Country char(25))

    Il est aussi possible d’utiliser une vue pour appliquer des jointures à deux tables. Dans ce cas, les utilisateurs ne verront qu’une vue au lieu de deux tables, disposant ainsi d’instructions SQL beaucoup plus simples. Supposons que nous avons les deux tables suivantes :
    Table Store_Information
    store_nameSalesDate
    Los Angeles1500 €05-Jan-1999
    San Diego250 €07-Jan-1999
    Los Angeles300 €08-Jan-1999
    Boston700 €08-Jan-1999

    Table Geography
    region_namestore_name
    EastBoston
    EastNew York
    WestLos Angeles
    WestSan Diego

    et pour créer une vue contenant des ventes par données de région, il faudra définir l’instruction SQL suivante :
    CREATE VIEW V_REGION_SALES
    AS SELECT A1.region_name REGION, SUM(A2.Sales) SALES
    FROM Geography A1, Store_Information A2
    WHERE A1.store_name = A2.store_name
    GROUP BY A1.region_name

    Nous avons la vue V_REGION_SALES, définie pour stocker les ventes par enregistrements de région. Pour connaître le contenu de cette vue, il faut saisir :
    SELECT * FROM V_REGION_SALES
    Résultat :
    REGIONSALES
    East700 €
    West2050 €
    samedi 20 avril 2013

    Top 10 most popular programming languages


    Top 10 most popular programming language
    Programming languages faced ups and downs in their popularity and usage. A programmer who wants to stay in developer fields need to update themselves according to latest trend and demands of programming languages. Programming languages which were popular some years ago are not useful today. It is very important for a programmer or a new programmer who is going to start their career to learn such language which will be in trend for some time. Although no one can exactly predict which programming language will be popular in future.  So to stay in developer field programmers have to adopt right programming language time to time.
    It is very difficult to know which programming language is being used most widely and which not. TIOBE Software Company publishes index of popular programming languages on monthly basis. Ratings are based on the number of skilled people over the world, third party vendors. The popular search engines like Google, Bing, and Yahoo are used to get the latest trends. Here is the list of Top 10 Most popular programming languages based on OCT 2012 ratings on TIOBE. This list does not tell best programming language.

    10. Ruby

    Ruby Programming Language
    Ruby is a dynamic, reflective, general purpose object oriented programming language that combines syntax inspired by Perl with Smalltalk like feature. Ruby was developed by Yukihiro Matsumoto in the mid of 1990s. Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.

    9. Perl

    Perl Programming Language Perl is high level, interpreted, dynamic programming language. Perl was developed by Larry Wall in 1987 as a general purpose UNIX scripting language to make report processing easier. Science then it has undergone many changes and revisions. The latest stable version of Perl programming language is  5.16.1 released on 8 August 2012.

    8. Python

    Python Programming Language
    Python is general purpose high level programming language designed by Guido Van Rossum which first appeared in 1991. The Python Syntax is said to clear and expressive. The important feature of this language is code readability. Python has a large and comprehensive standard library. Python is often used as scripting language, but it has also wide range of non scripting application. Most stable version of Python is 3.3.0 released on 29 September 2012.

    7. Visual Basic

    Visual Basic
                    Visual Basic is the third generation event driven programming language. Visual Basic is Integrated Development Environment (IDE) from Microsoft. Visual Basic is designed easy to learn and use. Visual Basic was derived from Basic and enables the Rapid Application Development (RAD) of Graphical User Interface (GUI) application. Visual Basic access data using Data access object, remote data objects or ActiveX data objects.
                   

    6. PHP

    PHP is the open source server side scripting language designed by Rasmos Lardorf which is first appeared in 1995. PHP was designed for web development to produce dynamic web pages. It is one of the first developed server side scripting language to be embedded into HTML document rather calling an external file. PHP is installed on more than 20 million websites and 1 million web servers. Software’s that include PHP are WordPress, Joomla, Concrete5, MyBB, Drupal, etc.

    5. C#

    C # Programming Languae
    C# (C Sharp) is the multi-paradigm programming language which includes many programming discipline such as strong typing, functional, generic, object oriented (with classes) and component oriented. It was developed by Microsoft with in .NET initiative which appeared first in 2000. The most recent stable version of C# is 5.0 released in 15 August 2012.

    4. C++

    C++
                    C++ (C plus plus) is the object oriented programming language developed by Bjarne Stroustrup at Bell Labs in 1979. Earlier its name was C with classes but in 1983 it was renamed with C++, putting an increment operator. It has the feature of object oriented such as classes. Windows operating system is developed using C++.

    3. Objective-C

    Objective-C
    Objective c is general purpose, high-level, object oriented programming language. It was first appeared in 1983 designed by Brad Cox and Tom Love. It is the main programming language used by Apple for the OS X and iOS operating systems. It was selected as the main language used by NeXT for its NeXTSTEP operating system, from which OS X and iOS are derived.

    2. Java

    JAVA
                    JAVA programming language was developed by James Gosling at Sun Microsystems (Now merged into ORACLE Corporation). It was first released in 1995 and since then it is most popular language in use, especially for client-server web applications. Java is a object oriented programming language designed to have few implementation dependencies as possible. Java programs runs on Java Virtual Machine (JVM) environment.  Java programs follow “write once run anywhere” (WORA) they need not to compile on every machine.

    1. C

    C Programming Language                C programming language developed in between 1969 and 1973 by Dennis Ritchie at Bell Labs. C is the most widely used programming language over the time. There is rarely few computer architecture which does not support c language. The C language used to develop device drivers and other complex software. UNIX operating system is the best developed software through c language. C language influenced many others programming languages like C++, Java, PHP, Perl, objective-c, C# and others. Learning C languages is little crucial, but once you learn it you can easily go with other languages like JAVA, C++, PHP these languages used mostly same syntax as C uses.
    This list is based on TIOBE ratings of OCT 2012. Description, statics, facts of programming languages are taken from Wikipedia.
    mardi 16 avril 2013

    Les réseaux IP pour les nuls


    Le protocole Internet est intimement lié à Linux. Dans cette première partie, nous rappelons brièvement l'histoire des réseaux à commutation de paquets puis détaillons les principales caractéristiques d'IP version 4.

    Guerre froide

    Bouclez la ceinture de votre chronoscaphe. Retour en 1962. L'Union Soviétique souhaite implanter des missiles nucléaires à Cuba. Dans ce contexte tendu, les Etats-Unis financent des projets de recherche visant au déploiement de réseaux de communication capables de fonctionner en cas d'endommagement partiel. Le schéma suivant présente trois topologies classiques :

    Reseaux centralises, en etoile, distribue

    Réseaux centralisés, en étoile, distribués


    Les données de réseaux centralisés et en étoile transitent par un nombre restreint de noeuds privilégiés. Leur indisponibilité interdit toute communication globale.

    Commutation de circuits

    Ce modèle hérite de techniques remontant à l'invention du téléphone. La question s'est posée très tôt de la manière de mettre en relation n abonnés. Dans l'idéal, une ligne relie directement chaque paire d'abonnés. Un calcul rapide établit qu'un tel câblage nécessite L lignes avec

          n * (n -1)
    L = ______________
              2
    
    Une interconnexion complète est pratiquement impossible. Il faudrait 1 million de lignes pour relier seulement 1 500 abonnés. Les centraux téléphoniques assurent au plus m communications simultanées, m << n. M est choisi en fonction du trafic estimé. A l'origine, des opératrices raccordaient manuellement les abonnés. Les autocummutateurs électromécaniques puis électroniques prirent progressivement le relais. Mais le principe reste identique : établir un circuit électrique entre les abonnés.

    Commutation de paquets

    Août 1964. Sous l'égide de l'US Air Force, Paul Baran publie un mémorandum intitulé "Introduction aux réseaux de communication distribués". Ce document jette les bases des réseaux informatiques modernes. Le paquet numérique de données devient l'unité des échanges. Ces paquets circulent indépendamment sur les réseaux, plusieurs chemins menant généralement d'une source à une destination. Le calcul de la route est de la responsabilité des équipements intermédiaires : les routeurs. Les paquets sont regroupés par le destinataire. Cette approche présente plusieurs avantages. Le délai d'obtention de la ligne disparaît. Il devient possible d'équilibrer le trafic entre plusieurs routes, ou de contourner une route temporairement indisponible. Cependant, le temps de calcul des routes dépasse le plus souvent largement le temps de propagation du signal. Une situation pénalisante lors du transport de données de type voix (les réseaux virtuels de type ATM résolvent en partie ce problème).

    Arpanet

    1969. L'ARPA (Advanced Research Project Agency) finance la création d'un réseau à commutation de paquets expérimental : ARPANET. Il deviendra opérationnel en 1975.

    IP

    En 1983, un grand pas est franchi avec l'implémentation de TCP/IP dans la version Berkeley d'Unix (BSD). Cette norme ouverte mettra une dizaine d'années à s'imposer.

    Adresses IP

    Une adresse IP identifie une machine d'un réseau. Une adresse IP publique est globalement unique. Chaque adresse est codée sur 32 bits et représentée sous la forme d'un quadruplet d'entiers dans l'intervalle [0..255]. Soit un total de 4.3 milliards de combinaisons (2^32).

    Representation adresse IP

    Représentation adresse IP


    Les réseaux communiquent par le biais de plates-formes d'échanges : les dorsales.Le processus de décision du chemin des paquets porte le nom de routage. Des tables contiennent les informations nécessaires à l'aiguillage statique ou calculé dynamiquement. Comme on ne peut envisager d'ajouter une entrée pour chacune des machines de l'Internet, on procède à l'agrégation des adresses. On introduit à cet effet la notion de préfixe réseau. N des bits les plus à gauche de chaque adresse identifient un unique réseau. 3 classes principales de réseaux couvrent une vaste gamme de besoins, de l'intranet à l'infrastructure complexe d'un FAI. Dans la suite, nous noterons A/n les n bits de plus fort poids (les plus à gauche) d'une adresse A.

    Classe

    Préfixe

    Bits réseau

    Adresses

    A080.*.*.* à 127.*.*.*
    B1016128.0.*.* à 191.255.*.*
    C11024192.0.0.* à 223.255.255.*
    Chaque réseau de classe A dispose de 16.7 millions d'adresses. Ce nombre tombe à 65536 pour les réseaux de classe B et à 256 pour les réseaux de classe C.

    Protocole IP

    Un protocole informatique normalise les échanges d'information entre des systèmes physiques hétérogènes. Les protocoles de communication sont organisés en couches successives reliées par des interfaces. Cette approche rend possible la programmation de piles de protocoles complexes.

    Les couches IP

    Les couches IP


    Nous passons par abstractions successives du médium physique (Ethernet, Token Ring ...) aux applications (messagerie, web ...).

    Modèle client / serveur

    Le protocole IP gère la communication entre applications sur le mode client/serveur. Une machine A met à disposition des ressources. Une machine B accède à ces ressources.

    Modele client/serveur

    Modèle client/serveur


    Ports de communication

    Un service met en relation deux machines à un instant t. Plusieurs transactions peuvent avoir lieu simultanément. Dans ce but, IP introduit la notion de port. Les ports sont numérotés de 0 à 65535. Une adresse IP et un port identifient un côté de la connexion. On parle de socket. Deux sockets caractérisent complètement la connexion. Une bibliothèque C relativement normalisée facilite la programmation de logiciels exploitant IP.

    Well Known Services

    Par convention, les services Internet les plus connus sont attachés à des ports fixes dans l'intervalle [0..1023

    Port

    Service

    Fonction (exemple)

    25SMTPEnvoi de courrier relayé par votre FAI
    80HTTPConsultation de sites web
    110POP3Récupération du courrier hébergé par votre FAI
    119NNTPConsultation de forums de discussion
    Ces ports sont mentionnés par exemple dans les modules de configuration de Kmail, Krn, Netscape Communicator ...

    Couche IP

    La couche IP gère la transmission de paquets d'un émetteur A à un destinataire B sans garantie d'acheminement ou d'ordre. Par contre, elle opère le fractionnement des paquets en unités de petite taille, ce en accord avec la capacité des supports physiques rencontrés.

    Paquet IP

    Paquet IP


    Les couches de plus haut niveau s'appuient sur la couche IP pour le transport. En clair, les paquets des couches supérieures sont encapsulés dans des paquets IP. 

    Encapsulation IP

    Encapsulation IP


    Couche ICMP

    La couche ICMP (Internet Control Message Protocol) fournit des messages de contrôle et d'information aidant à la synchronisation du réseau. Plusieurs outils utilisent ICMP. C'est le cas de la commande ping qui permet de vérifier l'activité des équipements. Vérifiez que le paquetage tcpdump est présent sur votre système. Installez-le si nécessaire. Sous Red Hat :

    rpm -ivh tcpdump-3.6.2-1.i386.rpm
    
    Nous supposons que vous disposez d'un accès Internet correctement configuré. Ouvrez deux fenêtres Xterm. Connectez-vous à Internet. Dans la première fenêtre, lancez

    tcpdump -i <interface>
    
    <interface> vaut ppp0 pour une liaison modem analogique. Dans la seconde fenêtre, lancez

    ping 212.198.253.142
    
    Vous obtenez le résultat suivant

    PING 212.198.253.142 (212.198.253.142): 56 data bytes
    64 bytes from 212.198.253.142: icmp_seq=0 ttl=51 time=205.1 ms
    
    18:04:17.378349 212.83.146.178 > 212.198.253.142: icmp: echo request
    18:04:17.570056 212.193.253.142 > 212.83.146.178: icmp: echo reply
    
    Vous visualisez les paquets échangés avec le serveur de Linux Pratique.

    Couche UDP

    La couche UDP sert à l'émission rapide de paquets. Elle ne garantit pas leur acheminement. On l'utilise lorsque la perte de données n'est pas critique, par exemple pour la supervision de réseaux.

    Couche TCP

    La couche TCP assure la réception correcte et ordonnée des paquets. Il s'agit d'un protocole fiable en mode connecté. Deux machines impliquées dans un échange établissent une connexion au moyen d'un échange initial en 3 étapes. On parle de poignée de mains (handshake).

    Reprenons l'exemple du site web de Linux Pratique. Ouvrons une connexion sur le port 80

    telnet 212.198.253.142 80
    
    Vous obtenez le résultat suivant

    18:24:43.476047 212.83.140.26.1431 > 212.198.253.142.www: tcp 0
    18:24:43.750049 212.198.253.142.www > 212.83.140.26.1431: tcp 0
    18:24:43.760250 212.83.140.26.1431 > 212.198.253.142.www: tcp 0
    samedi 13 avril 2013

    Projets Securite-Informatique

    Rapport de stage : Conception et développement d’une application de gestion du temps de travail des employés


    Le présent rapport synthétise le travail effectué dans le cadre de stage
    d’été de la deuxième année au sein de l’entreprise G.S.E.I. En effet
    parmi les services offerts par G.S.E.I, il y a l’installation des
    pointeuses biométriques et l’application de gestion qui interagit avec
    celles-ci. Cette application développée par le constructeur et livrée
    avec la pointeuse, présente des limitations lors de son utilisation.
    Ainsi le but de mon stage est la conception et le développement d’une
    application de gestion de temps de travail, reprenant les
    fonctionnalités de l’application existante et dépassant ses limites.
    Pour mener à bien ce projet, j’ai commencé par une analyse de
    l’existant. Cette étude a mis en évidence que l’application actuelle
    connaissait certains problèmes allant de la complexité de l’utilisation
    et de l’interface aux problèmes d’adaptation avec des SGBD autres
    qu’Access. A la lumière de ces résultats, j’ai mené, dans un deuxième
    temps, une étude fonctionnelle qui a abouti à l’élaboration des
    maquettes princi pales de l’application. Ces dernières ont été traduites
    par des diagrammes UML, à savoir, le diagramme de cas d’utilisations,
    diagrammes de séquences et diagramme de classes. Finalement j’ai passé à
    l’implémentation de l’application.



     
    -