dimanche 17 février 2008
Telechargez le dossier
vous pouvez télécharger l'intégralité du TPE sous differents formats (PDF, ODT, DOC, XHTML, Google document, etc) par simple demande par courriel à l'adresse redoules.guillaume@gmail.com, je me ferai un plaisir de vous l'envoyer.
Introduction
a) Présentation des différentes couches du model OSI
The Open Systems Interconnection Basic Reference Model (OSI Reference Model or OSI Model for short) is a layered, abstract description for communications and computer network protocol design. It was developed as part of the Open Systems Interconnection (OSI) initiative and is sometimes known as the OSI seven layer model. From top to bottom, the OSI Model consists of the Application, Presentation, Session, Transport, Network, Data Link, and Physical layers. A layer is a collection of related functions that provides services to the layer above it and receives service from the layer below it.
L'Open Systems Interconnection Basic Reference Model (modèle de référence OSI ou OSI Model en abrégé) est une hiérarchie qui décrit abstraitement les communications informatiques et la conception des protocoles de réseau. Il a été développé dans le cadre de l'interconnexion de systèmes ouverts (OSI) et est parfois connu sous le nom de la couche OSI à sept modèle. Du haut au bas, le modèle OSI est composé des couches d'Application, de Présentation, de Session, de Transport, de Réseau, de Liaison de données, et des couches physiques. Une couche est un ensemble de fonctions connexes, qui fournit des services à la couche au-dessus d'elle et reçoit le service de la strate inférieure.
| OSI Model | |||
|---|---|---|---|
| | Data unit | Layer | Function |
| Host | Data | 7. Application | Network process to application |
| 6. Presentation | Data representation and encryption | ||
| 5. Session | Interhost communication | ||
| Segment | 4. Transport | End-to-end connections and reliability (TCP/UDP) | |
| Media | Packet/Datagram | 3. Network | Path determination and logical addressing (IP) |
| Frame | 2. Data link | Physical addressing (MAC & LLC) | |
| Bit | 1. Physical | Media, signal and binary transmission | |
Layer 1: Physical layer
The physical layer defines all the electrical and physical specifications for devices. In particular, it defines the relationship between a device and a physical medium. This includes the layout of pins, voltages, cable specifications, Hubs, repeaters, network adapters, Host Bus Adapters (HBAs used in Storage Area Networks) and more.
The major functions and services performed by the physical layer are:
Establishment and termination of a connection to a communications medium.
Participation in the process whereby the communication resources are effectively shared among multiple users. For example, contention resolution and flow control.
Modulation, or conversion between the representation of digital data in user equipment and the corresponding signals transmitted over a communications channel. These are signals operating over the physical cabling (such as copper and optical fiber) or over a radio link.
Les principales fonctions et services rendus par la couche physique sont:
L'établissement et la clôture d'une connexion à un moyen de communication.
L'implication dans le processus par lequel les ressources de communication sont entre plusieurs utilisateurs. Par exemple, la résolution et le contrôle de flux.
La modulation, ou à la conversion entre la représentation de l'utilisateur (données numériques) et les signaux transmis sur le canal de communication. Ce sont des signaux transitants sur le câblage physique (comme le cuivre et fibre optique), ou sur une liaison radio.
Layer 2: Data Link layer
The data link layer provides the functional and procedural means to transfer data between network entities and to detect and possibly correct errors that may occur in the physical layer. Originally, this layer was intended for point-to-point and point-to-multipoint media, characteristic of wide area media in the telephone system. Local area network architecture, which included broadcast-capable multiaccess media, was developed independently of the ISO work, in IEEE Project 802. IEEE work assumed sublayering and management functions not required for WAN use. In modern practice, only error detection, not flow control using sliding window, is present in modern data link protocols such as Point-to-Point Protocol (PPP), and, on local area networks, the IEEE 802.2 LLC layer is not used for most protocols on Ethernet, and, on other local area networks, its flow control and acknowledgment mechanisms are rarely used. Sliding window flow control and acknowledgment is used at the transport layers by protocols such as TCP, but is still used in niches where X.25 offers performance advantages.
Both WAN and LAN services arrange bits, from the physical layer, into logical sequences called frames. Not all physical layer bits necessarily go into frames, as some of these bits are purely intended for physical layer functions. For example, every fifth bit of the FDDI bit stream is not used by the data link layer.
Layer 3: Network layer
The network layer provides the functional and procedural means of transferring variable length data sequences from a source to a destination via one or more networks while maintaining the quality of service requested by the Transport layer. The Network layer performs network routing functions, and might also perform fragmentation and reassembly, and report delivery errors. Routers operate at this layer—sending data throughout the extended network and making the Internet possible. This is a logical addressing scheme – values are chosen by the network engineer. The addressing scheme is hierarchical.
The best-known example of a layer 3 protocol is the Internet Protocol (IP). It manages the connectionless transfer of data one hop at a time, from end system to ingress router, to router to router, and from egress router to destination end system. It is not responsible for reliable delivery to a next hop, but only for the detection of errored packets so they may be discarded. When the medium of the next hop cannot accept a packet in its current length, IP is responsible for fragmenting into sufficiently small packets that the medium can accept it.
La couche réseau fournit les moyens procéduraux et les techniques de transfert des données de longueur variable des séquences à partir d'une source vers une destination via un ou plusieurs réseaux tout en maintenant la qualité du service demandé par la couche transport.La couche réseau assure des fonctions de routage, et pourrait également effectuer la fragmentation et le ré assemblage, et le rapport des erreurs de prestation. C'est sur cette couche que travaillent les routeurs, ils envoient les données à travers ce réseau étendu et rendent Internet possible. Ceci selon un schéma d'adressage logique - les valeurs sont choisies par les ingénieurs réseau. Le schéma d'adressage est de type hiérarchique.L'exemple le plus connu d'une couche 3 est le protocole IP (Internet Protocol). C'est un protocole qui n'est pas orienté connexion et donc qui envoie des paquets de point à point (c'est-à-dire de routeur à routeur) de l'émetteur au destinataire. IP n'assure pas un transfère sûr mais il détecte les paquets erronés. Lorsque le récepteur ne peut pas accepter un paquet à cause de sa taille : il appartient à IP de le fragmenter en paquets suffisamment petits pour que le recepteur puisse accepter.
Layer 4: Transport layer
The transport layer provides transparent transfer of data between users, providing reliable data transfer services to the upper layers. The transport layer controls the reliability of a given link through flow control, segmentation/desegmentation, and error control. Some protocols are state and connection oriented. This means that the transport layer can keep track of the segments and retransmit those that fail.
La couche transport assure le transfert transparent des données entre les utilisateurs et fournit des services de transfert de données fiables pour les couches supérieures. La couche de transport de contrôle de la fiabilité d'une liaison à travers le contrôle de flux, la segmentation / désegmentation, du contrôle des flux et dela gestion des erreurs. Certains protocoles de cette couche sont orientés connexion. Cela signifie que la couche de transport peuvent suivre l'évolution des paquets et retransmettre des segments si nécessaire.
Layer 5: Session layer
The session layer controls the dialogues/connections (sessions) between computers. It establishes, manages and terminates the connections between the local and remote application. It provides for full-duplex, half-duplex, or simplex operation, and establishes checkpointing, adjournment, termination, and restart procedures. The OSI model made this layer responsible for "graceful close" of sessions, which is a property of TCP, and also for session checkpointing and recovery, which is not usually used in the Internet protocols suite. Session layers are commonly used in application environments that make use of remote procedure calls (RPCs).
La couche session est la couche de contrôle des dialogues / connexions (sessions) entre ordinateurs. Il établit, gère et met fin aux connexions entre les applications locales et distantes. Ce qui comprend les opérations en full-duplex, half-duplex ou simplex. Cette couche établit le contrôle, l'ajournement, la résiliation, et les procédures de redémarrage des connexions qu'elle gère. Le modèle OSI a fait cette couche responsable de la "fermeture propre" des sessions, ce qui est une des propriétés de TCP, de même elle est responsable des accusés de reception ce qui n'est pas habituellement utilisé dans les protocoles Internet basés plus haut hierachiquement. Session couches sont couramment utilisées dans les environnements d'applications qui utilisent des appels de procédures distantes (RPC).
Layer 6: Presentation layer
The presentation layer establishes a context between application layer entities, in which the higher-layer entities can use different syntax and semantics, as long as the Presentation Service understands both and the mapping between them. The presentation service data units are then encapsulated into Session Protocol Data Units, and moved down the stack.
Cette couche s'intéresse à la syntaxe et à la sémantique des données transmises : c'est elle qui traite l'information de manière à la rendre compatible entre tâches communicantes. Elle va assurer l'indépendance entre l'utilisateur et le transport de l'information.
Typiquement, cette couche peut convertir les données, les reformater, les crypter et les compresser.
Layer 7: Application layer
The application layer interfaces directly between the application and the network
La couche applicative agit directement sur l'/les interface(s) entre l'application et le réseau
Various mnemonics have been created over the years to help remember the order. Probably the most taught and text-book found one is:
Please Do Not Throw Sausage Pizza Away!
Please Do Not Take Sales-People's Advice
For : Physical, Data Link, Networkc, Transport, Session, Presentation and Application
ou en francais
Pour Le Réseau Tu Sais Pas Administrer
Après Plusieurs Semaines Tout Respire La Paix(de la couche 7 vers la couche 1)
Partout Le Roi Trouve Sa Place Assise
Pour : Physique, Liaison, Réseau, Transport, Session, Présentation, Application
b) Notions sur le protocole IP
Qu'est-ce qu'une adresse IP
Sur Internet, les ordinateurs communiquent entre eux grâce au protocole IP (Internet Protocol), qui utilise des adresses numériques, appelées adresses IP, composées de 4 nombres entiers (4 octets) entre 0 et 255 et notées sous la forme xxx.xxx.xxx.xxx. Par exemple, 194.153.205.26 est une adresse IP donnée sous une forme technique.
Ces adresses servent aux ordinateurs du réseau pour communiquer entre-eux, ainsi chaque ordinateur d'un réseau possède une adresse IP unique sur ce réseau.
C'est l'ICANN (Internet Corporation for Assigned Names and Numbers, remplaçant l'IANA, Internet Assigned Numbers Agency, depuis 1998) qui est chargée d'attribuer des adresses IP publiques, c'est-à-dire les adresses IP des ordinateurs directement connectés sur le réseau public internet.
Déchiffrement d'une adresse IP
Une adresse IP est une adresse 32 bits, généralement notée sous forme de 4 nombres entiers séparés par des points. On distingue en fait deux parties dans l'adresse IP :
une partie des nombres à gauche désigne le réseau est est appelée ID de réseau (en anglais netID),
Les nombres de droite désignent les ordinateurs de ce réseau est est appelée ID d'hôte (en anglais host-ID).
Soit l'exemple ci-dessous :

Notons le réseau de gauche 194.28.12.0. Il contient les ordinateurs suivants :
194.28.12.1 à 194.28.12.4
Notons celui de droite 178.12.0.0. Il comprend les ordinateurs suivants :
178.12.77.1 à 178.12.77.6
Dans le cas ci-dessus, les réseaux sont notés 194.28.12 et 178.12.77, puis on numérote incrémentalement chacun des ordinateurs le constituant.
Imaginons un réseau noté 58.0.0.0. Les ordinateurs de ce réseau pourront avoir les adresses IP allant de 58.0.0.1 à 58.255.255.254. Il s'agit donc d'attribuer les numéros de telle façon qu'il y ait une organisation dans la hiérarchie des ordinateurs et des serveurs.
Ainsi, plus le nombre de bits réservé au réseau est petit, plus celui-ci peut contenir d'ordinateurs.
En effet, un réseau noté 102.0.0.0 peut contenir des ordinateurs dont l'adresse IP peut varier entre 102.0.0.1 et 102.255.255.254 (256*256*256-2=16777214 possibilités), tandis qu'un réseau noté 194.26 ne pourra contenir que des ordinateurs dont l'adresse IP sera comprise entre 194.26.0.1 et 194.26.255.254 (256*256-2=65534 possibilités), c'est la notion de classe d'adresse IP.
Adresses particulières
Lorsque l'on annule la partie host-id, c'est-à-dire lorsque l'on remplace les bits réservés aux machines du réseau par des zéros (par exemple 194.28.12.0), on obtient ce que l'on appelle l'adresse réseau. Cette adresse ne peut être attribuée à aucun des ordinateurs du réseau.
Lorsque la partie net-id est annulée, c'est-à-dire lorsque les bits réservés au réseau sont remplacés par des zéros, on obtient l'adresse machine. Cette adresse représente la machine spécifiée par le host-ID qui se trouve sur le réseau courant.
Lorsque tous les bits de la partie host-id sont à 1, l'adresse obtenue est appellée l'adresse de diffusion (en anglais broadcast). Il s'agit d'une adresse spécifique, permettant d'envoyer un message à toutes les machines situées sur le réseau spécifié par le netID.
A l'inverse, lorsque tous les bits de la partie netid sont à 1, l'adresse obtenue constitue l'adresse de diffusion limitée (multicast).
Enfin, l'adresse 127.0.0.1 est appelée adresse de rebouclage (en anglais loopback), car elle désigne la machine locale (en anglais localhost).
Les classes de réseaux
Les adresses IP sont réparties en classes, selon le nombre d'octets qui représentent le réseau.
Classe A
Dans une adresse IP de classe A, le premier octet représente le réseau, les 3 autres octets reprensentent quand à eux les ordinateurs sur le réseau.
Le bit de poids fort (le premier bit, celui de gauche) est à zéro, ce qui signifie qu'il y a 27 (00000000 à 01111111) possibilités de réseaux, soit 128 possibilités. Toutefois, le réseau 0 (bits valant 00000000) n'existe pas et le nombre 127 est réservé pour désigner votre machine.
Les réseaux disponibles en classe A sont donc les réseaux allant de 1.0.0.0 à 126.0.0.0 (les derniers octets sont des zéros ce qui indique qu'il s'agit bien de réseaux et non d'ordinateurs !)
Une adresse IP de classe A, en binaire, ressemble à ceci :
| 0 | xxxxxxx | xxxxxxxx | xxxxxxxx | xxxxxxxx |
| Réseau | Ordinateurs | |||
Classe B
Dans une adresse IP de classe B, les deux premiers octets représentent le réseau, les 2 autres octets reprensentent quand à eux les ordinateurs sur le réseau.
Les deux premiers bits sont 1 et 0, ce qui signifie qu'il y a 214 (10 000000 00000000 à 10 111111 11111111) possibilités de réseaux, soit 16384 réseaux possibles. Les réseaux disponibles en classe B sont donc les réseaux allant de 128.0.0.0 à 191.255.0.0
Les deux octets de droite représentent les ordinateurs du réseau. Le réseau peut donc contenir un nombre d'ordinateurs égal à :
216-21 = 65534 ordinateurs.
Une adresse IP de classe B, en binaire, ressemble à ceci :
| 10 | xxxxxx | xxxxxxxx | xxxxxxxx | xxxxxxxx |
| Réseau | Ordinateurs | |||
Classe C
Dans une adresse IP de classe C, les trois premiers octets représentent le réseau, le dernier octet représente quand a lui les ordinateurs sur le réseau.
Les trois premiers bits sont 1,1 et 0, ce qui signifie qu'il y a 221 possibilités de réseaux, c'est-à-dire 2097152. Les réseaux disponibles en classe C sont donc les réseaux allant de 192.0.0.0 à 223.255.255.0
L'octet de droite représente les ordinateurs du réseau, le réseau peut donc contenir:
28-21 = 254 ordinateurs.
Une adresse IP de classe C, en binaire, ressemble à ceci :
| 110 | xxxxx | xxxxxxxx | xxxxxxxx | xxxxxxxx |
| Réseau | Ordinateurs | |||
Attribution des adresses IP
Le but de la division des adresses IP en trois classes A,B et C est de faciliter la recherche d'un ordinateur sur le réseau. En effet avec cette notation il est possible de rechercher dans un premier temps le réseau que l'on désire atteindre puis de chercher un ordinateur sur celui-ci. Ainsi, l'attribution des adresses IP se fait selon la taille du réseau.
| Classe | Nombre de réseaux possibles | Nombre d'ordinateurs maxi sur chacun |
| A | 126 | 16777214 |
| B | 16384 | 65534 |
| C | 2097152 | 254 |
Les adresses de classe A sont réservées aux très grands réseaux, tandis que l'on attribuera les adresses de classe C à des petits réseaux d'entreprise par exemple .
Masques de sous-réseau
On fabrique un masque contenant des 1 aux emplacements des bits que l'on désire conserver, et des 0 pour ceux que l'on veut annuler. Une fois ce masque créé, il suffit de faire un ET logique entre la valeur que l'on désire masquer et le masque afin de garder intacte la partie que l'on désire et annuler le reste.
Ainsi, un masque réseau (en anglais netmask) se présente sous la forme de 4 octets séparés par des points (comme une adresse IP), il comprend (dans sa notation binaire) des zéros aux niveau des bits de l'adresse IP que l'on veut annuler (et des 1 au niveau de ceux que l'on désire conserver).
Interet d'un masque de sous-réseau
Le premier intérêt d'un masque de sous-réseau est de permettre d'identifier simplement le réseau associé à une adresse IP.
En effet, le réseau est déterminé par un certain nombre d'octets de l'adresse IP (1 octet pour les adresses de classe A, 2 pour les adresses de classe B, et 3 octets pour la classe C). Or, un réseau est noté en prenant le nombre d'octets qui le caractérise, puis en complétant avec des 0. Le réseau associé à l'adresse 34.56.123.12 est par exemple 34.0.0.0, car il s'agit d'une adresse IP de classe A.
Pour connaître l'adresse du réseau associé à l'adresse IP 34.56.123.12, il suffit donc d'appliquer un masque dont le premier octet ne comporte que des 1 (soit 255 en notation décimale), puis des 0 sur les octets suivants.
Le masque est: 11111111.00000000.00000000.00000000
Le masque associé à l'adresse IP 34.208.123.12 est donc 255.0.0.0.
La valeur binaire de 34.208.123.12 est: 00100010.11010000.01111011.00001100
Un ET logique entre l'adresse IP et le masque donne ainsi le résultat suivant :
00100010.11010000.01111011.00001100
ET
11111111.00000000.00000000.00000000
=
00100010.00000000.00000000.00000000
Soit 34.0.0.0. Il s'agit bien du réseau associé à l'adresse 34.208.123.12
En généralisant, il est possible d'obtenir les masques correspondant à chaque classe d'adresse :
Pour une adresse de Classe A, seul le premier octet doit être conservé. Le masque possède la forme suivante 11111111.00000000.00000000.00000000, c'est-à-dire 255.0.0.0 en notation décimale ;
Pour une adresse de Classe B, les deux premiers octets doivent être conservé, ce qui donne le masque suivant 11111111.11111111.00000000.00000000, correspondant à 255.255.0.0 en notation décimale ;
Pour une adresse de Classe C, avec le même raisonnement, le masque possédera la forme suivante 11111111.11111111.11111111.00000000, c'est-à-dire 255.255.255.0 en notation décimale
Création de sous-réseaux
Prenons l'exemple du réseau 34.0.0.0, et supposons que l'on désire que les deux premiers bits du deuxième octet permettent de désigner le réseau.
Le masque à appliquer sera alors :
11111111.11000000.00000000.00000000
C'est-à-dire 255.192.0.0
Si on applique ce masque, à l'adresse 34.208.123.12 on obtient :
34.192.0.0
En réalité il y a 4 cas de figures possibles pour le résultat du masquage d'une adresse IP d'un ordinateur du réseau 34.0.0.0
Soit les deux premiers bits du deuxième octet sont 00, auquel cas le résultat du masquage est 34.0.0.0
Soit les deux premiers bits du deuxième octet sont 01, auquel cas le résultat du masquage est 34.64.0.0
Soit les deux premiers bits du deuxième octet sont 10, auquel cas le résultat du masquage est 34.128.0.0
Soit les deux premiers bits du deuxième octet sont 11, auquel cas le résultat du masquage est 34.192.0.0
Ce masquage divise donc un réseau de classe A (pouvant admettre 16 777 214 ordinateurs) en 4 sous-réseaux - d'où le nom de masque de sous-réseau - pouvant admettre 222 ordinateurs, c'est-à-dire 4 194 304 ordinateurs.
Il peut être intéressant de remarquer que dans les deux cas, le nombre total d'ordinateurs est le même, soit 16 777 214 ordinateurs (4 x 4194304 - 2 = 16777214).
Le nombre de sous-réseaux dépend du nombre de bits attribués en plus au réseau (ici 2). Le nombre de sous-réseaux est donc :
| Nombre de bits | Nombre de sous-réseaux |
| 1 | 2 |
| 2 | 4 |
| 3 | 8 |
| 4 | 16 |
| 5 | 32 |
| 6 | 64 |
| 7 | 128 |
| 8 (impossible pour une classe C) | 256 |
Problématique
QUELS SONT LES AVANTAGES ET LES INCONVENIANTS DES PROTOCOLES RESEAUX UDP DUNE PART ET TCP DAUTRE PART ?
I le protocole UDP
a) Présentation du protocole UDP
UDP signifie User Datagramm Protocol, ce qui veut dire en français : Protocole de Contrôle de Transmission. L'UDP sert a relier différentes entités informatiques, il ne permet cependant que d'établir un flot de données vers les ordinateurs du réseaux.
b) Fonctionnement de l'UDP
Comme nous l'avons vu dans la partie précédentes, l'UDP a besoin des couches inférieur a la sienne pour pouvoir fonctionner. Il s'agit ici principalement de l'IP, qui est le protocole responsable des connexions avec les réseaux.
Le protocole UDP divise les données a transféré en paquets ( ou datagrammes) puis les transmets au protocole IP qui se charge de les envoyés au destinataire. Pour le destinataire c'est le protocole IP qui réceptionne les paquets puis les transmets au protocole UDP qui va se charger de les remettre dans l'état initial, afin d'être utilisable par le destinataire. Cependant ,l'UDP ne permet en aucun cas de savoir si les informations sont bien arrivées.
Caractéristiques principales de l'UDP:
UDP apporte un mécanisme de gestion des ports, au dessus de la couche internet
UDP est juste une interface au dessus d'IP, c'est pourquoi l'émission des messages se fait sans garanti
De plus, les paquets a destination d'une application UDP sont conservés dans une pile de type FIFO ( FIFO est l'abréviation de l'expression anglaise First In, first Out, que l'on peut traduire par « premier arrivé, premier servi » (littéralement « premier entré, premier sorti »).Cette méthode correspond à une méthode de traitement des élements d'une file d'attente.). Si l'application ne les "consommes" pas assez rapidement, les plus anciens paquets risqeront d'être écrasés par les plus récents; ce qui constitue un risque supplémentaire de pertes de données.
Il n'y a pas de retour d'information au niveau du protocole pour apporter un quelconque moyen de contrôle sur le bon acheminement des données, ce qui permet d'echanger beaucoup plus de données dans un labs de temps plus court, mais l'expediteur n'est pas sûr que tout sera reçu par le destinataire.
Voici la structure de l'en-tête servant pour envoyé des paquets grâce a l'UDP :

