Télécharger la présentation
1
CEG3585/SEG3555 TUTORAT 3 Été 2014
2
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) 2
3
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 3
4
Mise en trame Délimiteur de trame: 8bits
Chaque trame débute et finit avec un délimiteur de trame. la séquence est ' ', 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. 4
5
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. 5
6
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. N(R) provides a positive acknowledgement for the receipt of I-frames from the other side of the link. Its value is always the first frame not received; it acknowledges that all frames with N(S) values up to N(R)-1 (modulo 8 or modulo 128) have been received and indicates the N(S) of the next frame it expects to receive. 6
7
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) Supervisory Frames, or S-frames, are used for flow and error control whenever piggybacking is impossible or inappropriate, such as when a station does not have data to send. S-frames do not have information fields. The S-frame control field includes a leading "10" indicating that it is an S-frame. This is followed by a 2-bit type, a poll/final bit, and a sequence number. If 7-bit sequence numbers are used, there is also a 4-bit padding field. The first 2 bits mean it is an S-frame. All S frames include a P/F bit and a receive sequence number as described above. Except for the interpretation of the P/F field, there is no difference between a command S frame and a response S frame; when P/F is 0, the two forms are exactly equivalent. The 2-bit type field encodes the type of S frame. 7
8
Mise en trame Frame-U http://en.wikipedia.org/wiki/HDLC
Unnumbered frames are identified by the low two bits being 1. With the P/F flag, that leaves 5 bits as a frame type. Even though fewer than 32 values are in use, some types have different meanings depending on the direction they are sent: as a request or as a response. The relationship between the DISC (disconnect) command and the RD (request disconnect) response seems clear enough, but the reason for making SARM command numerically equal to the DM response is obscure. 8
9
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. Poll/Final is a single bit with two names. It is called Poll when set by the primary station to obtain a response from a secondary station, and Final when set by the secondary station to indicate a response or the end of transmission. In all other cases, the bit is clear. 9
10
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. 10
11
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). 11
12
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
13
Labo 3 – Le protocole HCLC
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 Notes: PhysicalLayer utilisé par toutes les stations – primaire et secondaires PysicalLayerServer – programme java roulé séparément qui retransmet une trame reçu sur une connextion à toutes les autres connextions
14
Couche Physique Le serveur agit comme commutateur
Station Primaire Station Secondaire Station Secondaire trame trame trame transmit() receive() PhysicalLayer transmit() receive() PhysicalLayer transmit() receive() PhysicalLayer ClientSocketManager ClientSocketManager ClientSocketManager ClientSocketManager et ServerSocketManager sont les classes du labo 2 Du point de vu des stations, la couch physique a une topologie multi-point 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
15
Couches liaison de données et application
Station Primaire Station Secondaire Station Secondaire Couche application PrimaryStation SecondaryStation SecondaryStation Couche liaison de données PrimaryHDLCDataLink SecondaryHDLCDataLink SecondaryHDLCDataLink Couche physique PhysicalLayer PhysicalLayer PhysicalLayer PrimaryStation et SecondaryStation sont fournis L’objective du labo est de compléter les classes PrimaryHDLCDataLink et SecondaryHDLCDataLink 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
16
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;
17
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);
18
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)); }
19
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%
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.