Académique Documents
Professionnel Documents
Culture Documents
TSD5 1
Saturation de l’espace d’adressage
• L’augmentation exponentielle du nombre d’ordinateurs connectés à
l’Internet a rapidement saturé l’espace d’adressage IP
• Phénomènes dû aux entreprises qu’aux particuliers
• Côté entreprises
– hébergent souvent des serveurs devant être joints en permanence
– leurs stations de travail ont aussi souvent besoin d’accéder à tout
moment à des services externes
• Côté particuliers
– nombreux à avoir choisi un abonnement ADSL ou câble payé au forfait
et qui restent connectés en permanence (que l’attribution d’adresse
soit fixe ou dynamique)
– le prix des ordinateurs est tel qu’une famille possède souvent
plusieurs ordinateurs qui doivent tous accéder à Internet
– du point de vue FAI, une famille a les mêmes besoins qu’une petite
entreprise
TSD5 2
Solution : adresses privées
• Gérer la pénuerie d’adresses au sein d’un réseau
• Masquer l’intérieur du réseau par rapport à l’extérieur
• Améliorer la sécurité pour le réseau interne
• Assouplir la gestion des adresses du réseau interne
• Faciliter la modification de l’architecture du réseau
interne
• Les réseaux privés utilisent les adresses suivantes
– 10.0.0.0 – 10.255.255.255
– 172.16.0.0 – 172.31.255.255
– 192.168.0.0 – 192.168.255.255
TSD5 3
Réseaux privés
• Un réseau IP privé qui n’est pas directement
connecté sur Internet
• Les adresses IP dans un réseau privé peuvent
être réservées aléatoirement
– Ne sont pas enregistrées
– Pas de garantie quelles soient globalement unique
• Les adresses privées ne sont jamais routées
par un routeur donc impossible d’aller sur
Internet
TSD5 4
Réseaux privés
TSD5 5
Solution des réseaux privés
• NAT : Network Address Translation
• Quand une machine interne à un réseau veut
communiquer avec un hôte sur Internet
– Transmission du paquet au routeur de sortie
– Translation de l’adresse de réseau privé en adresse
publique
– Transmission du paquet modifié au hôte de
destination
TSD5 6
Network Address Translation
• Fonction de routeur où les adresses IP (et les
numéros de port) sont remplacées à la frontière
d’un réseau privé
• Méthode qui permet aux stations appartenant à
des réseaux privés de communiquer avec des
stations reliées à l’Internet
• NAT est lancé sur les routeurs qui connectent les
réseaux privés à l’Internet publique, pour
remplacer la paire adressse IP-port (privée) d’un
paquet IP par une autre paire adresse IP-port
(publique)
TSD5 7
Network Address Translation
• Cisco définit les termes suivant pour la
configuration du NAT
– Adresse locale interne : adresse IP de l’hôte sur le
réseau privé
– Adresse globale interne : adresse IP publique
derrière laquelle se trouve le réseau privé
– Adresse globale externe : adresse IP publique
extérieure au réseau privé
TSD5 8
Exemple
TSD5 9
Exemple
TSD5 10
Exemple
TSD5 11
Exemple
TSD5 12
Exemple
TSD5 13
Operation de base de NAT
• Le NAT a une table de translation d’adresse
TSD5 14
Translation d’adresse
• NAT statique
– Une adresse publique pour chaque adresse privée
• NAT dynamique (IP masquerading)
– Une adresse publique pour plusieurs adresses privées
mais le port change
TSD5 15
Exemple
TSD5 16
Exemple
TSD5 17
Translation d’adresse
• Problème : Comment re-diriger les trames
provenant du serveur vers la bonne machine
du réseau privé ?
TSD5 18
Translation d’adresse
• Solution : Modifier le numéro de port ou PAT
(Port Address Translation)
– Attribution d’un numéro de port unique au niveau
de la passerelle NAT/PAT
TSD5 19
Translation d’adresse
TSD5 20
Exercice
• On considère le réseau privé suivant relié à
l’Internet par un rputeur et une passerelle
NAT
TSD5 21
Questions
• Q 1. La table de la passerelle est vide. Donnez
à chaque étape, les actions effectuées par
celle-ci. On supposera que l’adresse publique
attribuée au réseau est 45.10.10.1 et que la
passerelle NAT attribue les numéros de port
séquentiellement en démarrant par 10000.
– La passerelle reçoit du réseau privé un paquet
avec source=10.0.0.2:10234 et
destination=14.24.164.2:80
TSD5 22
Questions
– La passerelle reçoit du réseau privé un paquet
source=10.0.0.5:16777 et
destination=74.125.230.81:20
– La passerelle reçoit de l’Internet un paquet avec
source=74.125.230.81:20 et
destination=45.10.10.1:10001
– La passerelle reçoit de l’Internet un paquet avec
source=97.48.164.77:50 et
destination=45.10.10.1:80
TSD5 23
Questions
• Q 2. On souhaite installer un serveur HTTP
(port 80) sur la machine 10.0.0.5. Comment
doit-on procéder
• Q 3.La passerelle peut-elle recevoir un paquet
IP avec pour destination 10.0.0.4 ?
TSD5 24
Serveur DHCP
• Partie 1
Les principes de fonctionnement
• Partie 2
Quelques éléments de configuration
01/02/2019 1
Fonctionnement du DHCP
DHCP : Dynamic Host Configuration Protocol
Donc "Protocole de configuration Dynamique
des clients"
01/02/2019 2
Fonctionnement du DHCP
L'objectif du protocole DHCP est de permettre à
un client d'obtenir une adresse IP (et d'autres
paramètres éventuellement) auprès d'un
serveur DHCP.
Remarques préliminaires :
Un réseau peut avoir plusieurs serveurs
DHCP.
Le client ne désigne pas un serveur (cf.
seconde partie)
01/02/2019 3
Fonctionnement du DHCP
L'obtention d'une adresse se fait en 4 phases :
Demande de bail IP par le client.
Offre de bail IP par un serveur.
Sélection d'une offre par le client.
Accusé de réception de bail IP par le
serveur.
(Notion de bail cf. plus loin)
01/02/2019 4
Fonctionnement du DHCP
Phase 1 : Demande de bail IP par le client
• Initialisation du client avec une version
limitée de TCP/IP
• Le client diffuse une demande d'adresse IP
(message DhcpDiscover) avec :
• source 0.0.0.0
• destination 255.255.255.255
01/02/2019 5
Fonctionnement du DHCP
Phase 2 : Offre de bail par un serveur
Tous les serveurs reçoivent la demande. S'ils
sont configurés pour répondre (message
DhcpOffer), ils diffusent une offre avec les
informations suivantes :
• L'adresse MAC du client
• Une adresse IP
• Un masque de sous-réseau
• Une durée de bail
• Son adresse IP (pour la phase 3)
01/02/2019 6
Fonctionnement du DHCP
Un client DHCP attend une offre pendant une
seconde. En cas de non réponse il rediffuse sa
demande quatre fois (à des intervalle de 9, 13
et 16 secondes puis un intervalle aléatoire
entre 0 et 1000 millisecondes). Après ces
quatre tentatives, il renouvelle sa demande
toutes les 5 minutes.
01/02/2019 7
Fonctionnement du DHCP
Phase 3 : Sélection d'un bail par le client
• Le client sélectionne une offre (en général la
première)
• Le client annonce par diffusion qu'il a accepté
une offre (message DhcpRequest). Son message
comporte l'identification du serveur
sélectionné. Ce dernier sait que son offre a été
retenue ; tous les autres retirent leur offre et
l'adresse redevient disponible.
01/02/2019 8
Fonctionnement du DHCP
Phase 4 : Accusé de réception par le serveur
01/02/2019 9
Fonctionnement du DHCP
Client Serveur
Demande de Bail IP
Offre de Bail IP
Accusé de réception
En Résumé
01/02/2019 10
Fonctionnement du DHCP
L'affectation d'une adresse IP n'est pas
permanente. Elle est accordée pour une
certaine durée : le bail.
Le client doit donc renouveler ce bail.
1ère demande de renouvellement :
• Elle est faite à la moitié du bail (message
DhcpRequest) au serveur à l'origine du bail.
• Si elle est accordée et le client continue avec
un nouveau bail et éventuellement de
nouveaux paramètres (message DhcpAck).
01/02/2019 11
Fonctionnement du DHCP
1ère demande de renouvellement
• Si le serveur est absent, il reste 50 % du
temps.
2de demande de renouvellement
• Si à 50 % la demande a échoué, il y a
demande de renouvellement à 87,5 % du
bail.
• Cette fois la demande est adressée à tous les
serveurs (diffusion).
01/02/2019 12
Fonctionnement du DHCP
2de demande de renouvellement
• Un serveur peut répondre en proposant un
nouveau bail (message DhcpAck) mais peut
également répondre avec un message
DhcpNack qui oblige le client à se
réinitialiser (reprise de la procédure
d'obtention d'un bail)
Si le bail expire (ou message DhcpNack)
• Reprise de la procédure d'obtention d'un
bail
01/02/2019 13
Client DHCP
Le paramétrage d'un client DHCP est très
simple :
01/02/2019 14
Serveur DHCP
Installation, création du serveur.
01/02/2019 15
Serveur DHCP
Installation, création du serveur.
01/02/2019 16
Serveur DHCP
Création et configuration d'une étendue.
01/02/2019 17
Serveur DHCP
Création et configuration d'une étendue.
01/02/2019 18
Serveur DHCP
Création et configuration d'une étendue.
01/02/2019 19
Serveur DHCP
Les réservations d'adresses.
01/02/2019 20
Serveur DHCP
Les réservations d'adresses.
01/02/2019 22
Serveur DHCP
Les Options
01/02/2019 23
Serveur DHCP
Les Options
01/02/2019 24
4 - Couches Transport
principes
les solutions TCP et UDP
Couche Transport 1
Le rôle d'une couche
-Transport
le rôle d'une couche Transport est d’acheminer des octets
● entre des processus s'exécutant dans des systèmes appartenant à la
même couche Réseau,
● sans qu'ils aient à se préoccuper des problèmes de médium, de
routage, etc...
PA2 PC2
PA1 PB1 PC1
PA3 PB2 PC3
Couche Transport 2
Services et Protocoles de
Transport
Service
● transmission de données entre processus (de bout en bout)
● données normales, données express
● Transparence des données transférées (format, taille et types de codage
de données)
● mode connecté, mode non connecté
Protocole
● classes de protocole, selon la qualité du Service Réseau
● optimisation des ressources Réseau
Couche Transport 3
Les protocoles de Transport
Transport ISO technologie TCP/IP
COTS
CLTS TCP UDP
0 1 2 3 4
transfert de données oui oui oui oui oui oui oui oui
connexion oui oui oui oui oui - oui -
correction des erreurs
non oui non oui oui - - -
signalées
détection et correction
non non non non oui non oui non
des erreurs non signalées
contrôle de flux non non oui oui oui non oui non
données exprès non non oui oui oui non oui non
multiplexage non non oui oui oui non non non
éclatement sur plusieurs
non non non non oui non non non
connexions Réseau
Couche Transport 4
Les solutions de la
technologie TCP/IP
TCP UDP
● Transmission Control Protocol ● User Datagram Protocol
● service en mode connecté ● service en mode non connecté
● détection des pertes et ● non fiable : ps d'accusé de réception,
duplications
aucun contrôle de flux, ni ré-
● tentative de correction ordonnancement de segments
● signalement des échecs ● champ protocole 17
● livraison dans l'ordre d'émission ● simple : peu de mémoire utiliséee,
assez rapide
● contrôle de flux
● adapté aux petites quantités de
● champ protocole 6 données
Couche Transport 5
Le Service TCP
mode connecté
● 2 canaux de transmission indépendants
● files d'attente des octets en attente de livraison
● 3 facilités
● établissement (création des 2 canaux)
● transmission
● terminaison (destruction des canaux)
utilisateur utilisateur
normale
normale
express
express
Fournisseur de
Service de Transport
Couche Transport 6
Adresse des points d'accès au
Service-TCP ( a n a l o g u e p o u r U D P )
adresse d'un TCP-SAP 193.54.51.1/6/80 (6=TCP 17=UDP)
● identification de l'entité-IP du système (adresse-IP)
● adresse du point d'accès au Service-IP pour les entités-TCP [6]
● adresse du point d'accès au Service-TCP (n°port)
● privilégié bien connu enregistré
identification d'une connexion-TCP
● les TCP-SAP des deux extrémités de la connexion-TCP
193.54.51.1/6/80 ↔ 192.168.51.189/6/1595
serveur Web
serveur SMTP navigateur
80 25 1595
entité-TCP entité-TCP
tcp tcp
6 6
entité-IP entité-IP
193.54.51.1 192.168.51.189
Couche Transport 7
Transmission de données par
UDP ou TCP
les données sont transmises dans des PDU-TCP ou des PDU-
UDP, transportées par le Service IP qui livre ... peut-être,
une seule fois
les risques
● perte de PDU-IP → perte de la PDU-TCP ou PDU-UDP encapsulée et des
données qu'elle contient
● livraisons multiples de la même PDU (duplication), donc de données
● livraison d'une suite d'octets dans un ordre différent de celui de la
soumission
Couche Transport 8
Protocole TCP - transmission
de données
les octets de données expédiés sont numérotés
● initialisation à l'établissement de connexion
● le n° du prochain octet à expédier
● le n° du prochain octet attendu en réception
● actualisés au fur et à mesure des expéditions et des réceptions
expédition d'un bloc d'octets
● le n° du 1er octet du bloc,est placé dans la PDU, ainsi que le n° du
prochain octet attendu (champs seq et ack)
● le bloc est conservé en mémoire tampon
réception d'un bloc : comparaison n°reçu et n°attendu
● n°reçu = n° du prochain octet attendu → OK
● n°reçu < n° du prochain octet attendu → une duplication - ignorer
● n°reçu > n° du prochain octet attendu → une perte
correction de perte
● si, à l'échéance du RTT d'un bloc expédié, une entité-TCP n'a pas reçu un
ack supérieur au n°du dernier octet expédié, elle renvoie le bloc
Couche Transport 9
Protocole TCP - établissement
de connexion
←appelant→ ←appelé→
primitives entité-TCP PDU transmises entité-TCP primitives
listen
accept
connect
calcule 1er n° (G)
réserve buffers Phase 1
type=SY
N, seq= mémorise G+1
G
calcule 1er n° (D)
réserve buffers
Phase 2
A C K, ac k=G+1
type= D
t ype= S YN, seq=
+
connect mémorise D+1
type=AC
K, ack=
D+1
Phase 3
Couche Transport 10
Protocole TCP - établissement
de connexion
phase 1
● L'expéditeur indique son numéro de séquence initial G par exemple dans
le seq du segment SYN
phase 2
● Le récepteur indique son numéro de séquence initial D par exemple dans
le champ seq du segment SYN/ACK et indique le numéro de séquence de
l'expéditeur plus un (soit G+1) dan le champ ack du segment
phase 3
● L'expéditeur confirme en envoyant un ACK avec un numéro de séquence
augmenté de un (soit G+1) et un numéro d'acquittement correspondant
au numéro de séquence du serveur plus un (soit D+1)
Couche Transport 11
Protocole TCP - terminaison de
connexion
terminaison ordonnée (ordered termination)
● sur primitive shutdown
● l'entité-TCP avertit l'autre entité-TCP qu'il n'y aura plus PDU transmises
de transmission, par une type=
FIN+
PDU-TCP de type FIN, ACK
ACK
l'autre acquitte par une PDU-TCP de type
entité-TCP
type=
entité-TCP
●
FIN+ACK
CK
● 2 fois (pour chaque sens de transmission) e = FIN+A
typ
type=
ACK
terminaison brutale (abort)
● sur primitive close
● l'entité-TCP envoie une PDU-TCP de type RST, et détruit les buffers (les
données non livrées sont perdues)
● l'autre entité-TCP détruit aussi les buffers,
● avertit l'utilisateur par une erreur sur la prochaine primitive
Couche Transport 12
Protocole TCP - contrôle de
flux
une entité-TCP place les octets reçus pour l'utilisateur
dans des files d'attente où il peut en prendre livraison
● place libre dans la file d'attente = capacité de réception
● file d'attente pleine → impossible de recevoir de nouveaux octets, et
consommation inutile de ressources de (re)transmission
Couche Transport 13
la PDU TCP
n° du 1er octet
n°port source n°port destination de données
= 4229 = 21 (FTP)
AA AA AA AA AA AA AA AB 08 00 2B 91 B0 D0 00 e0
b1 45 12 06 08 00 45 00 00 32 0e f1 00 00 39 06
5e 65 c1 37 5f 01 c1 36 33 01 0f 85 00 15 3f b5
1b 97 1f 24 de b9 50 18 40 00 c6 fa 00 00 55 53
45 52 20 6d 63 76 0d 0a 36 A2 5D 24
données =
n° du prochain PDU FTP
place libre dans la file
octet attendu d'attente de réception somme de
lg l'entête contrôle
type de PDU-TCP
type de
URG ACK PSH RST SYN FIN
PDU-TCP
(ACK+PSH) 20 10 8 4 2 1
Couche Transport 14
Développement
1. contexte
2. spécification abstraite – exemple : Services de Transport
3. implémentation – exemple : les API XTI et socket
4. exemple : utilisation d'un Service de Transport
Développement 1
Contexte
le développement dans le domaine de l'interconnexion de systèmes
consiste à bâtir les entités d'un fournisseur de Service (N), qui
s'appuient sur un fournisseur de Service(N-1) pour collaborer par la
transmission de PDU(N-1).
voir « Modèle de référence »
le développeur a donc besoin de :
● la spécification de Service (N)
Utilisateur
● la spécification de Protocole (N)
● la spécification de Service (N-1)
entité entité
PDU-N
Utilisateur
Fournisseur de Service N
Développement 2
Spécification d'une solution
la spécification d'un Service contient
● une définition générale du Service
● la définition des facilités
● la spécification des primitives de chaque facilité, de leurs paramètres
● la spécification des enchaînements de primitives possibles
la spécification d'un Protocole contient
● la spécification des PDU
● la spécification du fonctionnement d'une entité de fournisseur :
● que faire quand arrive une primitive demande ou réponse ?
● que faire quand arrive une PDU ?
Développement 3
Implantation des entités d'un
fournisseur
l'implantation d'une entité du fournisseur dans un
système peut produire une API (Application Programming
Interface) qui peut être utilisée dans les programmes des
utilisateurs du Service
● des fonctions qui traduisent les primitives
● des types de données pour les paramètres
● des fonctions annexes
Développement 4
Développement
1. contexte
2. spécification abstraite
exemple : Services de Transport
3. implémentation – exemple : les API XTI et socket
4. exemple : utilisation d'un Service de Transport
Développement 5
Spécification abstraite
Définitions générales
un fournisseur de Transport fournit un Service de Transport de
blocs d'octets entre deux processus, en les libérant de toute
préoccupation de communication
caractéristiques
le transfert de bout en bout
COTS et CLTS
●
COTS
● le signalement des impossibilités de livraison
Développement 6
CLTS - Service de Transport
en mode non connecté
une seule facilité : T_UnitData
chronogramme
paramètres
demande indication
adresse du TSAP expéditeur F
adresse du TSAP destinataire O
qualité de service F
TSDU F =
Développement 7
COTS - Service de Transport
en mode connecté
3 phases
● établissement de connexion
● transfert de données
● terminaison de connexion
4 facilités
● établissement de connexion T_Connect
● transfert de données normales T_Data
● transfert de données express T_ExpeditedData
● terminaison de connexion T_Disconnect
Développement 8
COTS : établissement de
connexion
chronogramme
confirmation
indication
demande
réponse
paramètres
(N) négociation
● des options
● de la qualité de service
le fournisseur et l'appelé peuvent modifier à la baisse
Développement 9
COTS : transfert de données
expéditeur COTS Destinataire
paramètres
chronogramme
● id.extrémités T_Data.demande
● TSDU T_Data.indication
T_Data.demande
erreur
T_Disconnect.indication T_Disconnect.indication
utilisateur utilisateur
normale
normale
express
express
Fournisseur de
Service de Transport
Développement 10
COTS : terminaison de
connexion
paramètres
● initiateur de la terminaison
● cause de la terminaison
autre définition
● fermeture indépendante de chaque "tuyau" de la connexion
Développement 11
Fonctionnement d'une entité du
fournisseur (1)
elle attend un événement :
● l'arrivée d'une primitive issue d'un utilisateur, implanté dans le même
système
● l'arrivée d'une primitive issue d'un fournisseur de Service support,
contenant éventuellement une PDU venant d'une autre entité du même
fournisseur
● l'échéance d'une temporisation préalablement activée
Développement 12
Fonctionnement d'une entité du
fournisseur (2)
entité utilisateur
entité de fournisseur
Développement 13
Les protocoles de Transport
Transport ISO technologie TCP/IP
COTS
CLTS TCP UDP
0 1 2 3 4
transfert de données oui oui oui oui oui oui oui oui
connexion oui oui oui oui oui - oui -
correction des erreurs
non oui non oui oui - - -
signalées
détection et correction
non non non non oui non oui non
des erreurs non signalées
contrôle de flux non non oui oui oui non oui non
données exprès non non oui oui oui non oui non
multiplexage non non oui oui oui non non non
éclatement sur plusieurs
non non non non oui non non non
connexions Réseau
Développement 14
Développement
1. contexte
2. spécification abstraite; exemple : Services de Transport
3. implémentation – exemple : les API XTI et socket
4. exemple : utilisation d'un Service de Transport
Développement 15
Implémentation
l'implémentation d'une spécification abstraite dans
un système consiste à
● traduire le concept abstrait de point d'accès en un concept du système visé
permettant la communication entre une entité utilisatrice du Service, et l'entité du
fournisseur de Service installée dans le système
cela dépend
● de la manière selon laquelle est installée l'entité du fournisseur de Service
● un ensemble de fonctions
● bibliothèque(s)
Développement 16
API pour les Services de
Transport TCP et UDP
socket
● issue de BSD 4.2 (1983)
● fichier des prototypes et types : <sys/socket.h>
● bibliothèque : libc.a
● gratuit et maintenant installé dans tous les systèmes
Développement 17
Développement
1. contexte
2. spécification abstraite; exemple : Services de Transport
3. implémentation – exemple : les API XTI et socket
1. point d'accès et fonctions annexes
2. interface de programmation XTI/TLI
3. interface de programmation « socket »
4. exemple : utilisation d'un Service de Transport
Développement 18
Adresse des points d'accès au
Services TCP et UDP
adresse d'un TCP-SAP ou d'un UDP-SAP
● identification de l'entité-IP du système (adresse-IP)
● adresse du point d'accès au Service-IP pour les entités-TCP[6] ou les
entités-UDP [17]
● adresse du point d'accès au Service-TCP (n°port)
serveur Web
navigateur
serveur SMTP
80 25 1595
entité-TCP entité-TCP
tcp tcp
6 6
entité-IP entité-IP
193.54.51.1 192.168.51.189
Développement 19
API pour les adresses des
points d'accès TCP et UDP
type de données (défini dans <netinet/in.h>)
struct sockaddr_in {
8 bits sin_family; /* la constante AF_INET */
16 bits sin_port; /* à partir de htons (int port) */
32 bits sin_addr; /* à partir de gethostbyname ou htonl */
char sin_zero[8];
};
les noms des types varient selon les systèmes
Développement 20
Développement
1. contexte
2. spécification abstraite; exemple : Services de Transport
3. implémentation – exemple : les API XTI et socket
1. point d'accès et fonctions annexes
2. interface de programmation XTI/TLI
3. interface de programmation « socket »
4. exemple : utilisation d'un Service de Transport
Développement 22
XTI/TLI – principes
les TSAP sont créés à la demande par les processus
● l'exécution d'une fonction, la survenue d'un événement font évoluer l'état du TSAP
paramètres des primitives → types de arguments de fonctions
● t_alloccrée une variable à utiliser en argument
● t_free libère la mémoire réservée par t_alloc
en cas d'erreur, les fonctions renvoient -1
● la variable t_errno contient le code de l'erreur
Développement 23
XTI/TLI - fonctions annexes
int tsap = t_open (char *stream, int flags, struct t_info *p)
crée un TSAP, en état T_UNBND
renvoie l'identificateur du TSAP
renvoie les capacités du fournisseur de Service dans *p
stream = AIX : "/dev/xti/udp" "/dev/xti/tcp"
Solaris: "/dev/udp" "/dev/tcp"
int t_bind (int tsap, struct t_bind *a1, struct t_bind *a2)
tente d'attribuer l'adresse *a1 au TSAP
renvoie dans *a2 l'adresse attribuée
met le TSAP dans l'état T_IDLE
t_close t_unbind
int t_close (int tsap)
détruit le TSAP
Développement 24
XTI/TLI - primitives pour UDP
XTI - TLI
primitive
événement fonction
T_UnitData.demande int t_sndudata (int tsap, struct t_unit_data *ud)
T_UnitData.indication T_DATA int t_rcvudata (int tsap, struct t_unit_data *ud, int *flags)
T_UDERR int t_rcvuderr (int tsap, struct t_uderr *uderr)
les champs addr sont de type struct sockaddr_in défini dans <netinet/in.h>
Développement 25
Schéma avec UDP
t_open()
t_bind()
t_open() t_open()
t_close() t_close()
t_close()
T_INCON
T_LISTEN, t_listen t_accept
T_IDLE T_DATAXFER
t_connect
T_OUTCON
T_CONNECT, t_rcvconnect
les arguments de type struct t_call contiennent 4 champs de type struct netbuf
appel->addr adresse de TSAP, de type struct sockaddr_in
Développement 27
XTI/TLI - primitives pour TCP
2 – transmission de blocs d'octets
XTI - TLI
primitive
événement fonction
T_Data.demande T_GODATA
int t_snd (int tsap, char * buf, unsigned lg, int flags)
T_ExpeditedData.demande T_GOEXDATA
T_Data.indication T_DATA
int t_rcv (int tsap, char * buf, unsigned lg, int flags)
T_ExpeditedData.indication T_EXDATA
Développement 28
XTI/TLI - primitives pour TCP
3 – terminaison de connexion
XTI - TLI
primitive
événement fonction
T_Disconnect.demande int t_sndrel (int tsap)
int t_snddis (int tsap, struct t_discon *dis)
T_Disconnect.indication T_ORDREL int t_rcvrel (int tsap)
T_DISCONNECT int t_rcvdis (int tsap, struct t_discon *dis)
t_snddis
T_IDLE T_DATAXFER
T_DISCONNECT
t_rcvdis
T_ORDREL t_sndrel
t_rcvrel T_OUTREL
Développement 29
Schéma avec TCP
t_open()
t_bind()
t_listen()
t_open() t_open()
t_close()
1. contexte
2. spécification abstraite; exemple : Services de Transport
3. implémentation – exemple : les API XTI et socket
1. point d'accès et fonctions annexes
2. interface de programmation XTI/TLI
3. interface de programmation « socket »
4. exemple : utilisation d'un Service de Transport
Développement 31
Sockets - fonctions annexes
Développement 32
Sockets – fonctions pour UDP
primitive fonctions
int sendto (int id_socket,
T_UnitData.demande void *buf, int lg_buf, int flags,
struct sockaddr_in *dest, int lg_dest)
Développement 33
Schéma avec UDP
socket()
bind()
socket() socket()
close() close()
close()
transmission de données
sans données express
• int write (int id_socket, void *buf, int lg_buf)
• int read (int id_socket, void *buf, int lg_buf)
avec données express (flags peut contenir MSG_OOB)
• int send (int id_socket, void *buf, int lg_buf, int flags)
• int recv (int id_socket, void *buf, int lg_buf, int *flags)
Développement 35
Schéma avec TCP
socket()
bind()
listen()
socket() socket()
close()