Introduction
Ce projet consiste a developper une application reseau simple en C utilisant l'API socket pour explorer les fonctionnalites des protocoles UDP et TCP. L'objectif est de comprendre comment ces protocoles gerent la transmission de messages dans un environnement reseau, en se concentrant sur les differences en termes de fiabilite, de livraison des messages et de gestion des connexions.
Dans ce TP, nous avons explore les differences fondamentales entre les protocoles UDP et TCP en utilisant l'application tsock dans un environnement Linux. L'objectif etait d'observer comment chaque protocole gere la transmission de donnees, la fiabilite et l'etablissement de connexion.
Partie 1 : Comparaison UDP et TCP
Transmission UDP :
Configuration :
Sur le Terminal 1 (agissant comme serveur ou recepteur), nous avons demarre un socket UDP ecoutant sur le port 9025 avec une taille de tampon de 10 octets en utilisant la commande : tsock -p -u -t 10 9025
Introduction
This project involves developing a simple network application in C using the socket API to explore the functionalities of UDP and TCP protocols. The goal is to understand how these protocols handle message transmission in a networked environment, with focus on the differences in reliability, message delivery, and connection handling.
In this lab, we explored the fundamental differences between the UDP and TCP protocols using the tsock application in a Linux environment. The objective was to observe how each protocol handles data transmission, reliability, and connection establishment.
Part 1: Comparing UDP and TCP
UDP Transmission:
Setup:
On Terminal 1 (acting as the server or sink), we started a UDP socket listening on port 9025 with a buffer size of 10 bytes using the command: tsock -p -u -t 10 9025
Sur le Terminal 2 (agissant comme client ou source), nous avons envoye 20 messages au serveur en utilisant : tsock -s -u -n 20 insa-20661 9025
Observation : Sur 20 messages envoyes, seuls 13 ont ete recus. Le tampon d'application cote recepteur est devenu sature car il traitait les messages plus lentement qu'ils n'arrivaient.
On Terminal 2 (acting as the client or source), we sent 20 messages to the server using: tsock -s -u -n 20 insa-20661 9025
Observation: Out of 20 messages sent, only 13 were received. The application buffer on the receiver's side became saturated because it processed messages slower than they arrived.
Conclusion : UDP est un protocole sans connexion, sans mecanismes de controle de flux ou de correction d'erreurs. Des pertes de paquets sont survenues en raison d'un debordement de tampon au niveau de l'application. UDP ne garantit ni la livraison des messages, ni l'ordre, ni l'integrite.
Transmission TCP :
Configuration : Sur le Terminal 1, nous avons demarre un socket TCP ecoutant sur le port 9025 avec une taille de tampon de 20 octets : tsock -p -t 20 9025
Conclusion: UDP is a connectionless protocol without mechanisms for flow control or error correction. Packet loss occurred due to buffer overflow at the application level. UDP does not guarantee message delivery, order, or integrity.
TCP Transmission:
Setup: On Terminal 1, we started a TCP socket listening on port 9025 with a buffer size of 20 bytes: tsock -p -t 20 9025
Observation : Les 20 messages ont ete transmis et recus avec succes. Aucune perte de paquets n'est survenue et les messages sont arrives dans l'ordre.
Conclusion : TCP est un protocole oriente connexion qui etablit une connexion avant le transfert de donnees. Il fournit la fiabilite grace aux acquittements, retransmissions et controle de flux. TCP assure l'integrite des donnees et la livraison ordonnee.
Partie 2 : Test du comportement des protocoles sans ports ouverts
Refus de connexion TCP :
La tentative d'envoi de messages a un port TCP sans socket en ecoute a resulte en une erreur "connexion refusee". Cela confirme que TCP necessite un recepteur actif pour etablir une connexion.
Observation: All 20 messages were successfully transmitted and received. No packet loss occurred, and messages arrived in order.
Conclusion: TCP is a connection-oriented protocol that establishes a connection before data transfer. It provides reliability through acknowledgments, retransmissions, and flow control. TCP ensures data integrity and ordered delivery.
Part 2: Testing Protocol Behavior Without Open Ports
TCP Connection Refusal:
Attempting to send messages to a TCP port without a listening socket resulted in a "connection refused" error. This confirms that TCP requires an active listener to establish a connection.
Gestion des messages UDP :
L'envoi de messages a un port UDP ferme n'a pas produit d'erreurs cote emetteur. Les messages ont ete envoyes sur le reseau, mais le recepteur ne les a pas traites. UDP ne verifie pas la presence de recepteurs actifs avant d'envoyer des donnees.
UDP Message Handling:
Sending messages to a closed UDP port did not produce errors on the sender's side. The messages were sent into the network, but the receiver did not process them. UDP does not check for active listeners before sending data.
Partie 3 : Capture et analyse du trafic reseau
Utilisation de tcpdump pour surveiller le trafic. Connexion a une machine de surveillance en utilisant : ssh tcpdump@insa-20673. Demarrage de la capture de paquets sur le port 9025 : sudo tcpdump 9025
Observations avec UDP :
Les messages etaient visibles dans la capture, montrant les adresses IP et ports source et destination. Aucune phase d'etablissement de connexion n'a ete observee. Les paquets contenaient les donnees utiles mais manquaient de mecanismes de fiabilite.
Part 3: Capturing and Analyzing Network Traffic
Using tcpdump to Monitor Traffic. Connected to a monitoring machine using: ssh tcpdump@insa-20673. Started packet capture on port 9025: sudo tcpdump 9025
Observations with UDP:
Messages were visible in the capture, showing source and destination IP addresses and ports. No connection establishment phase was observed. Packets contained the data payload but lacked reliability mechanisms.
Observations avec TCP :
Poignee de main a trois voies :
- Paquet SYN envoye du client au serveur pour initier la connexion.
- Paquet SYN-ACK envoye du serveur au client pour acquitter le SYN.
- Paquet ACK envoye du client au serveur pour completer la poignee de main.
Transfert de donnees : Les paquets de donnees ont ete envoyes avec des paquets d'acquittement confirmant la reception. Des drapeaux tels que [P.], [FP.] et [F.] indiquaient differentes etapes du transfert de donnees et de la terminaison de connexion.
Terminaison de connexion : Arret gracieux observe avec des ACK finaux echanges entre client et serveur.
Observations with TCP:
Three-Way Handshake:
- SYN packet sent from client to server initiating the connection.
- SYN-ACK packet sent from server to client acknowledging the SYN.
- ACK packet sent from client to server completing the handshake.
Data Transfer: Data packets were sent with acknowledgment packets confirming receipt. Flags such as [P.], [FP.], and [F.] indicated different stages of data transfer and connection termination.
Connection Termination: Graceful shutdown observed with final ACKs exchanged between client and server.
Partie 4 : Capture et analyse du trafic reseau
Capture de trames Ethernet brutes en utilisant : sudo tcpdump -xx 9025
Structure de la trame : Adresse MAC destination (6 premiers octets), Adresse MAC source (6 octets suivants), EtherType (2 octets suivants indiquant le protocole, ex : IPv4).
Details du paquet IP : Champ protocole (9e octet) : 06 pour TCP, 17 pour UDP. Adresses IP source et destination : 4 octets chacune. Numero de port source : 2 octets.
Part 4: Capturing and Analyzing Network Traffic
Captured raw Ethernet frames using: sudo tcpdump -xx 9025
Frame Structure: Destination MAC Address (first 6 bytes), Source MAC Address (next 6 bytes), EtherType (following 2 bytes indicating the protocol, e.g., IPv4).
IP Packet Details: Protocol Field (9th Byte): 06 for TCP, 17 for UDP. Source and Destination IP Addresses: each 4 bytes in length. Source Port Number: 2 bytes.
Partie 5 : Exploration du trafic de diffusion
Capture de messages de diffusion avec : tcpdump -xx broadcast
Observation : L'adresse IP de destination etait 169.254.255.255, representant l'adresse de diffusion. Les messages envoyes a cette adresse sont recus par toutes les machines du reseau local.
Conclusion : La diffusion permet une communication avec tous les noeuds simultanement. Utile pour des services comme la decouverte de reseau et les annonces.
Part 5: Exploring Broadcast Traffic
Captured broadcast messages with: tcpdump -xx broadcast
Observation: Destination IP address was 169.254.255.255, representing the broadcast address. Messages sent to this address are received by all machines on the local network.
Conclusion: Broadcast allows communication with all nodes simultaneously. Useful for services like network discovery and announcements.
Conclusion
Ce projet a explore les differences fondamentales entre les protocoles UDP et TCP, en pratiquant la creation de sockets et la gestion de la communication machine a machine en C. Nous avons observe les avantages et inconvenients de chaque protocole, notamment la vitesse d'UDP mais l'absence de garanties de livraison, contre la fiabilite de TCP et sa gestion des erreurs. De plus, l'utilisation de tcpdump nous a permis d'analyser le trafic reseau et de mieux comprendre les mecanismes de transmission, tels que la poignee de main TCP et la structure des trames Ethernet. Ce projet a fourni une base solide pour comprendre les defis de la communication reseau dans les environnements distribues.
Conclusion
This project explored the fundamental differences between UDP and TCP protocols, practicing socket creation and machine-to-machine communication management using C. We observed the advantages and disadvantages of each protocol, including UDP's speed but lack of delivery guarantees, versus TCP's reliability and error handling. In addition, using tcpdump allowed us to analyze network traffic and better understand transmission mechanisms, such as TCP handshake and Ethernet frame structure. This project provided a solid foundation for understanding the challenges of network communication in distributed environments.