Source Port: il s'agit du numéro de port correspondant à l'application émettrice du segment UDP. Ce champ représente une adresse de réponse pour le destinataire. Ainsi, ce champ est optionnel, cela signifie que si l'on ne précise pas le port source, les 16 bits de ce champ seront mis à zéro, auquel cas le destinataire ne pourra pas répondre (cela n'est pas forcément nécessaire, notamment pour des messages unidirectionnels.
Destination Port: Ce champ contient le port correspondant à l'application de la machine destinataire à laquelle on s'adresse.
Message lenght(Taille du paquet): Ce champ précise la longueur totale du segment, en-tête comprise, or l'en-tête a une longueur de 4 x 16 bits (soient 8 x 8 bits) donc le champ longueur est nécessairement supérieur ou égal à 8 octets.
cheksum: Il s'agit d'une somme de contrôle réalisée de telle façon à pouvoir contrôler l'intégrité du segment.
On voit donc que pour communiquer avec un service distant il faut avoir connaissance de son numéro de port, en plus de l'adresse IP de la machine elle-même. L'illustration ci-dessous explicite la notion de port. La couche IP sépare les datagrammes TCP et UDP grâce au champ PROTO de son en-tête, l'association du protocole de transport et du numéro de port identifie un service sans ambiguïté.

