Réseaux Informatiques : Cours les fondamentaux des réseaux et tcp ip réseaux inform
Télécharger PDFObtenir le pack complet des cours, TDs, examens sur Réseaux Informatiques!
Vous souhaitez maîtriser Réseaux Informatiques ? Ne cherchez plus, nous avons le pack bien choisi pour vous.
Accédez à une collection complète des supports de cours, des travaux dirigés (TD) corrigés, examens...
Télécharger packCours sur Les Fondements des Réseaux
et TCP/IP
Pr. KaoutharCHETIOUI
kaoutharchetioui@gmail.com
Filière: Génie Informatique
Année universitaire 2019 -2020 de Chapitre 8
Protocoles de la couche Transport TCP -UDP
GINFO1K. CHETIOUI2 Plan
Protocole UDP
Protocole TCP
Introduction au modèle Client/Serveur
Généralités sur les sockets
Principe de la programmation Réseau3 K. CHETIOUIGINFO1 La couche Transport
-Transmission Control Protocol (TCP)
orienté connexion
-User Datagram Protocol (UDP)
orienté non connexionGINFO1 4
K. CHETIOUI
Distingue entre les différentes applications;
Etablit les connexions de bout en bout entre les applications;
Définit un mécanisme de contrôle de flux;
Offre un service fiable ou non fiable au transport des messages (segments)
TCP et UDP: Notion de port
Identification du service : les ports
les adresses IPdésignent les machines entre lesquelles les communications sont établies. Lorsqu'un processus désire entrer en communication avec un autre processus, il doit s’adresser au processus exécuté sur la machine réceptrice. Ces destinations abstraitespermettant d'adresser un service applicatif s'appellent des portsde protocole. L'émission d'un message se fait sur la base d'un port source et un port destination.
Les processus disposent d'une interface système leur permettant de spécifier un port ou d'y accéder (socket, etc.)
K. CHETIOUI5 GINFO1
Exemples de ports TCP et UDPPort TCP ou UDP
Protocole applicatif
20tcpftp-data -File Transfer Protocol [flux de données]
21tcpftp-File Transfer Protocol (le flux de contrôle pour le transfert de fichiers)
22tcpSSH-Secure Shell
23tcptelnet
25tcpsmtp-Simple Mail Transfer Protocol RFC 5321
53udp/tcpdomain-Domain Name Service (DNS)
67udpDHCP, pour la recherche d'un serveur DHCP
68udpDHCP, pour le dialogue entre le serveur DHCP et le client 110tcppop3-Post Office Protocol -Version 3 RFC 1939
123udpntp-Network Time Protocol RFC 5905
K. CHETIOUI6 GINFO1
Protocole UDP (User Datagram Protocol)
UDP possède un mécanisme permettant d’identifier les processus d’application à l’aide de numéros de port UDP. UDP est orienté datagrammes(sans connexion), ce qui évite les problèmes liés à l’ouverture, au maintien et à la fermeture des connexions.
UDP ne séquence pas les données. La remise conforme des données n’est pas garantie. Aucunes fonctions de reconstitution des données perdues ou corrompues.
UDP peut éventuellement vérifier l’intégrité des données (et des données seulement) avec un total de contrôle.
UDP est plus rapide, plus simple que TCP mais il est moins robuste et moins fiable.
UDP est efficace pour les applications en diffusion et/ou multidiffusion.7 K. CHETIOUIGINFO1 UDP -Multiplexage
A l’émission: UDP multiplexe et démultiplexe les datagrammes en sélectionnant les numéros de ports :
une application obtient un numéro de port de la machine locale; dès que l'application émet un message via ce port, le champ PORT SOURCE du datagramme UDP contient ce numéro de port,
une application connaît un numéro de port distant afin de communiquer avec le service désiré.
A la réception: Lorsque UDP reçoit un datagramme, il vérifie que le port de destination est un des ports actuellement actifs (associé à une application) et le délivre à l'application responsable.
Si ce n'est pas le cas, il émet un message ICMP port unreachable, et détruit le datagramme.
K. CHETIOUI8 GINFO1
TCP & UDP -Multiplexage
K. CHETIOUI9 GINFO1
Structure d'un datagramme UDP K. CHETIOUI10 GINFO1
Structure d'un datagramme UDP
Source Port occupe 16 bits. Il indique: le numéro de port du processus émetteur,
le numéro de port où on peut adresser les réponses lorsque l’on ne dispose d’aucun autre renseignement.
si sa valeur est 0, cela signifie qu’aucun numéro de port n’est attribué.
Destination Port identifie le processus correspondant à l’adresse IP de destination auquel on envoie les données UDP. UDP effectue le démultiplexage des données à l’aide de numéros de port. Lorsqu’UDP reçoit un datagramme sans numéro de port, il génère un message d’erreur ICMP indiquant qu’il est impossible de contacter le port et il rejette le datagramme.
Length contient la longueur du paquet UDP en octets
(entête + données). K. CHETIOUI11 GINFO1
Protocole TCP (Transmission Control Protocol)
Opère au niveau de la couche transportdu modèle TCP/IP;
Permet un dialogue de bout en bout; Protocole connecté;
Fournit l’accès réseau aux applications en utilisant des mécanismes de fiabilité;
Respecte l’enchaînement de paquets en utilisant des numéros de séquence;
Accuse réceptiondes paquets;
Utilise des fonctions de reconstitution des données perdues ou corrompues, en demandant la retransmission des données en question;12 K. CHETIOUIGINFO1 Structure d'un segment TCP
Drapeaux Réservé: réservé pour un usage futur
ECN: signale la présence de congestion, voir RFC 3168
URG: Signale la présence de données urgentes
ACK: signale que le paquet est un accusé de réception (acknowledgement)
PSH: donnéesdélivrées immédiatement à l'application sans attendre que le tampon du récepteur soit plein (push)
RST: rupture anormale de la connexion (reset) (réinitialisation de la connexion)
SYN: demande de synchronisation (SYN) ou établissement de connexion
FIN: demande la FIN de la connexion13 K. CHETIOUIGINFO1 Structure d'un segment TCP
Port source: numéro du port source
Port destination: numéro du port destination
Taille de l'en-tête: longueur de l'en-tête en mots de 32 bits (les options font partie de l'en-tête)
Fenêtre: taille de fenêtre demandée, c'est-à-dire le nombre d'octets que le récepteur souhaite recevoir sans accusé de réception
Signification des champs:
Somme de contrôle: somme de contrôle calculée sur l'ensemble de l'en-tête TCP et des données
Pointeur de données urgentes: position relative des dernières données urgentes
Options: (de taille variable selon les options ajoutées. Ex.: MSS –
Maximum Segment Size, Timestamp pour calculer RTT).
Remplissage: zéros ajoutés pour aligner les champs suivants du paquet sur 32 bits, si nécessaire
Données: séquences d'octets transmis par l'application (par exemple : +OK POP3 server ready...)14 K. CHETIOUIGINFO1 Structure d'un segment TCP
Numéro de séquence(32 bits) : La signification de ce numéro est à interpréter selon la valeur du bit SYN (Synchronize), situé dans le champ Drapeaux de l'entête TCP.
lLorsque SYN = 0, le numéro de séquence est celui du premier octet de données du segment en cours (par rapport à tous les octets du flot de données transportées).
lLorsque SYN = 1, ce numéro présente le numéro initial (ISN –
Initial Sequence Number), c-à-d celui du premier octet du flot de données à transmettre. Ce numéro est géré par une horloge interne, propre à la machine locale. Il est tiré au sort.l Numéro d'acquittement: numéro de séquence du dernier octet reçu par le récepteur (par rapport à tous les octets du flot de données reçues).
Signification des champs:15 K. CHETIOUIGINFO1 Exemple de communication en TCP
émetteur
récepteur
Synchronisation
Acquittement, Synchronisation
Acquittement
Connexion établie
Transfert des donnéesGINFO1 16
K. CHETIOUI
Établissement d'une connexion TCP
Le côté clientde la connexion effectue une ouverture activeen 3 temps:
Le client envoie un segment SYN au serveur,
Le serveur lui répond par un segment SYN/ACK,
Le client confirme par un segment ACK.GINFO1 17
K. CHETIOUI
Terminaison d'une connexion TCP
La phase de terminaison d'une connexion utilise un handshaking en quatre temps, chaque extrémité de la connexion effectuant sa terminaison de manière indépendante. La fin d'une connexion nécessite une paire de segments FIN et ACK pour chaque extrémité.GINFO1 18
K. CHETIOUI
Fonctions du protocole TCP
Fiabilité
L’utilisation d’un mécanisme appelé PAR(Positive Acknowlegment with Retransmission, Accusé de réception positif avec la
retransmission) permet à TCP de garantir des transmissions fiables. Un système utilisant PAR envoie à nouveau les données, à moins que le système à distance ne lui renvoie un message précisant que les données sont arrivées correctement. Chaque segment contient un total de contrôle que le destinataire utilise pour vérifier que les données n’ont pas été endommagées pendant leur transmission. Si le segment de données est reçu en parfait état, le récepteur renvoie un accusé de réception positif à l’émetteur. Dans la négative, le récepteur élimine ce segment de données. Après un délai d’attente déterminé, le module TCP d’envoi retransmet les segments pour lesquels aucun accusé de réception positif n’a été reçu.
K. CHETIOUI19 GINFO1
Fonctions du protocole TCP
Fiabilité
K. CHETIOUI20 GINFO1
Fonctions du protocole TCP
Acquittement de messages
Contrairement à UDP, TCP garantit l'arrivée des messages, c'est à dire qu'en cas de perte, les deux extrémités sont prévenues.
Ce concept repose sur les techniques d’acquittement de message : lorsqu'une source S émet un message Mi vers une destination D, S attend un acquittement Ai de D avant d'émettre le message suivant Mi+1.
Si l’acquittement Ai ne parvient pas à S, S considère au bout d'un certain temps que le message est perdu et reémet Mi (acquitement simple).
K. CHETIOUI21 GINFO1
Fonctions du protocole TCP
Transfert de données& Acquittement de messages:22 GINFO1
Fonctions du protocole TCP
Segmentation
TCP représente les données qu’il envoie sous la forme d’un flot continu d’octets et non sous la forme de paquets indépendants. Par conséquent, TCP veille à maintenir l’ordredans lequel les octets ont été transmis et reçus. TCP divise ce flot de données en segments en utilisant un mécanisme de fenêtrage. Un segment est émis dans un datagramme IP.
Le fenêtrage et contrôle de flux:
La technique acquittement simple pénalise les performances puisqu'il faut attendre un acquittement avant d'émettre un nouveau message.
Le fenêtrage améliore le rendement des réseaux.
La technique du fenêtrage : une fenêtre de taille T, permet l'émission d'au plus T messages "non acquittés" avant de ne plus pouvoir émettre.
K. CHETIOUI23 GINFO1
K. CHETIOUI
Fonctions du protocole TCP
MSS: Maximum Segment Size24 GINFO1
TCP –Exemple de fenêtrage
K. CHETIOUI25 GINFO1
Modèle Client / Seveur
Modèle Client / Serveur
Le modèle client-serveur désigne un mode de communication à travers un réseau entre plusieurs programmes ou logiciels :
l'un, qualifié de client, envoie des requêtes l'autre, qualifié de serveur, attend les requêtes des clients et y répond.
Le terme serveur fait référence à tout processus qui reçoit une demande de service (requête) venant d'un client via un réseau, traite cette demande et renvoie le résultat (réponse) au demandeur, le client.27 K. CHETIOUIGINFO1 Modèle Client / Serveur
Communication 1 client / 1 serveur
Communication N client / 1 serveur28 Réseau
K. CHETIOUIGINFO1 Exemples d’applications Client/Serveur
Il existe une grande variété de logiciels serveurs et de logiciels clients en fonction des besoins à servir : un serveur web publie des pages web demandées par des navigateurs web ; un serveur de messagerie électronique envoie des mails à des clients de messagerie un serveur de fichiers permet de stocker et consulter des fichiers sur le réseau
un serveur de données sert à stocker et administrer des données stockées dans une base de donnéesetc. 29
K. CHETIOUIGINFO1 Modes de communication
Il existe 2 types d’application :
Applications orientées connexion
Applications orientées sans connexion
Applications orientées connexion: protocole fonctionnant en mode connecté : TCP/IP
protocole fiable
Applications orientées sans connexion: protocole fonctionnant en mode non connecté : UDP/IP
vérifications devant être faites au niveau applicatif
Protocole non fiable mais rapide30 K. CHETIOUIGINFO1 Mode connecté
Le mode connecté:
⋍ communication téléphonique
protocole TCP. une connexion durable est établie entre les deux processus
l'adresse de destination n'est pas nécessaire à chaque envoi de données. Il faut penser à fermer la connexion31 K. CHETIOUIGINFO1 Mode non connecté
Le mode non connecté
⋍ communication par courrier
protocole UDP
nécessite l'adresse de destination à chaque envoi
aucun accusé de réception n'est donné.
Risque de perte de paquets Ordre inconnu des paquets32 K. CHETIOUIGINFO1 Généralités sur les Sockets
Comment écrire une application réseau?
La pile TCP/IP est implémentée au sein du système d’exploitation (OS –Operating System)
OS permet l’utilisation des fonctionnalités TCP/IP à travers les Interfaces SOCKET (SOCKET APIs)
API: Application Program Interface Les programmeurs ont développé les applications réseau en utilisant les SOCKET APIs34 K. CHETIOUIGINFO1 Définition d’un socket
Un socket constitue un mécanisme de communication entre processus du système Unix (mais pas exclusivement). Il sert d’interface entre les applications et les services réseau fournis par l’OS. Il existe pour cela une bibliothèque (ensemble de fonctions/primitives) permettant de gérer les services de communication offerts par les sockets.
Une application envoie et reçoit des données à travers un socket: 35
K. CHETIOUIGINFO1 Application
SOCKETAPI
TCP/IPv4TCP/IPv6UNIX
Principe de communication avec des sockets36 K. CHETIOUIGINFO1 Caractéristiques d’un socket
Il y a plusieurs types de sockets. Le type de socket dépend des caractéristiques de la communication que l’on souhaite établir à l’aide du socket :
unicité des envois (pas de doublons),
respect de la séquentialité des envois,
efficacité de distribution et sécurité,
autorisation de messages hors-normes (out-of-bande), c’est un message délivré hors du flux normal des données,
support de mode connecté,Etc. Un socket est toujours défini dans un domaine de communicationet son typeest défini par rapport aux propriétés du domaine de communication.37 K. CHETIOUIGINFO1 Domaine d’un socket Un domainede communication est une familleabstraite qui définit un mode d’adressage (standard d’adressage) et un ensemble de protocoles utilisables par les sockets. Il existe une variété de domaines : UNIX, INTERNET, X25, DECNET, APPLETALK, ISO, etc.
Les principaux domaines sont : AF_UNIX (PF_UNIX): le domaine local. AF_INET (PF_UNIX): le domaine Internet qui permet d’atteindre des processus s’exécutant sur des machines distantes (de l’Internet).38 K. CHETIOUIGINFO1 Modes de communication avec les sockets
Les sockets en mode connecté (protocole TCP). Les sockets à base de datagramme en mode non connecté (protocole UDP). Les sockets en mode caractère (raw socket). 39
K. CHETIOUIGINFO1 Modes de communication avec les sockets
Les sockets en mode connecté (protocole TCP): Ces sockets ouvrent une liaison bidirectionnelle sécurisée et séquentielle entre deux processus, et garantissent l’unicité des transferts. Le mode séquentiel établit un circuit virtuel de communication point à point.
Les sockets à base de datagramme en mode non connecté (protocole UDP):Ces sockets permettent le transfert de fichiers de façon bidirectionnelle mais ne garantissent ni l’unicité, ni la séquentialité des transferts. Ce mode n’est pas fiable, il peut y avoir des pertes.
Les sockets raw (raw socket): Ce type de socket sont nécessaires aux protocoles qui sont directement encapsulés dans IP, sans passer par TCP ni UDP.40 K. CHETIOUIGINFO1 Type de sockets
Le type détermine la sémantique des communications que le socket permet de réaliser. Couche physique et couche liaison41 K. CHETIOUIGINFO1 Opérations sur un socket
Un socket fait objet principalement des opérations suivantes:
Création: fonction socket()
Association avec les informations de la connexion: fonction bind()
Mise en écoute: fonction listen()
Connexion: fonction connect()
Envoi & réception de données: fonctions read, recv, write, send, sendto, recvfrom
Fermeture: fonctionclosesocket(), shutdown()42 K. CHETIOUIGINFO1 Création d’un socket
A la création (socket), il faut spécifier:
Le domainedu socket: pour une communication entre client et serveur utilisant les protocoles de la pile TCP/IP, on utilise:
AF_INET: famille d’adresses Internet IPv4 (format xx.xx.xx.xx)
Il faut spécifier son type, selon le domaine du socket :
Les types en relation avec la famille AF_INETsont: SOCK_STREAM: spécifique au mode connecté (TCP)
SOCK_DGRAM: spécifique au mode non-connecté (UDP)
SOCK_RAW: spécifique au protocole IP
Un numéro de portsur la machine:
Il existe 65535 numéros de ports différents.Ce paramètre spécifie le protocole à utiliser.43 K. CHETIOUIGINFO1 Paramétrage et mise en écoute d’un socket
De la même façon qu’on attribue un numéro de téléphone à une personne pour recevoir des appels, il faut spécifier au socket une adresse à laquelle il doit recevoir les messages qui lui sont destinés (bind)
Les sockets de type SOCK_STREAMont la possibilité de se mettre à l’écoute en attente de requêtes de connexions (listen)
Le socket du serveur accepte les demandes de communicationprovenant des clients (accept)44 K. CHETIOUIGINFO1 Connexion entre 2 sockets
Une fois créé (socket) et (bind), le socket qui reçoit des demandes de communication, peut être appelé par un autre socket
Il faut connecter un socket (socket client) à un autre socket qui est en attente (connect) (en mode connecté) Une fois la connexion établie, la conversation peut commencer (read, write...)
À la fin de la communication (comme on raccroche le téléphone) il faut fermer le socket qui a servi à la communication (closesocket)45 K. CHETIOUIGINFO1 Récapitulatif en mode connecté46 K. CHETIOUIGINFO1 ClientServeur
closesocket(...)closesocket(...)
shutdown(...)shutdown(...)
send(...)
send(...)
recv(...)
recv(...)
Récapitulatif en mode non connecté47 ClientServeurGINFO1 closesocket(...)
closesocket(...)
Principe de la programmation réseau
GINFO1K. CHETIOUI48 Voir:
lAnnexe –Principe de la programmation Réseau
lTP –Programmation d'une application de temps en UDP et en TCP
Références
Webographieen- us/library/windows/desktop/ms737629%28v=vs.85%29.aspxen- us/library/windows/desktop/ms740673%28v=vs.85%29.aspxcours Winsock Programming FAQ: wskfaq/
alt.winsock FAQ: faqs/windows/winsock-faq/l Bibliographie
W. Richard Stevens, Bill Fenner, and Andrew M. Rudoff, UNIX Network Programming, Volume I: The Sockets Networking API, 3rd Edition, Addison-
Wesley2004.
Sean Walton, Linux Socket Programming, SAMS, 2001.
Douglas E. Comer and David L. Stevens, Internetworking with TCP/IP, Volume III: client-server programming and applications, Prentice-Hall, 1997.
K. CHETIOUI49 GINFO1