TCP
(Transmission Control Protocol)
TCP traite les données octets par octets et formate les données en segments de
longueur variable (MTU). TCP fonctionne en mode connecté (au PC distant) et s'assure que les segments de données ont bien été transmis et reçus avant de se déconnecter. Chaque octet transmis est numéroté (séquencement des données) et l'application distante émet un acquittement pour chacun des octets transmis (ACK). TCP assure donc une fiabilité de bout en bout entre les applications, assure le contrôle de flux, et le multiplexage
(TCP peut établirent plusieurs connexions en même temps sur des ports différents
en full-duplex).
Un client TELNET émet une requête de service. Son système lui attribue le port 1563. Il émet la requête sur le réseau. La machine serveur reconnaît l'appel et transmet la requête au serveur TELNET sur le port normalisé 23. Si la requête est acceptée, la connexion est établie sur un port de travail xxxx, ce qui libère le port d'écoute (23) pour recevoir une nouvelle requête.
Le fichier 'c:\windows\services' contient les noms officiels des services et les ports réservés associés. Un service se caractérise par son nom, un numéro de port et un protocole.
ftp 21/tcp
telnet 23/tcp
tftp 69/udp
........
Voir également le fichier 'c:\windows\protocol' (liste des protocoles).
UDP
(User Data Protocol)
UDP fonctionne en mode non-connecté et n'assure pas de remise dans l'ordre des segments. Il ne possède pas les fonctions avancées de TCP, tout au plus il a un contrôle d'erreur réduit.
UDP est un protocole dit "non-fiable" mais plus rapide que
TCP. UDP ne peut pas établir de connexion. Pour envoyer des données par UDP, on les encapsule dans un datagramme IP avec un
en-tête UDP. La couche IP envoie alors les données UDP en un seul datagramme, sauf si on requiert une fragmentation. UDP ne séquence pas les données et elles peuvent parfois arriver en ordre dispersé. Les programmes qui ont besoin de données séquencées devront utiliser le protocole TCP. Cependant dans un réseau local (LAN), les délais étant court, il est peu probable que les données n'arrivent pas dans l'ordre.
UDP est utile pour des applications orientées commande/réponse dont les données tiennent dans un seul datagramme. Ce protocole est moins lourd que TCP car il ne nécessite pas d'ouverture, de maintien et de fermeture de connexion, ce qui en fait aussi un protocole plus rapide, plus simple mais moins robuste, moins sécurisé.
UDP est aussi très pratique pour ce qui est diffusion ou multidiffusion (broadcast); imaginer se connecter à 1000 machines pour un broadcast !!!
UDP possède un mécanisme rudimentaire de contrôle d'erreur
UDP comme TCP fonctionne avec des ports pour identifier les processus
UDP est orienté datagrammes; pas d'ouverture, maintien et fermeture de connexion
UDP ne séquence pas les données
De nombreuses applications reposent sur UDP :
TFTP (Trivial File Transfer Protocol)
DNS (Domain Name System)
NFS (Network File System)
SNMP (Simple Network Management Protocol)
RIP (Routing Information Protocol)
Note : certains protocole peuvent s'appuyer sur TCP et UDP (NetBIOS,etc...)
Mode Connecté : dans ce mode un chemin de communication est établi au départ avant tout transfert de données. Ce chemin reste le même pendant toute la durée de la communication, avec des contrôles assurant la fiabilité de la liaison. Le transferts de données se fait donc selon un mode flot d'octets. Analogie avec le téléphone.
Mode non-connecté : dans ce mode il n'y a pas établissement préalable d'une connexion. Le chemin n'est pas unique tout au long de la transmission et il n'y a pas de contrôle. Le transferts de données se fait par paquets (datagramme) et chaque paquets est traité indépendamment des autres. Analogie au courrier.