c) UDP - Les avantages
- 'UDP est un protocole non orienté de connexion: Il s'agit d'un mode de communication dans lequel la machine émettrice envoie des données sans prévenir la machine réceptrice, et la machine réceptrice reçoit les données sans envoyer d'avis de réception à la première.
- La transmission de donnée est beaucoup plus rapide, surtout car il s'agit d'un protocole non orienté connexion qui ne necessite donc qu'un en-tête de taille réduite
- Ce protocole a une grande fléxibilitée et peut facilement être utilisé avec d'autres systemes.
- est adapté pour transmettre de petites jusqu'a de moyennes quantitée de donnée (jusqu'à 2048octets)
- De plus il présente une grande scalabilité: quel que soit le nombre de recepteurs, les données ne seront envoyées qu une seule fois(se sont les routeurs qui achemineront les données aux clients.)
- Ce qui, en plus, permet de ne pas avoir besoin un gros réseau d'acces pour envoyer a de nombreuses personnes car les données ne sont envoyées qu'une seule fois.
- finir, cette scalabilitée permet de ne pas voir la vitesse de transmission diminuée, lorsque le nombre de recepteur augmente.
d) UDP - Les inconvénients
- L'UDP est un protocole non orienté donc il ne reçoit pas d'accusé de reception de la part des client.
- L'UDP ne garantit pas non plus l'arrivée des données ni l'ordre d'arrivée des données.
- Comme il ne reçoit pas d'accusé de reception, les données perdues ne sont pas renvoyées.
II le protocole TCP
II Le protocole TCP
The Transmission Control Protocol (TCP) is intended for use as a highly reliable host-to-host protocol between hosts in packet-switched computer communication networks, and in interconnected systems of such networks.
a) Présentation du protocole TCP
The communications between communication systems are playing an increasingly important role.
The first organization whose needed a way to send and receive data in a sure and dependable way were the military and governments. As strategic and tactical computer communications networks are developed and deployed, it is essential to provide an interprocess communication protocols which can meet this requirements and support the correlations between a broad fan of application. In 1982 the America
n DoD declared this protocol as standard.
TCP is a connection-oriented, end-to-end reliable protocol designed to fit into a layered hierarchy of protocols which support multi-network application. Furthermore the TCP is the basis of lots of others protocols. For TCP the lowers layers are only a mean to transmit data and under any circumstances are considered as dependable. TCP is not subjected to the type of network; it only needs an IP pro
tocol.
b) Principe de fonctionnement de TCP
Le TCP est un protocole bien plus compliqué que le protocole UDP, il offre cependant des services bien plus élaborés.
Le protocole TCP est caractérisé par 5 points principaux :
Le TCP est capable
d’assurer le bon acheminement des données. C’est une des plus grandes attentes des applications qui doivent transmettre un gros volume de données de façon fiable. Il faut noter que le TCP achemine les données de bout en bout et non d’un point à un autre.
Quand on parle d’un bout d’une transmission bout à bout on considère le réseau Internet comme un intermédiaire sans prendre en compte sa composition. Alors que on mode point par point la structure du réseau Internet entre en compte (un point est un routeur ou un utilisateur). Ainsi si une connexion est effectuée en bout à bout signifie que toutes les connexions point par point dont elle est composée se sont déroulées avec succès. Sur le schéma dans le mode point par point on voit un routeur qui est défaillant (en rouge) : les connexion point à point placées avant ce routeur marcherons mais celles qui le suivent seront défaillantes.
Le protocole TCP est capable de créer un circuit virtuel entre les deux applications : c’est le paradigme selon lequel a été créé TCP, on appel cela le mode connecté (par opposition à l’UDP qui fonctionne en mode datagramme ou encore non connecté).
La capacité de mémoriser des données, en effet d’un côté comme de l’autre, les applications s’envoient des volumes de données de taille variable (de quelques octets à des Giga octets). Le protocole TCP va donc fragmenter les flux de données selon l’activité du réseau et devra les rassembler à la réception et donc les stocker temporairement avant de les présenter dans le bon ordre à l’application.
TCP est indépendant vis-à-vis des données transportées, c’est un flux d’octets non structurés sur lequel il n’agit pas. Il se contente juste des les acheminer.
TCP simule une connexion en « Full duplex », c’est-à-dire comme expliqué précédemment à créer un circuit virtuel dans lequel les opérations de lecture et d’écriture s’effectuent indépendamment. Le TCP autorise la clôture des flots dans une direction tandis que l’autre continue à être active. Le circuit virtuel est rompu quand les deux parties ont clos le flux.
Fonctionnement globale :
Avant le transfert les deux applications se mettent en relation avec leurs systèmes d’exploitation respectifs, pour les informer de leurs désirs d’établir ou de recevoir une communication.
Pratiquement, l’une des deux applications doit effectuer un appel que l’autre doit accepter.
Les protocoles des deux systèmes d’exploitation communiquent alors en s’envoyant des messages au travers du réseau pour vérifier que le transfert est possible (autorisé) et que les deux applications sont prêtes pour leurs rôles.
Une fois ces préliminaires établis, les modules de protocole informent les applications respectives que la connexion est établie et que le transfert peut débuter.
Durant le transfert, le dialogue entre les protocoles continue, pour vérifier le bon acheminement des données.
Conceptuellement, pour établir une connexion — un circuit virtuel — il faut avoir réunis les éléments du quintuplet :
Le protocole ici TCP (mais il se peut que d’autre protocoles soient aussi orientés connexion)
IP locale Adresse de la machine qui émet.
Port local Le numéro de port associé au processus.
IP distante Adresse de la machine distante.
Port distant Le numéro de port associé au service à atteindre. Il est obligatoire de le connaître précisément.
Exemple :
Ici il y a une communication entre une application de la machine 199.7.55.3 associé au port 1057 et une autre application, exécutée sur l’ordinateur 204.66.224.82 au port 80. Ce schéma illustre les échanges entre ces applications. Nous allons au cours de cette partie étudier plus précisément le fonctionnement du protocole.
Le quintuplet est ici
Le protocole TCP
IP locale 199.7.55.3
Port local 1057
IP distante 204.66.224.82
Port distant 80
Description de l’en-tête
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | |
| Port Source | Port destination | |||||||||||||||||||||||||||||||||
| Numéro de séquence | ||||||||||||||||||||||||||||||||||
| Numéro d'acquittement | ||||||||||||||||||||||||||||||||||
| Taille de l'en-tête | réservé | ECN | URG | ACK | PSH | RST | SYN | FIN | Fenêtre | |||||||||||||||||||||||||
| Somme de contrôle | Pointeur de données urgentes | |||||||||||||||||||||||||||||||||
| Options | Remplissage | |||||||||||||||||||||||||||||||||
| Données
| ||||||||||||||||||||||||||||||||||
Port Source : C’est le numéro de port de l’application locale, il est associé au processus .
Port destination C’est le port de l’application distante.
Numéro de séquence C’est un nombre qui identifie la position des données à transmettre par rapport au premier paquet envoyé. Au démarrage de chaque connexion, ce champ contient une valeur non nulle et non facilement prévisible, c’est la séquence initiale ou ISN (initial séquence number).
TCP numérote chaque octet transmis en incrémentant ce nombre 32 bits non signé. Il repasse à 0 après avoir atteint 232 - 1 (4 294 967 295)
Pour le premier octet des données transmis ce nombre est incrémenté de un, et ainsi de suite.
Numéro d'acquittement C'est l'accusé de réception du dernier octet reçu par le destinataire
Taille de l'en-tête : ou offset ou encore HLEN (pour header lenght). Indique le nombre de mots de 32 bits contenus dans l’en-tête.
Réservé : Réservé à un usage futur
Drapeaux : codé sur 6 bits ce segment de code permet d'influencer le comportement de TCP:
URG signifie le champ “ URGENT POINTER ”, c’est-à-dire que le paquet doit être considéré en priorité.
ACK signifie le champ “ ACNOWLEDGMENT NUMBER ” c’est-à-dire accusé de réception
PSH est une notification de l’émetteur au récepteur, pour lui indiquer que toutes les données collectées doivent être transmises à l’application sans attendre les éventuelles données qui suivent.
RST Réinitialisation de la connexion
SYN Le champ “ SEQUENCE NUMBER ” contient la valeur du premier segment qui sera incrémentée lors des différents échanges.
FIN L’émetteur du segment a fini d’émettre.
Si un drapeau est activé alors l'option correspondante doit être utilisée. Par exemple si le drapeau FIN est activé alors l’option correspondante est utilisée et la connexion prend.
Fenêtre Nombre d’octets que l’émetteur est prêt à envoyer (codé sur 16 bit non signés soit théoriquement 65535 octets maximum)
Somme de contrôle (checksum) Le checksum est le résultat d'une somme qui permet au TCP de vérifier l'intégrité des données.
Pointeur de données urgentes Indique le numéro d'ordre à partir duquel l'information devient urgente
Options Est active quand la valeur de la variable « Taille de l'en-tête » possède une valeur supérieure à 5. Ces options permettent de paramétrer TCP. Les différentes options sont :
MSS (maximum segment size) : c'est la maximale du segment, c’est-à-dire le paquet, que l'émetteur accepte de recevoir.
Timespamp : permet de calculer la durée RTT (round trip time) pour savoir si le paquet doit être réémit.
Wscale : permet à l'application d'utiliser une fenêtre de plus de 16 bits. (Si wscale <>16*2wscale)
nop : « no operation » est codé sur 1 octet afin de se caler sur un mot de 4 octets.
Remplissage Si l’entête n’est pas un multiple de 32 des 0 sont ajoutés pour éviter cela.
Données Les données transportées. Il n’y a pas de données à l’établissement de la connexion, l’application peut aussi choisir de ne pas en envoyer.
Début et clôture d’une connexion.
Etablissement
L’émetteur du premier paquet est à l’origine de l’établissement du circuit virtuel, c’est généralement lui le « client ». On dit aussi qu’il effectue une « ouverture active » (active open).
Le récepteur accepte l’établissement de la connexion ce qui suppose qu’il était prêt à le faire avant que la partie cliente en prenne l’initiative. C’est le « serveur », on dit aussi qu’il effectue une « ouverture passive » (passive open).
1°) Le client envoie un segment de comportant le drapeau SYN, avec sa séquence initiale (ISN = SYN = x)
2°) Le serveur répond avec sa propre séquence (ISN = SYN = y), mais il doit également acquitter le paquet qu’il vient de recevoir, ce qu’il fait avec ACK (seq = x+1), c’est un accusé de réception.
3°)Le client doit à son tour acquitter le second segment avec ACK (seq’ = y+1)
Dans la description de l’entête nous avons vu que le numéro de séquence est une variable qui est incrémentée à chaque envoi. Il y a donc deux variables de ce type (seq et seq’) qui sont chacune incrémentées par soit le récepteur soit l’émetteur.
Clôture
Il existe deux modes de clôture :
-la clôture canonique
-la clôture abrupte
Etudions tout premièrement la première forme :
A la différence de l’ouverture la fermeture nécessite non pas trois mais quatre envois. En effet comme expliqué plus tôt le TCP est en mode «full-duplex » ce qui signifie que les données circulent indépendamment dans les deux sens ce qui nécessite la fermeture indépendante de la connexion dans les deux sens.
1°) L’application qui souhaite arrêter l’envoi des données envoie un paquet avec le drapeau FIN
2°) La machine distante doit une fois le paquet reçu envoyer un paquet d’acquittent de ce dernier en incrémentant de 1 le numéro de séquence.
La connexion est véritablement terminée quand les deux applications ont effectuées ces étapes. Il faut donc un échange de quatre paquets au minimum.
Remarque : Sur le schéma on voit que le récepteur continue à envoyer des données bien que l’émetteur ait fermé la connexion (dans son sens).
Cette possibilité a son utilité, notamment dans le cas de traitements distants qui doivent s’accomplir une fois toutes les données transmises, comme par exemple pour un tri.
La clôture abrupte :
Au lieu d’échanger 4 paquets et pour terminer au plus vite la connexion : un mécanisme de reset va être mis en place.
Ce type de fermeture entièrement gérée par le protocole TCP est utilisé après l’appel de la fonction close ou abort ou après avoir rencontré une exception non prise en compte (« core dump »)
Cette fois la procédure est beaucoup plus simple :
1°) L’extrémité (émetteur ou récepteur) qui arrête brutalement la connexion émet un paquet contenant le drapeau RST. Ce paquet clôt l’échange. Il est à noter que ce paquet n’est pas acquitté.
2°) L’extrémité (celle qui n’a pas arrêté la connexion de manière brutale) qui reçoit le paquet transmet à l’application un message d’erreur du type « connection reset by peer ». Comme ce paquet était le dernier échangé : les données à transmettre à l’application sont détruites.
Contrôle du transport
Sur ce schéma nous pouvons remarquer que lors de l’envoi du paquet i une horloge est lancée, elle permet de fixer une échéance à l’envoi du paquet. Si cette échéance est dépacée alors le paquet est renvoyé. Cette échéance est réglée par une valeur MSL (maximum segment lifetime) définie par l’application. Le temps maximum avant la réémission d’un paquet est donc de 2MSL.
La flèche correspondant à RTT représente le temps écoulé entre l’envoi et la réception de l’acquittement. Il faut impérativement que RTT soit inférieur à 2MSL.
Si on utilise cette méthode : attendre l’acquittement du paquet avant d’en envoyer un autre on sous utilise la bande passante, c’est-à-dire le débit disponible, c’est pour cela que TCP propose un service de fenêtrage qui permet d’attendre les accusés de réception de plusieurs paquets simultanément.
Au poste récepteur, le protocole TCP assemble le segment en message complet. Si un numéro de séquence est absent de la série, le segment correspondant est transmis de nouveau. Les segments qui ne font pas l'objet d'un accusé de réception dans un délai donné sont retransmis.
Ici l’émetteur numérote puis envoi plusieurs paquets consécutivement, de son côté de récepteur attend ces paquets et les acquittent dès leur réception. L’émetteur reçoit alors le premier accusé de réception et envoie le paquet suivant. Le récepteur assemble les segments qu’il reçoit en un message complet. En cas d’absence d’un datagramme le récepteur ne retourne pas d’accusé de réception, une fois le délai écoulé le serveur réémet le paquet manquant.
Ce mode de fonctionnement propose une bien meilleure gestion de la bande passante, et désengorge le réseau : l’envoi des paquets n’est plus limité par le temps d’acquittement mais par la taille de la fenêtre et de la bande passante disponible. Cette fenêtre est le nombre de paquets envoyées et en attente d’accusés de réception.
De plus, la taille de cette fenêtre n'est pas fixe. En effet, le serveur peut inclure dans ses accusés de réception en stockant dans le champ fenêtre la taille de la fenêtre qui lui semble la plus adaptée. Ainsi, lorsque l'accusé de réception indique une demande d'augmentation de la fenêtre, le client va déplacer le bord droit de la fenêtre.
Sur le schéma ci-dessous la fenêtre représentée par la partie colorée est cadrée sur les parquets 2, 3 et 4 ceci signifie que ces paquets on été envoyés et sont en attente de réception d’un accusé de réception.
Suivant le temps la fenêtre se décale au fur et à mesure de la réception des accusées de réception.
Durant la 3ème étape de la bande passante supplémentaire est disponible et le protocole décide d’agrandir la taille de la fenêtre.
Par contre, dans le cas d'une diminution, le client ne va pas déplacer le bord droit de la fenêtre vers la gauche mais attendre que le bord gauche avance (avec l'arrivée des accusés de réception).
De même la fenêtre se décale au fur et à mesure de la réception des accusés de réception mais à la 3ème étape la bande passante disponible diminue et le protocole décide de réduire la fenêtre.
La taille de la fenêtre ou les données mises dans les paquets sont régulées par différents algorithmes comme celui de Nagle, slow start, etc. Ces algorithmes s’autorégulent en fonction de l’état du réseau. Les applications qui utilisent TCP peuvent en faire différents usages afin d’obtenir le comportement voulu.
c) TCP – les avantages
The main advantages of TCP are:
It’s free. You can create your own applications using TCP for free
It’s a standard: if you follow the RFC everybody could understand how your application work.
Available on every kind of system like desktops, laptops, workstations, super clusters, consoles, ...)
Easy to install
It’s very flexible, includes numerous applications
Well standardised and documented
It’s simple, efficient and has existed for a long time so it’s safer.
It is connection-oriented (a telephone like service) because there is a connection between the two peers.
It’s reliable: guarantees delivery of data, it’s one of the most important points.
It’s offer lots of flow control options.
It’s the basis of many others protocols (http https stmp imap telnet etc)
d) TCP – les inconvénients
TCP is restrictive : you can set few socket options, but beyond that you have to tolerate the built in flow control.
Tcp may have lots of features you don't need. it may waste bandwidth, time, or making the server busier than is necessary.
Tcp ACKs waste too much bandwidth, and make often latency.
Tcp cannot be used for broadcast or multicast transmission because of this overly poor throughput.
Tcp cannot conclude a transmission without all data in motion being explicitly acked.
III) Comparaison entre les deux protocoles
You may want to use TCP if:
- You need a reliable delivery.
- The data sent could be sent again if packets are lost or bad data.
- TCP options and qualities (like reliable delivery, retransmissions of lost packets, re-ordering, flow control etc) are good for your application
You may want to use UDP if:
- Delays introduced by ACKs are unacceptable
- TCP congestion avoidance and flow control measures are unsuitable for your application
- You want more control of how your data is transported over the network
- You need a highly delay/jitter ratio.
- Audio-video conferencing etc
Traduction :
Vous devriez utiliser TCP si :
- Vous devez envoyer les données de façon sûre
- Les données envoyée doivent être ré émises en cas de perte ou de paquet défectueux
- Les options et les services (comme le transfère sûr de données, les retransmission, la reconstruction du flux de données à l'identique (car les données ont été séparées parmi les plusieurs paquets), le contrôle de flux etc) offerts par TCP sont utilisés par votre application.
Vous devriez utiliser UDP si :
- les délais provoqués par les accusés de réception sont trop pénalisants
- les contrôles de flux (anti congestions par exemple) vous gênent
- vous voulez contrôler les flux de données vous même (notamment au niveau des routeurs)
- si vous désirez une rapport délais/balance élevé
- pour ce qui est du streaming audio et vidéo.
b)TCP et UDP dans le monde réel
Les protocoles Tcp et Udp sont les plus utilisés en ce qui concerne les communications entre les programmes à travers Internet. Ces protocoles sont présents dans le navigateur, le client de messagerie, le logiciel de messagerie instantanée, les jeux en réseau, les programmes de mise à jour, les programmes de partage de fichiers, etc.
Le programmes n'utilisent pas toujours le protocole directement, souvent il y a une couche intermédiaire entre le protocole TCP ou UDP et l'application. De la meme manière, que TCP ou UDP servent d'intermédiaire entre l'application et le protocole IP. Aussi de nombreux protocoles on été crées afin de faciliter le developpement des applications en réseau :
pour la navigation internet on été crées les protocoles HTTP et S-HTTP, ils sont basées sur le TCP. Et utilisé dans les navigateurs internet comme essentiellement
STMP, POP3 et IM
AP4 sont des protocoles utilisés pour transmettre des courriels, eux aussi basés sur TCP ils sont utilisés par des clients de messagerie, certains appareils mobiles comme les téléphones cellulaires peuvent offire cette fonction de meme que certains navigateurs interet.
FTP est quant à lui un protocole conçu pour transmettre des fichiers par le biais du réseau. Il est basé sur TCP, est utilisé par les clients FTP et certains navigateurs.
TELNET et SSH sont des protocoles utilisés pour transmettre des commandes sur des machines distantes, il sont basés sur TCP. L'un est crytpé et ils sont utilisés par des programmes de commande à distance comme puTTY ou le shell UNIX.
DNS est un protocole basé sur UDP permettant d'obtenir la correspondance entre une adresse IP et un nom de domaine. On peut tester DNS grâce à l'invite de commande :
(cliquez pour agrandir)
- TFTP, il s'agit de la même utilisation que pour FTP sauf que TFTP est basé sur TCP et laisse à l'application le soin de vérifier l'intégrité des données.
DHCP, basé sur Udp il permet d'attribuer dynamiquement les adresses IP aux differentes machines du réseau afin de ne pas avoir de conflicts.
SNMP est un protocole de communication qui permet aux administrateurs réseau de gérer les équipements du réseau, superviser et de diagnostiquer des problèmes réseaux, matériels à distance. Il est basé sur UDP.
Cette liste n'est pas exhaustive, elle permet juste de montrer la richesse des protocoles UDP et TCP. Il arrive aussi aux applications de gérer les protocoles UDP et TCP directement, c'est souvent le cas dans le domaine des jeux vidéo ou dans le cas d'un application utilisant un système de paquets évolué.
IV)Perspectives d'avenir entre les deux protocoles
Avec l'avènement des nouvelles technologies comme Ipv6 ou la fibre optique les protocoles TCP et UDP vont devoir évoluer.
Premièrement, prenons le cas de la fibre optique, c'est une technologie qui permet d'obtenir des débits très importants (de l'ordre de plusieurs Gbit/s), elle ne va affecter que la première couche du réseau : la couche physique. Or les protocoles TCP et UDP ne se situent que sur les couches supperieures à la 3ème donc ils ne seront pas affectés par ce changement. En revanche les programmeurs pourrons mettre au point de nouveaux algorithmes qui tirerons plus profit du débit.
Voyons maintenant le cas de l'IPv6, il s'agit enfait d'une nouvelle version du protocole IP (actuellement en version 4), cette technologie propose des adresse codées en hexadécimal, les datagrammes sont aussi plus gros (128bits). Bien que indépendant de TCP ou UDP il va y avoir plus de changement que pour la fibre optique. En effet les applications actuelles vont devoir êtres mise à jour afin de communiquer avec des adresses IP en hexadécimal.
Enfin une innovation plus lointaine mais non sans importance : l'émmergence du web 3.0 ou web sémantique. Avec cette arrivée, le réseau va subbir de très importantes modifications physiques acompagnées d'une réorganisation (notament des couches du réseau) qui vont remettre en cause l'existance de tels protocoles. En effet le « net » sera bien plus sûr et de nouveau protocoles vont être développés et UDP mais surtout TCP vont tomber en désuétude.
En résumé les protocoles TCP et UDP on encore de nombreuses années (entre 10 et 15 ans) d'existance. Ils seront capables de tirer parti des nouvelles technologies et évoluer au rythme d'Internet au sens où nous le connaissons actuellement. Puis ils seront remplacés par d'autres protocoles plus efficaces et plus adaptés.
V) Conclusion
What are the advantages and drawbacks of the TCP and UDP network protocols?
To sum up TCP and UDP are two protocols based on the IP but they offer different services. UDP is a light, fast, and allows the user to send lots of data without overloading the network. On the contrary TCP have been created to send data slower but safer than UDP. It allows many flow control options. Both protocols are extremely used because they are convenient, simple to install and adapt and run on most systems. It's up to the programmer to choose which on of these two protocols he wants to use according to his needs.
Now, on the one hand we could focus on the IP protocol and its alternatives like the ATM or on the other hand the opposition between datagram and commuted models.
Quels sont les principaux avantages et inconvénients des protocoles réseaux TCP d'une part et UDP d'autre part.?
En résumé TCP et UDP sont deux protocoles basés sur le protocole IP mais offrant différents services. UDP est léger, rapide et permet à l'utilisateur d'envoyer de gros volumes de données sans surcharger le réseau. Au contraire TCP a été créé pour envoyer des données de façon sûr mais plus lentement que UDP. Il offre aussi de nombreuses options de contrôle des flux. Ces deux protocoles sont extrêmement utilisés car ils sont pratiques, faciles à installer et adapter au réseau et marchent sur la plupart des systèmes.Il appartient au programmeur de choisir lequel de ces deux protocoles il va choisir en fonction de ses besoins.








