Académique Documents
Professionnel Documents
Culture Documents
5 Supprimer 1 2
3 5
3 5
5 Supprimer 1
Supprimer 2 3
4 1 3 4 4
Page 1 sur 9
1) Pour un nud de rang k le rang de son fils gauche, sil existe, est k+1. Par exemple le fils gauche du nud contenant linfo 11 ayant comme rang k = 5 est le nud contenant linfo 18 ayant comme rang k+1 = 6. Expliquez brivement ce rsultat. Le parcours prfix est un parcours Racine-FilsGauche-FilsDroit donc dans le tableau de linarisation la position du fils gauche est immdiatement aprs la position de son pre. (10 pts) 2) Ecrire un algorithme qui permet de renvoyer le rang du fils droit dun nud de rang k. Voici lentte de lalgorithme crire : Algorithme rangFilsDroit (Tab[0..n], k) R // avec n le nombre de nuds dans larbre binaire et k lindice dans Tab du nud pour lequel on cherche le // rang du fils droit R. Tab[i].FG et Tab[i].FD dsigne un boolen indiquant lexistence de fils gauche et de fils // droit respectivement
Remarque :
Page 2 sur 9
Afin dcrire votre algorithme utilisez un pseudo langage algorithmique inspir de la syntaxe des langages de programmation comme C et Pascal :
FOR (indice valeur_dbut ) TO valeur_fin DO (suite_actions) END FOR WHILE (condition) DO (actions) END WHILE IF (condition) THEN (suite_actions1) ELSE (suite_actions2) END IF Affectation : x y Oprateurs logiques : OR, AND, NOT Oprateurs arithmtiques et de comparaisons : +, -, *, /, >, <, >=, <=, <> (diffrent), = (test dgalit), etc. Algorithme rangFilsDroit (Tab[0..n], k) R (25 pts)
// avec n le nombre de nuds dans larbre binaire et k lindice dans Tab du nud pour lequel on cherche le //rang du fils droit R. Tab[i].FG et Tab[i].FD dsigne un boolen indiquant lexistence de fils gauche et fils // droit respectivement Dbut ik IF (NOT T[i].FD) THEN return 0 ELSE IF T[i].FG THEN j 2 // FG+FD ELSE j 1 // FD END IF WHILE (j > 1) DO i i+1 jj1 // le j quon a trait IF (T[i].FG) THEN j j+1 END IF IF (T[i].FD) THEN j j+1 END IF END WHILE return (i+1) END IF Fin
Remarque : Une solution rcursive est possible aussi.
Page 3 sur 9
La squence 3 ne pas correspondre une branche de recherche des nuds examiner pour trouver 36 car selon la suite de cette squence on constate que la sixime valeur 24 est localise droite de llment 30. Or, 24 < 30.
Il suffit de parcourir partir de la racine de lABR en suivant les liens gauche et rcuprer le plus petit lment puis parcourir partir de la racine de lABR en suivant les liens droite et rcuprer le plus grand lment (5 pts)
La complexit du tri insertion quand seulement p lments ne sont pas leurs places dans le pire des cas est en O(pn). (5 pts) Le tri insertion consiste excuter n-1 itrations o chaque itration, on cherche insrer le j me lment (j=2 n) dans le sous tableau dj tri T[1..j-1]. Si le jme lment nest pas sa place alors pour linsrer il faut dcaler au plus (j-1) lments, c'est--dire, linsrer dans la premire case du tableau. Linsertion dun lment mal plac qui se trouve la jme position du tableau est en O(j), or j<n et le nombre des lments mal placs est p alors linsertion des p lments mal placs est en O(np) Si le jime lments est un lment sa place, donc pour linsrer il faut faire au plus p dcalages parce que parmi les (j-1) lments dans le sous-tableau tri T[1..j-1], il y a au plus p lments qui ne sont pas leurs places, donc le cot dinsertion dun lment parmi les (n -p) qui sont bien dans lordre est en O(p), do le cot dinsertion des (n-p) lments qui ne sont dans lordre est en O((n-p)p) Do la complexit est en O(np). (5 pts)
Page 4 sur 9
Pour crer 10 sous rseaux on a besoin de 4 bits donc le masque est 255.255.255.240 3) Combien d'adresses IP (machines ou routeurs) pourra recevoir chaque sous-rseau ? (5
La partie host ID est sur 4 bits donc chaque sous rseau pourra recevoir (2**4) - 2 = 14 adresses. Le 2 pour ne pas considrer les adresses de rseau et de diffusion. 4) Quelle est l'adresse rseau et de broadcast du 2eme sous-rseau utilisable ? (2 214.123.155.16 adresse du 2ime sous rseau 214.123.155.31 adresse de broadcast
x 3 pts)
3) Quelle est la taille de fentre ncessaire pour exploiter le lien 100%? (3 pts)
Ltablissement dune connexion se ralise travers lchange de deux TPDU (2 way handshake). A cet effet un CR est envoy la suite dune demande douverture (active) dune connexion et en rponse : si le rcepteur est en attente dune demande de connexion (il a dj effectu Listen), lentit LTP rceptrice accepte la connexion et renvoie une TPDU CONNECTION ACCEPTED (CA), Page 5 sur 9
sinon lentit LTP rceptrice refuse la connexion et renvoie une TPDU DR,
Une fois la connexion est tablie, les deux cts peuvent mettre et recevoir des donnes. La fermeture de connexion est symtrique, il faut que des deux cts soit invoque la primitive Disconnect. Tant que dun ct on na pas invoqu cette primitive il est possible denvoyer des donnes. Si la primitive Disconnect a t invoque, tant que la TPDU DR na pas t encore reue il est possible de recevoir des donnes. Une connexion en cours dtabliss ement ne peut pas tre ferme. Une collision de fermeture est possible, celle-ci correspond au cas o les deux cts ont dcid de fermer la connexion avant davoir reu une DR, la connexion est alors ferme. Lautomate rgissant le protocole LTP prvoit les tats suivants : - IDLE : la connexion est libre, aucune action na t entreprise pour entamer son tablissement, - PASSIVE ESTABLISHMENT PENDING : ouverture passive, la primitive Listen a t invoque (localement), - ACTIVE ESTABLISHMENT PENDING : ouverture active, la primitive Connect a t invoque (localement), - ESTABLISHED : la connexion est tablie, il est possible dchanger des donnes dans les deux sens, - PASSIVE DISCONNECT PENDING : rception dun DR, lentit distante cherche fermer la connexion mais lentit locale a toujours la possibilit dmettre des donnes (DT), - ACTIVE DISCONNECT PENDING : la primitive Disconnect a t invoque (localement). Dans la suite de lexercice nous allons poursuivre llaboration de lautomate en cherchan t dterminer les limites du protocole LTP. 1) Dans cette question nous nous intressons la phase douverture dune connexion.
a. Reprsentez sur la figure ci-dessous les transitions ncessaires permettant daboutir une ouverture de connexion. (3 pts) (voir figure) b. Reprsentez sur la figure ci-dessous les transitions consquentes un refus (chec) de connexion. (3 pts) (voir figure) c. Que se passe-t-il si lentit LTP appele ne fonctionne pas ? Que faut-il prvoir de plus ct appelant ? (3
pts)
Lappelant reste bloqu indfiniment en attente dune rponse. Prvoir un time out d. Dcrivez le problme qui se pose lorsquune CR dlaye (doublon) arrive. Est -ce quil suffit de prvoir un protocole 3 way handshake pour rsoudre le problme ? Justifier votre rponse. (3 pts) Etablissement de la connexion dun seul ct (ct appel) sans que lappelant ne le demande Non, car le 3ime message peut lui aussi tre un doublon
2) Dans cette question nous nous intressons la phase de transfert de donnes. Aucun des deux cts ninvoque la primitive Disconnect.
a. Reprsentez sur la figure ci-dessous les transitions ncessaires permettant de raliser les changes de donnes. (3 pts)
(voir figure)
b. Que faut-il prvoir de plus pour remdier au problme de perte dun DT ? Dcrivez tous les lments de procdures quil faut prvoir dans cette solution. (3 pts) Numrotation des segments + ACK + Time out
Page 6 sur 9
c. Quelles sont les autres critiques que vous pouvez encore porter ce protocole ? Pour rpondre cette question, pensez aux diffrents lments de protocoles (mcanismes) que nous pourrions rajouter. (3 pts) Les doublons Le squencement Gestion de plusieurs connexions et multiplexage Contrle de flux Inactivit
3) Dans cette question nous nous intressons la phase de fermeture dune connexion. On suppose quaucune DR dlaye (doublon) ne risque de se manifester.
a. Reprsentez sur la figure ci-dessous les diffrentes transitions possibles lors dune fermeture de connexion (prvoyez les diffrents cas possibles). (3 pts) (voir figure) b. Que se passe-t-il si une DR envoye est perdue ? Comment pouvez remdier ce problme ? Prvoyez aussi le cas o lentit LTP distante nest plus fonctionnelle (3 pts) La connexion restera tablie indfiniment (Time out + retransmission du DR) un certain nombre de fois c. Est-ce quavec la solution prconise en 3.b, vous garantissez quune entit LTP, dun ct dune connexion, puisse dterminer si de lautre ct de la connexion, la primitive Disconnect a t bien invoque ou non (avant toute fermeture de la connexion) ? Justifiez votre rponse. (3 pts) Non il nexiste pas de solutions ce problme
IDLE
ESTABLISHED
Page 7 sur 9
Partie III
Exercice 1 :
Programme client :
Valeur Consulter (Cl c) { val = ConsulterLocalement (c) ; 3 points if (val != null) return val ; 2 points
m.fonction = consulter ; m.cl = c ; m.port = portclient ; EnvoyerMsg (portserveur, m) ; m = RecevoirMsg (portclient) ;
ModifierLocalement (c, m.valeur) ; Emplacement : 2 points Paramtres + ordre : 2 points Paramtres : 1 point
return m.valeur ; }
void cohrence () { while (1) { Boucle infinie : 4 points m = RecevoirMsg (portcohrence) ; 4 points ModifierLocalement (m.cl, null) ; Emplacement : 2 points Paramtres + ordre : 2 points Paramtres : 1 point }
}
Programme serveur :
while (1) { m = RecevoirMsg (portserveur) ; switch (m.fonction) { case consulter : m1.valeur = ConsulterLocalement (m.cl) ; EnvoyerMsg (m.port, m1) ;
Exercice 2 :
Question 1 : Client A fait appel au serveur B - Zro point Client A fait appel au SERVEUR_NAME - 3 points Client A fait appel un intermdiaire 3 points + justification 2 points (Le client ne connais pas le SERVEUR_NAME) Question 2 :
1. 2. 3. 4. 1. 2. 3. 4.
Appel au SERVEUR_NAME 2 points SERVEUR_NAME fournit l@ de B 2 points Client A fait appel B 2 points Dtails (talon, intermdiaire, local, distant) 1 point Diffusion vers les sites S1, S2, et S3 3 points Un site fournit l@ de B 2 points Client A fait appel B 2 points Dtails (talon, intermdiaire, local, distant) 1 point
Question 3 :
Page 9 sur 9