CEG3585/SEG3555 TUTORAT 3

Transcription

CEG3585/SEG3555 TUTORAT 3
CEG3585/SEG3555
TUTORAT 3
Été 2015
HDLC
 HDLC est un protocole synchrone à bit-orienté de la
couche de liaison de données développé par ISO.
 Mode non-balancé
 Mode normal de réponse (NRM)
 Mode de réponse asynchrone (ARM)
 Mode balancé
 Mode balancé asynchrone (ABM)
HDLC
 La station primaire
 Controle les opérations de la liaison
 Les trames issues sont définies comme des commandes
 Maintient une liaison logique distincte avec chaque
station secondaire
 La station secondaire
 Sous le contrôle de la station primaire
 Les trames issues sont définies comme des réponses
Mise en trame
 Délimiteur de trame: 8bits
 Chaque trame débute et finit avec un délimiteur de trame.
 la séquence est '01111110', ou, en notation hexadécimal, 7E
 Adresse: 8 bits ou plus
 En NRM, les trames n’inclus qu’une seule adresse, celle du
terminal secondaire.
Mise en trame
 Contrôle: 8bits ou 16 bits
 Les trames d’information, ou frames-I, transportent les
données de l’usager de la couche de réseau. Elles
peuvent aussi inclure de l’information de contrôle de
débit et d’erreurs accolée aux données.
 Les trames de supervision, ou frames-S, sont utilisées
pour le contrôle de débit et d’erreurs tel que dans le cas
où une station n’a pas à envoyer de données. Les
trames-S n’ont pas de champ d’information.
 Les trames non numérotées, ou frames-U, sont utilisées
dans différents buts, incluant la gestion des liaisons.
Certaines frames-U, dépendamment du type, contiennent
un champ d’information.
Mise en trame
 Frame-I
 Bit le moins significatif (premier à être transmis) est 0.
 N(S) définit le numéro de séquence de la trame expédiée.
 P/F
 N(R) définit le numéro de séquence de la trame reçue.
Mise en trame
 Frame-S
 Les premiers deux bits sont 10.
 Le champ d’encode de la frame-S est de 2 bits
 Prêt à recevoir (RR): 00
 Pas prêt à recevoir (RNR): 01
 Rejet (REJ): 10
 Rejet sélectif (SREJ): 11
 P/F
 N(R)
Mise en trame
 Frame-U
Mise en trame
 Bit Poll/Final
 Bit Poll
 Trame de commande
 1 pour solliciter (poll) une réponse d’ailleurs
 Le primaire n’envoie de Poll que lorsqu’il a reçu un
Final d’un secondaire, ou après un timeout indiquant
que la trame a été perdue.
 Bit Final
 Trame de réponse
 La station secondaire n’envoie de Final que lorsqu’il a
reçu un Poll de la station primaire.
Mise en trame
 Bourrage de bits
 A chaque fois qu’apparait 5 consécutifs bits-1 dans les
données transmises, on y ajoute un bit-0 pour que cela
ne soit pas pris pour un délimiteur de trame.
 A la réception, on enlève tout bit-0 qui suit 5 bits-1.
Mise en trame
 FCS: Vérificateur de séquençage de trame
 Une vérification cyclique de redondance se produit sur
toute la trame, incluant ‘l’Adresse’, le 'Contrôle' et les
champs ‘d’Information'.
 Le vérificateur de séquençage de trame est un CRC de 16-bit
(CRC-CCITT) ou de 32-bit (CRC-32).
Labo 3 – Le protocole HCLC
 Topologie physique multi-point
 Une station primaire, deux stations secondaire
 La station primaire contrôle la communication
 Architecture de 3 couches
 Couche physique
 Couche liaison de données – offre service orienté
connexion avec le protocole HDLC
 Couche « application » - Échange de messages entre la
station primaire et chaque station secondaire
Labo 3 – Le protocole HDLC
 Programmation Java
 Couche physique simulé avec la programmation socket


