15
.: TP 5 : TCP/UDP :. Copyright 2008-2010  tv <[email protected]Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover. You can obtain a copy of the GNU General Public License :  write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Permission est accordée de copier, distribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU (GNU Free Documentation License), version 1.1 ou toute version ultérieure publiée par la Free Software Foundation ; sans Sections Invariables ; sans Texte de Première de Couverture, et sans Texte de Quatrième de Couverture. Vous pouvez obtenir une copie de la GNU General Public License : écrire à la Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Table des matières Séquence 1 – Le protocole TCP.....................................................................................................................2 Séquence 2 - Client/Serveur TCP..................................................................................................................3 Séquence 3 – Le protocole UDP....................................................................................................................6 Séquence 4 - Client/Serveur UDP..................................................................................................................7 Séquence 5 – Fonctions de service................................................................................................................7 Annexe: les modèles de référence..................................................................................................................9 Annexe: la couche Transport.......................................................................................................................10 Annexe: le protocole TCP............................................................................................................................11 Annexe: échange client/serveur TCP ..........................................................................................................12 Annexe: le protocole UDP...........................................................................................................................15 Documentation en ligne protocoles internet (http, smtp, pop, imap, ftp, mime, nntp, irc...) : http://www.iprelax.fr/ protocoles internet (ip, arp, tcp, udp, ...) : www.frameip.com/ Travaux Pratiques 1 / 15 © 2010 - tv ©

TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Copyright 2008­2010  tv <[email protected]

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with 

no Invariant Sections, with no Front­Cover Texts, and with no Back­Cover.

You can obtain a copy of the GNU General Public License :  write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111­1307 USA

Permission est accordée de copier, distribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU (GNU Free Documentation License), version 1.1 ou toute version 

ultérieure publiée par la Free Software Foundation ; sans Sections Invariables ; sans Texte de Première de Couverture, et sans Texte de Quatrième de Couverture. 

Vous pouvez obtenir une copie de la GNU General Public License : écrire à la Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111­1307 USA 

Table des matièresSéquence 1 – Le protocole TCP.....................................................................................................................2Séquence 2 ­ Client/Serveur TCP..................................................................................................................3

Séquence 3 – Le protocole UDP....................................................................................................................6Séquence 4 ­ Client/Serveur UDP..................................................................................................................7

Séquence 5 – Fonctions de service................................................................................................................7

Annexe: les modèles de référence..................................................................................................................9Annexe: la couche Transport.......................................................................................................................10Annexe: le protocole TCP............................................................................................................................11Annexe: échange client/serveur TCP ..........................................................................................................12Annexe: le protocole UDP...........................................................................................................................15

Documentation en ligneprotocoles internet (http, smtp, pop, imap, ftp, mime, nntp, irc...) : http://www.iprelax.fr/protocoles internet (ip, arp, tcp, udp, ...) : www.frameip.com/

Travaux Pratiques 1 / 15 © 2010 ­ tv

©

Page 2: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Séquence 1 – Le protocole TCP1 . Exécuter netcat en mode serveur TCP sur le port 5000. nc -l -p 5000

2 . Utiliser telnet ou netcat comme client TCP. Remarque : telnet ou netcat sont des programmes capables d'ouvrir une socket TCP sur un port et de dialoguer en mode texte (ASCII).telnet localhost 5000 ou nc -vv localhost 5000

3 . Réaliser une capture des échanges entre le serveur et le client et décoder le niveau TCP en utilisant l'annexe sur le protocole TCP et le cours Réseaux. Il est intéressant d'analyser les trois étapes : ouverture de connexion, dialogue et fermeture de connexion (les flags associés et les numéros de séquence seq et ack).

4 . Exécuter un serveur TCP avec netcat sur un des ports compris entre 5000 et 5005 sur votre machine et détecter les ports ouverts acceptant des connexions TCP dans la plage 5000­5005, puis dans la plage 7­13, en utilisant l'outil nmap ou netcat. nmap -sT -p 5000-5005 localhost ou netcat -vv -z localhost 7-13

5 .  Exécuter simultanément sur votre machine deux programmes serveur sur le même port. Que se passe­t­il ?

Bilan6 . Comment le serveur connaît­il le port utilisé par le client ? Comment le client connaît­il le port utilisé par le serveur ?

Travaux Pratiques 2 / 15 © 2010 ­ tv

Page 3: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Séquence 2 - Client/Serveur TCPRemarques :– si vous commencez par écrire le serveur, testez­le avec le client telnet pour le valider– si vous commencez par écrire le client, testez­le avec le serveur netcat pour le valider

