Modul obișnuit de a specifica programul pe care dorim să ruleze, este de a specifica numele său în sistemul de fișiere, de exemplu: C: \ WinNT \ System32 \ cmd.exe sau \\ server \ Jocuri \ Tetris \ tet.exe.
Cu toate acestea, aceste nume simbolice au un dezavantaj semnificativ: ele nu sunt unice. Cum ar trebui, de fapt, dezvoltatorul sistemului client-server să aleagă numele pentru componenta serverului dacă există riscul ca dezvoltatorul unui alt sistem să aleagă același nume pentru propriile nevoi? Cum poate un administrator să administreze aceste două sisteme pe același server?
Aceeași problemă există nu numai în rețea, dar, de asemenea, la nivel intraengine: încercarea de dezvoltator de aplicații pentru a căuta o bibliotecă de legături dinamice (DLL), în numele directorului la nivel de sistem ar putea duce la ceea ce este încărcat din greșeală cu o bibliotecă cu același nume, dar instalat de un alt pachet și stocarea unui alt set de subrutine (cu altele sau chiar mai rău cu nume de potrivire). Această problemă ar putea fi evitată, dacă în bibliotecile din numele speciei „firma_produkt_komponent“, dar până când numele de tip StrUtil, MyUtil sau xBase pot fi găsite mult mai des.
Prin urmare, transferul de protocoale de control și de date într-o rețea de HTTP alternativ cu o suprastructură în formă de CGI-BIN, cum ar fi CORBA și Microsoft DCOM, componenta server de apel este efectuată nu prin nume de fișier și de GUID. GUID este un număr binar de 128 biți generat automat pe calculatorul de dezvoltare din următoarele componente:
Comoditatea lizibilitatea și zapominabelnosti noi nu vorbim, pentru că GUID nu trebuie să-l introduceți manual: un program client întotdeauna păstrează un software GUID-server fix interfață cu care a dezvoltat și în curs de dezvoltare GUID alocate pentru a crea componente, dacă nu în mod automat, prin intermediul unui tampon schimb de către Cut'n'Paste.
Corespondența dintre GUID și numele de fișier al programului lansat cu privire la cererile primite de la rețea este stocată undeva în setările la nivel de sistem, unde este introdusă în timpul instalării programului. De exemplu, în Windows, pentru aceasta se folosește filiala de registru HKEY_CLASSES_ROOT \ CLSID. și înregistrarea în acesta - utilitate RegSvr32. GUID-urile din Windows sunt atribuite nu numai serviciilor de rețea, ci în general tuturor lucrurilor care pot fi pornite sau încărcate și necesită o identificare clară: biblioteci DLL, clase etc.
Datorită faptului că rețeaua de partajare de fișiere este mai perfectă decât HTTP / FTP?
Rețeaua P2P este un sistem distribuit complet, adică:
- aceleași date sunt susținute pe un număr de noduri;
- lista de noduri este generată și actualizată automat;
- clientul poate de asemenea să selecteze automat nodurile pentru a primi datele;
- Când o parte din noduri eșuează, sistemul rămâne operațional.
În același timp, FTP / HTTP folosind doar informațiile despre fișier, care este furnizat pentru a le sistemul de fișiere pe care numele fișierului, dimensiunea, data creării și accesul ultimul - nici unul dintre aceste metadate nu sunt unice.
Din acest motiv, nici sistemele FTP de bază, nici sistemele distribuite HTTP de bază nu sunt. Același fișier sau pagină Web pot avea nume diferite pe noduri diferite. În schimb, diferite fișiere și pagini de pe noduri diferite pot fi numite în mod identic. Clientul nu are o modalitate fiabilă de a determina care noduri conțin datele solicitate. Și, așa cum am menționat deja, clienții FTP- / HTTP nu devin distributorii lor pe măsură ce primesc date și nu descarcă serverul original din solicitări. Desigur, crearea de oglinzile sincronizate automat cu site-ul original, dar operațiile manuale rămân ca și crearea unui site oglindă - pentru administrator și alegerea celei mai apropiate oglinzi - pentru utilizator.
Avion = mașină + aripi
Rămânând în cadrul protocoalelor FTP / HTTP de transmisie prin rețea, probabil că ar fi posibil să se atingă funcționalitatea P2P, făcând următoarele adăugiri la comportamentul clienților și serverelor:
- pe fiecare client, un server FTP / HTTP este pornit în fundal pentru a da fișiere altor clienți;
- un program adițional care rulează pe fiecare server calculează sumele de control pentru fișierele publicate și le scrie în fișiere descriptor de utilitate adiacente;
- împreună cu fișierele pe care le descarcă descriptorii;
- una sau mai multe computere îndeplinesc rolul de servere de căutare, adică scanează directoarele tuturor serverelor Web ca clienți și, la rândul lor, furnizează interfața Web, convenabilă pentru parsarea automată, la rezultatele căutării.
- înainte de descărcarea clienților descărca din baza de date a motorului de căutare cu informații despre fișierele în același timp, spun serverul despre existența sa (prin înregistrări, rămânând în log-file server sau notificări speciale prin CGI-BIN).
Evident, cu astfel de îmbunătățiri serioase mai ușor de a dezvolta un protocol complet nou și software-ul de la sol în sus, mai degrabă decât se agață de standardele existente - și care a fost făcut Napster'om, și l-au urmat, și multe altele.
Aeroport = avioane + tractoare
Întrebări pentru viitor
Dacă este o problemă a protocolului, atunci fiți interesați de următoarele aspecte:
- Am nevoie de un server de coordonare separat?
- Ce programe client îl acceptă?
- Cât de răspândite sunt clienții și serverele acestui protocol pe Internet?
- Pentru a transfera ce informații (multimedia, imagini ISO etc.), protocolul și programele de sprijin au fost dezvoltate pentru prima dată?
- Dezvoltarea protocolului este acest protocol și în ce măsură sunt compatibile?
- Există un protocol deschis sau un protocol de licențiere (care va duce la o gamă mai largă de programe)?
- Dacă protocolul este închis și este necesar un program de server separat, este posibil să vă conectați gratuit la nodurile serverului? Pot să-l descărc pentru a fi utilizat într-o rețea privată?
Aplicate la program, următoarele întrebări sunt importante:
- Ce protocoale suportă?
- Este gratuit (shareware, adware, open source)?
- Pe ce platforme se mișcă (ferestre, linux)?
Următoarea parte a articolului va fi dedicată răspunsurilor la aceste întrebări în legătură cu cele mai populare protocoale și programe P2P.