Autor: Martin Kvietok, Slovenská technická univerzita v Bratislave
Tento projekt je semestrálnou úlohou zameranou na návrh a implementáciu P2P aplikácie využívajúcej vlastný protokol postavený nad UDP (User Datagram Protocol). Aplikácia umožňuje komunikáciu medzi dvoma účastníkmi v lokálnej Ethernet sieti, vrátane:
- výmeny textových správ,
- prenosu ľubovoľných súborov.
Každý uzol funguje súčasne ako prijímač aj odosielateľ.
- Podpora fragmentácie veľkých správ do menších častí podľa nastavenej maximálnej veľkosti fragmentu (MTU).
- Riadenie prostredníctvom flagov (e.g., More Fragments, Final).
- Použitie algoritmu CRC16-CCITT na výpočet kontrolného súčtu (checksum).
- Validácia integrity dát na prijímacej strane.
- Implementácia mechanizmu Selective Repeat ARQ (SR ARQ).
- Dynamické nastavenie veľkosti okna na základe kvality prenosu.
- Mechanizmus pravidelného overovania aktívneho spojenia.
- Automatické ukončenie spojenia po opakovanej neaktivite.
- Tzv. 3-way handshake na začatie aj ukončenie komunikácie.
Protokol obsahuje nasledujúce hlavné časti:
- Sequence Number (32b): Určuje poradie paketov.
- Acknowledgment Number (32b): Potvrdzuje prijaté pakety.
- Flags (8b): Rôzne riadiace flagy (SYN, ACK, PSH, FIN, KA, ERR).
- Checksum (16b): Na kontrolu integrity dát.
- Options (8b): Voliteľné nastavenia (napr. More Fragments, Don’t Fragment).
- Window (16b): Veľkosť prenosového okna.
- Data (0–1458B): Prenášané dáta.
- Peer1 posiela SYN paket s inicializačným sekvenčným číslom.
- Peer2 odpovedá SYN-ACK paketom s vlastným sekvenčným číslom a potvrdením.
- Peer1 posiela ACK na potvrdenie spojenia.
- Fragmentácia a odosielanie po častiach s kontrolou integrity a potvrdením.
- Použitie 3-way handshake mechanizmu s FIN flagmi.
- Bezchybné prenosy: Spoľahlivo prenášané správy a súbory.
- Prenosy s chybami: Mechanizmus SR ARQ zabezpečuje opätovné odoslanie chybne prijatých fragmentov.
- Analýza v nástroji Wireshark: Validácia protokolu a vizualizácia komunikácie.