Skip to content

0MarrkvI0/P2P_communicator_PKS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FIIT STU ZS 2024: Počítačové a komunikačné siete

Téma: Komunikácia s využitím UDP protokolu

Autor: Martin Kvietok, Slovenská technická univerzita v Bratislave


Popis projektu

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ľ.


Hlavné funkcie protokolu

Fragmentácia dát

  • 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).

Zabezpečenie integrity dát

  • Použitie algoritmu CRC16-CCITT na výpočet kontrolného súčtu (checksum).
  • Validácia integrity dát na prijímacej strane.

Spoľahlivý prenos dát

  • Implementácia mechanizmu Selective Repeat ARQ (SR ARQ).
  • Dynamické nastavenie veľkosti okna na základe kvality prenosu.

Udržanie spojenia (Keep-alive)

  • Mechanizmus pravidelného overovania aktívneho spojenia.
  • Automatické ukončenie spojenia po opakovanej neaktivite.

TCP-like handshake pre nadviazanie a ukončenie spojenia

  • Tzv. 3-way handshake na začatie aj ukončenie komunikácie.

Štruktúra protokolu

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.

Procesy

Nadviazanie spojenia (3-way handshake)

  1. Peer1 posiela SYN paket s inicializačným sekvenčným číslom.
  2. Peer2 odpovedá SYN-ACK paketom s vlastným sekvenčným číslom a potvrdením.
  3. Peer1 posiela ACK na potvrdenie spojenia.

Prenos dát

  • Fragmentácia a odosielanie po častiach s kontrolou integrity a potvrdením.

Ukončenie spojenia

  • Použitie 3-way handshake mechanizmu s FIN flagmi.

Testovanie a výsledky

  • 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.

About

Python CLI application for peer-to-peer communication over UDP with a custom protocol design. (subject PKS)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published