Pour quitter une session telnet, faire CTRL­], puis taper quit

Pour le serveur, vous utiliserez un numéro de port compris dans la plage 5000­5005 (vous pouvez utiliser l'étiquette prédéfinie IPPORT_USERRESERVED qui est égale à 5000). A partir du cours sur la programmation des sockets et des pages man :

1 . Compléter le tableau ci­dessous :

Client TCP

Appels Fichiers en­tête à inclure Valeur renvoyéesocket

connect

send/recv

close

memset

inet_aton

Client et Serveur TCP

Structure(s) Fichiers en­tête à inclurestruct sockaddr_in

Travaux Pratiques 3 / 15 © 2010 ­ tv

Page 4: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Serveur TCP

Appels Fichiers en­tête à inclure Valeur renvoyéesocket

bind

listen

accept

send/recv

close

memset

inet_aton

Remarque : il vous faut tester TOUTES les valeurs renvoyées par les appels systèmes

if (bind(socketEcoute, (struct sockaddr *)&pointDeRencontreLocal, longueur) < 0){      perror("bind"); /* affichera le message d'erreur correspondant */      exit(2); /* à quoi ça sert de continuer ? */}

1 . Fournir le code source du serveur et du client TCP.

2 . a . Tester le programme serveur TCP avec telnet. Donner la commande exacte.2 . b . Tester le programme client TCP avec netcat. Donner la commande exacte.2 . c . Tester le programme client TCP avec le serveur TCP.

3 . Détecter les ports ouverts acceptant des connexions TCP dans la plage 5000­5005 en utilisant l'outil nmap. Donner la commande exacte et le résultat obtenu. Votre serveur est­il détecté par nmap ?

4 . Réaliser une capture avec wireshark des échanges effectués par les deux programmes client/serveur. Sauvegarder votre capture dans un fichier plain text l'échange capturé. Commenter.

Travaux Pratiques 4 / 15 © 2010 ­ tv

Page 5: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

5 . A partir de la capture réalisée, compléter le diagramme des échanges TCP ci­dessous en précisant le rôle de chaque échange. Indiquer les données échangées par les deux programmes client/serveur.

Remarque : indiquer sur chaque flèche les flags (SYN, ACK, …) ainsi que que les numéros de séquence (seq et ack).

6 . Est­il possible d'exécuter deux serveurs TCP sur le même port ? Tester.

Travaux Pratiques 5 / 15 © 2010 ­ tv

Client

Num Port :

Serveur

Num Port :

Page 6: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Séquence 3 – Le protocole UDP1 . Exécuter netcat en mode serveur UDP sur le port 5000.nc -l -p 5000 -u

2 . Utiliser netcat comme client UDP.nc -vv -u localhost 5000

3 . Réaliser une capture des échanges entre le serveur et le client et décoder le niveau UDP (utiliser l'annexe sur le protocole UDP).

4 . Exécuter simultanément sur votre machine un serveur TCP et un serveur UDP sur le même port. Que se passe­t­il ?

Bilan5 . Comment le serveur connaît­il le port utilisé par le client ? Comment le client connaît­il le port utilisé par le serveur ?

Travaux Pratiques 6 / 15 © 2010 ­ tv

Page 7: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Séquence 4 - Client/Serveur UDPRemarques :– si vous commencez par écrire le serveur, testez­le avec le client netcat pour le valider– si vous commencez par écrire le client, testez­le avec le serveur netcat pour le valider

Remarque : Il vous faut utiliser l'option ­u de netcat pour le mode UDP.

1 . Fournir le code source du serveur UDP et du client UDP.

2 . a . Tester le programme serveur UDP avec netcat. Donner la commande exacte.2 . b . Tester le programme client UDP avec netcat. Donner la commande exacte.2 . c . Tester le programme client UDP avec le serveur UDP.

3 . Votre serveur UDP est­il détecté par nmap ?

4 . Réaliser une capture avec wireshark des échanges effectués par les deux programmes client/serveur. Compléter le diagramme des échanges ci­dessous en précisant le rôle de chaque échange. Indiquer les données échangées par les deux programmes client/serveur.

5 . Est­il possible d'exécuter deux serveurs UDP sur le même port ? Tester. Est­il possible d'exécuter un serveur TCP et un serveur UDP sur le même port ? Tester.

Séquence 5 – Fonctions de service1 . Récupérer le programme service.c sur le serveur de la section. Tester.

2 . Reprendre les programmes précédents (client/serveur) et intégrer un affichage des informations suivantes :

le nom de la machine locale et distante (si possible) l'adresse IP locale et distante le numéro de port local et distant

3 . Client/Serveur TCP : écrire les fonctions readn() et writen() qui permettent de contrôler la réception et l'émission des données sur le réseau. 

Travaux Pratiques 7 / 15 © 2010 ­ tv

Client

Num Port :

Serveur

Num Port :

Page 8: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Ces deux fonctions appelleront à leur tour les fonctions read/write (ou send/recv). Il vous faudra tenir compte des valeurs renvoyées par les fonctions read/write (ou send/recv). Ces fonctions read/write (ou send/recv) retournent le nombre réels d'octets reçus ou envoyés. Ces valeurs peuvent être différentes des celles passées en argument. De plus, elles renvoient ­1 en cas d'erreur et 0 si le dialogue est terminé.

Prototypes des fonctions à écrire :ssize_t readn(int sock, void *buffer, size_t nb);ssize_t writen(int sock, void *buffer, size_t nb);

Exemple :int writen(int sock, const void *buffer, size_t nb){   ssize_t aEcrire, ecrits;

   aEcrire = nb;   while ( aEcrire > 0 ) 

{    ecrits = write(sock, buffer, aEcrire);     if ( ecrits <= 0 )      return ecrits;   /* erreur ou aucune écriture */     aEcrire ­= ecrits; /* on décompte le nombre d'octets déjà écrits */     buffer += ecrits;  /* on se déplace du nombre d'octets déjà écrits */   }

   return ( nb – aEcrire );}

Ecrire la fonction readn().

4 . Client/Serveur TCP : écrire les fonctions readln() et writeln() qui permettent de contrôler la réception et l'émission des données sur le réseau en tenant compte du délimiteur '\n'. 

Ces deux fonctions appelleront à leur tour les fonctions readn/writen. 

Prototypes des fonctions à écrire :int readln(int sock, void *buffer, size_t nb);int writeln(int sock, void *buffer, size_t nb);

Exemple :int writeln(int sock, void *buffer, size_t nb){   ssize_t ecrits;      ecrits = writen(sock, buffer, nb);   if ( ecrits <= 0 )      return 0;     /* erreur ou aucune écriture */

   ecrits += writen(sock, "\n", 1); /* ou "\r\n" */   if ( ecrits <= 0 )      return 0;     /* erreur ou aucune écriture */

   return 1;}

Ecrire la fonction readn().

Travaux Pratiques 8 / 15 © 2010 ­ tv

Page 9: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Annexe: les modèles de référence

• La couche Application : cette couche est l'interface entre l'application utilisateur et le réseau. Elle va apporter à l'utilisateur les services de base offerts par le réseau, comme par exemple le transfert de fichier, la messagerie ... Elle contient donc tous les protocoles de haut niveau, comme par exemple Telnet, TFTP (Trivial File Transfer Protocol), SMTP (Simple Mail Transfer Protocol), HTTP (HyperText Transfer  Protocol) ...  Le point important pour cette couche est le choix du protocole de transport à utiliser. Par exemple, TFTP (surtout utilisé sur réseaux locaux) utilisera UDP, car on part du principe que les liaisons physiques sont suffisamment fiables et les temps de transmission suffisamment courts pour qu'il n'y ait pas d'inversion de paquets à l'arrivée. Ce choix rend TFTP plus rapide que le protocole FTP qui utilise TCP. A l'inverse, SMTP utilise TCP, car pour la remise du courrier électronique, on veut que tous les messages parviennent intégralement et sans erreurs.

• La couche Session du modèle OSI établit une communication entre émetteur et récepteur en assurant l'ouverture et la fermeture des sessions (des communications) entre usagers, définit les règles d'organisation et de synchronisation du dialogue entre les abonnés. Exemple TCP/IP : RPC (Remote Procedure Call).

• La couche Présentation met en forme les informations échangées pour les rendre compatibles avec l'application destinatrice, dans le cas de dialogue entre systèmes hétérogènes. Elle peut comporter des fonctions de traduction, de compression, d'encryptage, ... etc. Exemple TCP/IP : XDR (eXternal Data Representation).

Remarque : même s'il semble que les couches Session et Présentation du modèle OSI semblent inutiles dans le modèle TCP/IP, des protocoles équivalents existent et sont empilés dans la couche Application.

Travaux Pratiques 9 / 15 © 2010 ­ tv

Page 10: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Annexe: la couche TransportLe protocole IP permet de mettre en correspondance deux machines grâce à leurs adresses. Ce mécanisme n’est pas complet, puisque la communication s’effectue au niveau des processus (programmes) qui s'exécutent sur ces machines. Il faudra donc identifier quels sont les processus des machines qui veulent communiquer.

C’est le rôle de la couche Transport d’assurer la transmission de bout en bout. TCP/IP propose deux protocoles pour cette couche : UDP (User Datagram Protocol) et TCP (Transmission Control Protocol).

UDP et TCP offrent un système de numéro de port pour permettre à deux processus distants d’échanger des données. 

Actuellement, l’interface la plus utilisée sous TCP/IP est l’interface socket. Les sockets sont apparues au début des années 80 à l’université de Berkeley dans le noyau de leur système d’exploitation BSD Unix.

Une socket est un point de communication par lequel un processus peut émettre et recevoir des informations. Ce point de communication devra être relié à une adresse IP et un numéro de port.

TCP fournit un service de transfert : • fiable (détection et correction d’erreurs) avec élimination des paquets dupliqués;• en mode connecté avec contrôle de flux et segmentation et séquencement des paquets ;

UDP fournit un service de transfert:• non fiable (détection mais pas de correction des erreurs) avec risque de duplication de 

paquets ;• en mode non connecté sans segmentation des données et sans séquencement des paquets ;

En résumé, on peut dire qu'UDP fournit donc un service plus performant mais moins sûr que TCP.

Remarque: le trafic UDP est prioritaire sur le trafic TCP. En effet, le protocole TCP possède un mécanisme de contrôle de congestion, dans le cas où l'acquittement d'un paquet arrive après un temps trop long. Ce mécanisme adapte la fréquence d'émission des paquets TCP. Le protocole UDP ne possède pas ce mécanisme et occupera toute la bande passante en cas de fort trafic n'en laissant qu'un infime partie à TCP.

Travaux Pratiques 10 / 15 © 2010 ­ tv

Page 11: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Annexe: le protocole TCP0 7 8 15 16 23 24 31

PORT SOURCE PORT DESTINATION

NUMERO DE SEQUENCE (SEQ)

NUMERO D'ACCUSE DE RECEPTION (ACK)

offset RéservéU

R

G

A

C

K

P

S

H

R

S

T

S

Y

N

F

I

N

FENETRE (WINDOW)

Checksum Pointeur de données urgentes

Options Bourrage

DONNEES

DescriptionPorts Source et Destination : correspond au port relatif à l'application (et à son protocole de couche application) en cours sur la machine source et destination, codés sur 16 bits (voir /etc/services)

SEQ (SeQuence Number) (32 bits) : compte les octets du flux de transmission de manière à identifier la position du premier octet de données d'un segment dans le flot des données initiales

ACK (ACKnowledgment number) (32 bits) : contient le n° de séquence du prochain octet attendu

Offset (ou longueur de l'en­tête) (4 bits) : le déplacement en mots de 32 bits (4 octets) du début des données de l'application. Flags : URG (Urgent Pointer) : contient des données urgentes

ACK (Acknowledge Field) : acquittementPSH (Push Flag) : passer immédiatement les données à la couche applicationRST (Reset Flag) : forcer la clôture d'une connexion après une erreur irrécupérable.SYN (Synchronize Flag) : synchroniser le démarrage d'une connexionFIN : pour terminer une connexion

Window (Fenêtre) (16 bits) : annonce le nombre d'octet que le récepteur peut accepter (cf. contrôle de flux)

Checksum (16 bits) :  : contient une somme de contrôle de l'en­tête (cf. IP)Urgent Pointer (Pointeur de données urgentes) (16 bits) : pointe à la fin d'un champ de données considéré comme urgent 

Options (longueur variable) : par exemple le MSS (Maximum Segment Size) désignant la taille maximum du segment à envoyer + Padding : habituellement rempli de 0 de manière à aligner le début des données sur un multiple de 32 bits.

Travaux Pratiques 11 / 15 © 2010 ­ tv

Page 12: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Annexe: échange client/serveur TCP La fiabilité de la transmission est assurée par un mécanisme baptisé Positive Acknowledgement with Re­transmission (PAR). PAR envoie données sur données jusqu’à ce qu’il soit averti de la bonne arrivée des données.

Ouverture d’une connexionOn appellera client la station qui demande l’ouverture de la connexion et serveur la station qui répond à cette demande. Une ouverture active de connexion TCP est établie “en trois temps“ (Three Way Handshake) :1 . Une machine A initialise la connexion en envoyant un segment incluant un SYN  (Synchronize sequence  numbers) et un numéro de séquence x. 2 . La machine B lui répond par un segment avec les drapeaux SYN et ACK (Acknowledgement) avec un numéro d'acquittement x+1. Son numéro de séquence vaut y.3 . La machine A envoie alors les données en même temps que le flag ACK et le numéro d'acquittement y+1. 

Transfert de donnéesLe protocole TCP comptabilise les octets transmis. Le champ seq indique la place du premier octet de données du paquet et ack le prochain octet attendu par l’émetteur du paquet.1 . Une machine A envoie 30 octets et utilise le numéro de séquence x+1, qui correspond au numéro du paquet. Cette valeur permet de situer à quel endroit du flux de données le paquet doit se situer par rapport aux autres paquets. Elle indique aussi le numéro d'acquittement y+1, qui signale le prochain numéro de paquet attendu. 2 . La machine B envoie 10 octets et acquitte les 30 octets reçus ... etc ...

Contrôle de fluxLe champ fenêtre (window) indique la largeur de la fenêtre de transmission ou le crédit accepté (volume de données) par le récepteur avant l'envoi d'un accusé de reception. Ce mécanisme porte aussi le nom de fenêtre coulissante (Sliding Windows). Chaque ordinateur comporte une fenêtre d'émission et une fenêtre de réception qu'il utilise pour buffériser les données en continu, sans devoir attendre un accusé de réception pour chaque paquet. Cela permet au récepteur de recevoir les paquets dans le désordre et de profiter des délais d'attente pour réorganiser les paquets. La fenêtre émettrice contrôle les données émises, si elle ne reçoit pas d'accusé de réception au bout d'un certain temps, elle retransmet le paquet.

Travaux Pratiques 12 / 15 © 2010 ­ tv

Page 13: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Fermeture d’une connexionLa fermeture normale d’une connexion se fait quand le récepteur reçoit un message dont le bit FIN est positionné à 1. La connexion TCP est libérée en “trois temps modifié“. Il est possible de forcer une déconnexion en utilisant le bit RST (fermeture brutale de connexion)

Modèle Client/ServeurUne machine proposant un service est dite serveur. Une machine utilisant ce service est dite cliente.Principe de base : Le serveur est toujours à l'écoute du service qu'il propose et le client fait une demande de service quand il en a besoin.

Point de rencontre des deux machines ­> il regroupe les informations nécessaires à la reconnaissance mutuelle des deux machines (en fait des deux processus qui dialoguent) :

• protocole utilisé (TCP, UDP, ...)• adresse IP source et destination• numéro de port pour la reconnaissance du processus sur les machines source et destination

Travaux Pratiques 13 / 15 © 2010 ­ tv

Page 14: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Travaux Pratiques 14 / 15 © 2010 ­ tv

accepte toutes les connexions

Client Serveur

« unspecified passive open »Open Idnom local de la connexion

Demande d’ouverture« Active open »Open IDnom local de la connexion

SYN 55

ACK 56 SYN 202

ACK 203

Ouverture réussie« Open success »

Ouverture réussie« Open success »

Envoi de 20 octets

Indication de 10 octets

Envoi de 2 octets

Indication de 10 octets

Envoi de 10 octets

Envoi de 10 octets

Indication de 22 octets, etc …

PSH ACK seq : 56acq : 203

ACK seq : 203acq : 66

ACKseq : 66acq : 223

PSH ACK seq : 223acq : 76

FIN ACK

ACK

FIN ACK

ACKIndication de déconnexion

Demande de déconnexion

Confirmation de déconnexion

ACK 56 : indique le n° de SEQ attendu du prochain segment

SYN 202 : synchronisation des membres et indique la valeur initiale de SEQ

Page 15: TP 5 : TCP/UDPtvaira.free.fr/reseaux/tp5-tcp_udp.pdf · TP 5 : TCP/UDP :. Séquence 3 – Le protocole UDP 1 . Exécuter netcat en mode serveur UDP sur le port 5000. nc -l -p 5000

.: TP 5 : TCP/UDP :.

Annexe: le protocole UDP

UDP permet à une application d’envoyer des messages à une autre application avec un minimum de fonctionnalités (pas de garantie d’arrivée, ni de contrôle de séquencement).

UDP n’accepte pas de datagramme de taille supérieure à 8KO.

UDP permet simplement d’utiliser les numéros de port.

Format d’un message UDP :

0 7 15 23 31port source port destinatairelongueur checksum

Données

Travaux Pratiques 15 / 15 © 2010 ­ tv