Classe: PhysicalLayer – offre deux méthodes transmit()
et receive90 pour transmettre et recevoir les trames HDLC
Classe: PhysicalLayerServer – Serveur qui permet de
réaliser un couche physique multi-point
 Entités des deux autres couchés réalisés avec des classes
Java


Couche liaison de données: classes PrimaryHDLCDataLink
et SecondaryHDLCDataLink
Couche Application: classes PrimaryStation et
SecondaryStation
Couche Physique
Station Primaire
trame
Station Secondaire
Station Secondaire
trame
trame
transmit() receive()
PhysicalLayer
transmit() receive()
PhysicalLayer
transmit() receive()
PhysicalLayer
ClientSocketManager
ClientSocketManager
ClientSocketManager
Réseau local
 Le serveur agit comme commutateur
 Toutes trames reçues sur une
connexion est retransmit sur les autres
 Ces classes vous sont fournies
ServerSocketManager
PhysicalLayerServer
Couches liaison de données et application
Station Primaire
PrimaryStation
Station Secondaire
Station Secondaire
SecondaryStation
SecondaryStation
PrimaryHDLCDataLink
SecondaryHDLCDataLink
SecondaryHDLCDataLink
PhysicalLayer
PhysicalLayer
PhysicalLayer
 La classe PrimaryHDLCDataLink offre les méthodes suivantes
 dlConnectRequest, dlConnectConfirmation, dlDataRequest,
dlDataIndication, dlDisconnectRequest
 La classe SecondaryHDLCDataLink offre les méthodes suivantes
 dlConnectIndication, dlConnectResponse, dlDataRequest,
dlDataIndication, dlDisconnectIndication
Couche
application
Couche
liaison de
données
Couche
physique
Mise en trame
 Une trame sera une chaîne de caractère: objet String
 Des chaînes déjà prédéfinis sont fournis pour mise en trame
 Exemple:
private final String SNRM_M1 = "00";
private final String SNRM_M2 = "001";
private final String P1 = "1";
 Des méthodes (de la classe PrimaryHDLCDataLink et
SecondaryHDLCDataLink)
private String intAdrToBitAdr(int adr): conversion d’adresse en bits
private String stringToBitString(String str) : conversion de chaîne ASCII
en bits.
 Utilise opérateur de concaténation (+) pour la création d’une trame:
 Exemple (adr est une variable int):
 La chaîne référée par frame sera une séquence de 0`s et 1`s
String frame = FLAG+intAdrToBitAdr(adr)+SNRM_M1+P1+SNRM_M2+FLAG;
Extraire données d’une trame
 En Java, l’objet offre des méthodes pour manipuler les
objets
 Les méthodes de la classe String utiles pour ce labo:
 substring(int ixStart, int ixEnd) – pour extraire une
sous-chaîne de la chaîne – caractères entre ixStart et ixEnd-1;
 charAt(int ix) – donne le caractère à l’index ix
 Constantes prédéfinies fournies à utiliser avec méthodes.
 Exemples (avec String trame qui réfère à une trame):
 Numéro de séquence:

String ns = trame.substring(NS_START, NS_END)
 Bit Poll: char p = trame.charAt(PF_IX);
Votre tâche
 De compléter les méthodes des classes
PrimaryHDLCDataLink et SecondaryHDLCDataLink
 Exemple:
// Data transfer service - non-confirmed service
public Result dlDataRequest(int adr, String sdu)
{
Result.ResultCode cd = Result.ResultCode.OpSucessful;
// à compléter
return(new Result(cd, 0, null));
}
Pondération
 Fonctionnement de base du HDLC: 60%
 Compléter les méthodes:

La classe PrimaryHDLCDataLink : dlConnectRequest,

dlConnectConfirmation, dlDataRequest, dlDataIndication,
dlDisconnectRequest
La classe SecondaryHDLCDataLink : dlConnectIndication,
dlConnectResponse, dlDataRequest, dlDataIndication,
dlDisconnectIndication
 Fenêtre coulissante: 20%
 Rapport: 20%