Bună ziua!
Aș dori să împărtășesc comunității câteva gânduri interesante despre crearea unui serviciu de e-mail autonom și descentralizat și să demonstrez în practică funcționarea unei implementări existente.
Inițial, «Telegraph» a fost dezvoltat ca un mijloc de comunicare amateur între membrii comunității noastre mici de studenți, care, într-un fel sau altul, și-au dedicat activitatea domeniului calculatoarelor și comunicațiilor.
Nota Bene: «Telegraph» este un mijloc de comunicare pentru amatori; extragerea de beneficii practice la scară industrială se dovedește a fi destul de problematică, totuși această problemă nu poate fi cu adevărat considerată semnificativă — în principal, considerăm că scopul nostru principal este de a atrage atenția asupra dezvoltării unui astfel de sistem de comunicație.
Tindem să credem că creșterea interesului general pentru dezvoltarea diferitelor sisteme de comunicație este un lucru necesar și foarte important, deoarece înțelegerea principiilor de bază ale funcționării și fundamentului acestor sisteme este cheia pentru sporiterea conștientizării cetățenilor în ceea ce privește securitatea informațională.

Achtung!Pentru a evita eventualele neînțelegeri — în unele cazuri, imaginile pot fi deruland:

Sistemul se bazează pe inițiative voluntare și pe purul entuziasm — pur și simplu ne place ceea ce facem. Puteți considera asta un hobby și nu veți greși — deoarece încă există pasionați de comunicarea prin corespondență pe hârtie; «Telegraph» poate fi în marea majoritate a cazurilor privit ca o realizare digitală a principiilor funcționării poștei obișnuite.
«Telegraph» este un analog autonom al e-mailului, care permite transmiterea de mesaje text simple fără utilizarea internetului. «Telegraph» poate fi asociat într-o oarecare măsură cu — metoda de schimb de informații fără utilizarea rețelei.
Flash drive-urile sunt folosite ca cutii poștale, iar terminalele — computerele, funcționează ca birouri poștale, reprezentând puncte de acces pentru primirea și transmiterea corespondenței electronice.
Să analizăm un exemplu simplu de interacțiune cu sistemul. Avem două stick-uri USB și un terminal. În script sunt definite variabilele globale necesare pentru interacțiunea ulterioară cu sistemul – numărul terminalului, calea către rădăcină și alte detalii.
Dacă conectăm un dispozitiv de stocare extern la terminal și rulăm scriptul, acesta va încerca să obțină mesajele de ieșire din directorul /mnt/Telegraph/Outbox și să le transfere în memoria sa, după care va verifica existența unor mesaje noi în memorie pentru utilizatorul curent. Dacă acestea există, le va scrie în /mnt/Telegraph/Inbox.
Înregistrarea de noi dispozitive
Decurge destul de simplu. Scriptul găsește noi stick-uri USB conectate la sistem și încearcă să le asocieze identificatoarele unice cu cele prezentate în rădăcină. Dacă dispozitivele nu au fost înregistrate anterior, acestea vor fi formatate conform regulilor stabilite de „Telegraf”.
După înregistrarea noului dispozitiv, structura rădăcinii ia următoarea formă:
În fișierul de configurare config.ini, situat în rădăcina stick-ului USB, se află informații sistematice – identificatorul unic și cheia secretă.
Dați-le oamenilor rom!
Nu, serios! Poți obține sursele , iar noi deja ar trebui să trecem de la teorie la practică.
Dar trebuie să mai spun câteva cuvinte despre cum este organizat în mod practic sistemul de schimb de mesaje.
Pentru început, să înțelegem din ce este format identificatorul unic de unsprezece cifre. De exemplu, 10455000001.
Prima cifră, 1, corespunde numărului țării. Codul internațional este – 0, Rusia în acest caz este – 1.
Apoi urmează patru cifre care corespund numărului regiunii în care se află terminalul. 0455 – acesta este Districtul Urban Kolomna.
Urmează două cifre, – 00, – care corespund direct numărului terminalului.
Și doar apoi – patru cifre care reprezintă numărul ordinal al utilizatorului asociat cu acest terminal. La noi acest număr este – 0001. De asemenea, există și 0000 – acest număr aparține direct terminalului. Nu se poate trimite corespondență scrisă pe el, dar terminalul folosește acest număr pentru a trimite mesaje administrative utilizatorilor, de exemplu, dacă un mesaj nu a fost livrat din diverse motive.
În rădăcina „căsuței poștale” se află două directoare necesare pentru a primi și trimite mesaje text. Atunci când un dispozitiv se conectează la terminal, din directorul „Outbox” sunt expediate mesajele outgoing, iar în directorul „Inbox”, ceea ce este logic, se încarcă mesajele incoming.
Fiecare fișier este denumit în funcție de numărul destinatarului sau expeditorului, în funcție de director.
Dacă încercăm să trimitem un mesaj către un destinatar inexistent, terminalul ne va trimite un mesaj de eroare.
Cu toate acestea, dacă decidim să trimitem o scrisoare către un destinatar aflat pe un alt terminal (indiferent dacă acesta există sau nu), aceasta va fi înregistrată în memoria terminalului până când agentul nu va transfera corespondența scrisă de pe terminalul nostru pe al său.
Când agentul oficiului 10500000000 (în alte cuvinte — poștașul) își va conecta dispozitivul la terminalul nostru, scrisorile outgoing vor fi transferate pe unitatea sa de stocare. Ulterior, când acesta își va conecta dispozitivul la terminalul său, aceste scrisori vor fi descărcate în memoria terminalului și vor aștepta ca destinatarul să le transfere pe unitatea sa flash.
Sesiunea de comunicație
Să încercăm să transmitem un mesaj cu textul „Bună!” de la 10455000001 la 10455000002.
Asta e tot!
Aș fi recunoscător pentru orice critică referitoare la codul sursă al proiectului și la articolul în sine.
Vă mulțumesc pentru atenție.
Sursa: habr.com
