Implementarea Internetului In Retelele Fara Fir
CUPRINS
Cap. 1. Structuri și Modelele de Referință în Rețelele de Calculatoare
Subsisteme de Comunicație
1.1.1. Rețele locale
1.1.2. Rețele metropolitane
1.1.3. Rețele larg răspândite geographic
1.1.4. Rețele radio
1.2. Programele de Rețea
1.2.1. Ierarhiile de protocoale
1.2.2. Interfețe și servicii
1.2.3. Servicii orientate pe conexiune și servicii fara conexiune
1.3. Modelul de Referință OSI
1.4. Modelul de referință TCP/IP
Cap. 2. Nivelul Fizic
2.1. Viteza de Transmisie
2.1.1. Analiza Fourier
2.1.2. Semnale limitate de bandă de frecvență
2.1.3. Viteza maximă de transfer de date a unui canal
2.2. Mediul de Transmisie
2.2.1. Mediul magnetic
2.2.2. Cablu torsadat
2.2.3. Cablu coaxial in banda de baza
2.2.4. Cablu coaxial de banda larga
2.2.5. Fibra optică
2.3. Comunicațiile Fără Fir
2.3.1. Spectrul electromagnetic
2.3.2. Transmisia radio
2.3.3. Transmisia prin microunde
2.3.4. Undele infraroșii și milimetrice
2.4. Radio Celular
2.4.1. Sistemele Pager
2.4.2. Telefoanele fără fir
2.4.3. Telefoanele celulare analogice
2.4.4. Telefoanele celulare digitale
2.5. Sateliți de Comunicare
2.5.1. Sateliți geosincroni
2.5.2. Sateliți de joasă altitudine
Cap. 3. Subnivelul de Acces la Mediu
3.1. Protocoale pentru Rețelele LAN Fără Fir
3.2. Rețele de Sateliți
3.2.1. Interogare
3.2.2. ALOHA
3.2.3. FDM
3.2.4. TDM
3.2.5. CDMA
Cap. 4. Particularități ale Rețelelor Fără Fir la Nivelurile Rețea și Transport
4.1. Nivelul Rețea în Internet
4.1.1. Protocolul IP
4.1.2. Adrese IP
4.1.3. IP mobil
4.2. Nivelul Transport în Internet
4.2.1. TCP
4.2.2. Protocolul UDP
4.2.3. TCP și UDP fără fir
Cap. 5. Aplicația
5.1. Prezentare
5.2. Listingul Surselor
Cap. 6. Concluzii
6.1. Scopul Proiectului
6.2. Etapele Realizării Proiectului
Cap. 7. Bibliografie
CAP. 1. STRUCTURI ȘI MODELE DE REFERINȚĂ ÎN REȚELELE DE CALCULATOARE
1.1. Subsisteme de Comunicație
În principal există două tipuri de tehnologii de transmisie:
Rețele cu difuzare.
Rețele punct-la-punct (peer-to-peer).
Rețelele cu difuzare au un singur canal de comunicații care este partajat de toate mașinile din rețea. Orice mașină poate trimite mesaje scurte, numite în anumite contexte pachete, care sunt primite de toate celelalte mașini. Un câmp de adresă din pachet specifică mașina căreia îi este adresat pachetul. La recepționarea unui pachet, o mașină controlează câmpul de adresă. Dacă pachetul îi este adresat, mașina îl prelucrează; dacă este trimis pentru altă mașină pachetul este ignorat .
Sistemele cu difuzare permit în general și adresarea unui pachet către toate destinațiile, prin folosirea unui cod special în câmpul de adresă. Un pachet transmis cu acest cod este primit și prelucrat de toate mașinile din rețea. Acest mod de operare se numește difuzare. Unele sisteme cu difuzare suportă de asemenea transmisia la un subset de mașini, operație cunoscută sub numele de trimitere multiplă. Una din schemele posibile este să se rezerve un bit pentru a indica trimiterea multiplă. Restul de n-1 biți de adresă pot forma un număr de grup. O mașină se poate abona la orice grup sau la toate grupurile. Prin contrast, rețelele punct-la-punct dispun de numeroase conexiuni între perechi de mașini individuale. Pentru a ajunge de la sursă la destinație pe o rețea de acest tip, un pachet s-ar putea să fie nevoit să treacă prin una sau mai multe mașini intermediare.
1.1.1. Rețele Locale
Rețelele locale (Local Area Networks), denumite în general LAN-uri, sunt rețele private localizate într-o singură clădire sau într-un campus de cel mult câțiva kilometrii. Ele sunt frecvent utilizate pentru a conecta calculatoarele personale și stațiile de lucru din birourile companiilor și fabricilor, în scopul de a partaja resurse (imprimante de exemplu) și de a schimba informații. LAN-urile se disting de alte tipuri de rețele prin trei caracteristici:
Mărime.
Tehnologie de transmisie.
Topologie.
LAN-urile au dimensiuni restrânse, ceea ce înseamnă că timpul de transmisie în cazul cel mai defavorabil este limitat și cunoscut dinainte. Cunoscând această limită, este posibil să utilizăm anumite tehnici de proiectare care altfel nu ar fi fost posibile. Totodată, se simplifică administrarea rețelei.
Pentru LAN -urile cu difuzare sunt posibile diverse topologii. Figura 1.1 prezintă două dintre ele.
Într-o rețea cu magistrală (cu cablu liniar), în fiecare moment una dintre mașini este master și are dreptul să transmită. Restul mașinilor nu pot transmite. Când două sau mai multe mașini vor să transmită simultan, este necesar un mecanism de arbitrare. Mecanismul de arbitrare poate fi centralizat sau distribuit. De exemplu, IEEE 802.3, cunoscut ca Ethernet este o rețea cu difuzare bazată pe magistrală cu control descentralizat lucrând la 10 sau 100 Mbps. Calculatoarele dintr-un Ethernet pot transmite oricând doresc; dacă două sau mai multe pachete se ciocnesc, fiecare calculator așteaptă o perioadă de timp aleatorie și apoi încearcă din nou.
Un al doilea tip de rețea cu difuzare este rețeaua în inel. Într-un inel fiecare bit se propagă independent de ceilalți, fără să aștepte restul pachetului căruia îi aparține. În mod tipic, fiecare bit navighează pe circumferința întregului inel într-un interval de timp în care se transmit doar câțiva biți, de multe ori înainte chiar ca întregul pachet să fi fost transmis. Ca în orice alt sistem cu difuzare, este nevoie de o regulă pentru a arbitra accesele simultane la inel.
Rețelele cu difuzare pot fi în continuare împărțite în statice și dinamice, în funcție de modul de alocare al canalului. O metodă tipică de alocare statică ar fi să divizăm timpul în intervale discrete și să rulăm un algoritm round-robin, lăsând fiecare mașină să emită numai atunci când îi vine rândul. Alocarea statică irosește capacitatea canalului atunci când o mașină nu are nimic de transmis în cuanta de timp care i-a fost alocată, astfel că majoritatea sistemelor încearcă să aloce canalul dinamic (la cerere).
Metodele de alocare dinamică pentru un canal comun sunt fie centralizate, fie descentralizate. În cazul metodei centralizate de alocare a canalului există o singură entitate, de pildă o unitate de arbitrare a magistralei, care determină cine urmează la rând. Poate face acest lucru acceptând cereri și luând o decizie conform unui algoritm intern. În cazul metodei descentralizate de alocare a canalului nu există o entitate centrală fiecare mașină trebuie să hotărască pentru ea însăși dacă să transmită sau nu.
1.1.2. Rețele Metropolitane
O rețea metropolitană (Metropolitan Area Network) sau MAN este, în linii mari, o versiune extinsă de LAN și utilizează în mod normal tehnologii similare cu aceasta. Un MAN poate suporta atât date cât si voce și poate chiar să aibă legături cu rețeaua locală de televiziune prin cablu. Un MAN dispune numai de un cablu sau două, fără să conțină elemente de comutare care deviază pachetele pe una din cele câteva posibile linii de ieșire. Nefiind necesară comutarea, proiectarea este mai simplă.
Motivul principal pentru care MAN-urile figurează ca o categorie specială constă în adoptarea unui standard specific, standard care este acum implementat. Acesta se numește DQDB (Distributed Queue Dual Bus – Magistrală duală cu coadă distribuită). DQDB constă în două magistrale unidirecționale la care sunt conectate toate calculatoarele așa cum este arătat în figura 1.2.
Fiecare magistrală are un capăt de distribuție (head-end) – un dispozitiv care inițiază activitatea de transmisie. Traficul destinat unui calculator din dreapta transmițătorului folosește magistrala de sus. Traficul către utilizatorii din stânga folosește magistrala de jos.
1.1.3. Rețele Larg Răspândite Geografic
O rețea larg răspândită geografic (Wide Area Network), sau WAN, acoperă o arie geografică întinsă-deseori o țară sau un continent întreg. Rețeaua conține o colecție mașini utilizate pentru a executa programele utilizatorilor. În concordanță cu termenul uzual vom numi aceste mașini gazde. Gazdele sunt conectate printr-o subrețea de comunicație. Relația dintre cele două tipuri de elemente este prezentată in figura 1.3.
În majoritatea rețelelor larg răspândite geografic, subrețeaua este formată din două componente distincte: liniile de transmisie și elementele de comutare.
În cazul celor mai multe WAN-uri, rețeaua conține numeroase cabluri sau linii telefonice, fiecare din ele legând o pereche de rutere. Dacă două rutere nu împart un același cablu, dar doresc să comunice, atunci ele trebuie să facă acest lucru indirect, prin intermediul altor rutere. Când un pachet este transmis de la un ruter la altul prin intermediul unuia sau mai multor rutere, pachetul este primit în întregime de fiecare ruter intermediar, este reținut acolo până când linia de ieșire cerută devine liberă și apoi este retransmis. O subrețea care funcționează pe acest principiu se numește subrețea punct-la-punct sau subrețea cu comutare de pachete. Aproape toate rețelele larg răspândite geografic (în afara de cele care utilizează sateliți) au subrețele punct-la-punct. Când pachetele sunt mici și au aceeași mărime, ele sunt adesea numite celule.
Atunci când se folosește o subrețea punct-la-punct, o problemă importantă de proiectare se referă la alegerea topologiei de interconectare a ruterelor. Figura 1.4 prezintă câteva topologii posibile.
O a doua posibilitate pentru WAN este utilizarea unui satelit sau a unui sistem radio terestru. Fiecare are o antenă cu care poate să recepteze și să emită. Toate ruterele pot auzi semnalul de la satelit, iar în unele cazuri, le pot auzi totodată și transmisiile de la rutere către satelit.
Uneori ruterele sunt conectate la o rețea punct-la-punct și numai unele dintre ele au antene de satelit. Rețelele de sateliți sunt în mod inerent rețele cu difuzare și se utilizează mai ales atunci când proprietatea de difuzare este importantă.
1.1.4. Rețele Radio
Calculatoarele mobile reprezintă segmentul din industria tehnicii de calcul cu dezvoltarea cea mai rapidă. Mulți posesori ai acestor calculatoare au la birou sisteme legate la LAN-uri și WAN-uri și vor să se conecteze la acestea chiar și atunci când se află în locuri depărtate de casă sau pe drum. Deoarece legăturile prin fir sunt imposibile în mașini și avioane, interesul pentru rețelele radio este foarte puternic.
Rețelele radio au numeroase utilizări. Biroul portabil reprezintă una din ele. Oamenii aflați pe drum doresc adesea să folosească echipamentele lor electronice portabile pentru a trimite și primi faxuri și poștă electronică, pentru a citi fișiere aflate la distanță, pentru a se conecta la distanță și așa mai departe.
Rețelele radio sunt de mare importanță pentru parcurile de camioane, taxiuri si autobuze, pentru echipele de intervenție, și nu în ultimul rând, pentru armată.
Rețelele fără fir există în mai multe forme. Unele universități instalează în campusuri antene care permit studenților să stea sub copaci și să consulte cataloagele bibliotecilor. În acest caz calculatoarele comunică cu LAN-urile fără fir direct în formă digitală. O altă posibilitate este utilizarea unui telefon celular împreună cu un modem analogic tradițional.
În sfârșit, este posibil să avem diverse combinații de rețele cu și fără fir. De exemplu, în figura 1.5 (a) este desenat un avion în care mai mulți pasageri folosesc modemuri și telefoane pentru a suna la birou. Fiecare convorbire este independentă de celelalte. O opțiune mult mai eficientă este însă LAN-ul zburător din figura 1.5 (b).
În acegerea topologiei de interconectare a ruterelor. Figura 1.4 prezintă câteva topologii posibile.
O a doua posibilitate pentru WAN este utilizarea unui satelit sau a unui sistem radio terestru. Fiecare are o antenă cu care poate să recepteze și să emită. Toate ruterele pot auzi semnalul de la satelit, iar în unele cazuri, le pot auzi totodată și transmisiile de la rutere către satelit.
Uneori ruterele sunt conectate la o rețea punct-la-punct și numai unele dintre ele au antene de satelit. Rețelele de sateliți sunt în mod inerent rețele cu difuzare și se utilizează mai ales atunci când proprietatea de difuzare este importantă.
1.1.4. Rețele Radio
Calculatoarele mobile reprezintă segmentul din industria tehnicii de calcul cu dezvoltarea cea mai rapidă. Mulți posesori ai acestor calculatoare au la birou sisteme legate la LAN-uri și WAN-uri și vor să se conecteze la acestea chiar și atunci când se află în locuri depărtate de casă sau pe drum. Deoarece legăturile prin fir sunt imposibile în mașini și avioane, interesul pentru rețelele radio este foarte puternic.
Rețelele radio au numeroase utilizări. Biroul portabil reprezintă una din ele. Oamenii aflați pe drum doresc adesea să folosească echipamentele lor electronice portabile pentru a trimite și primi faxuri și poștă electronică, pentru a citi fișiere aflate la distanță, pentru a se conecta la distanță și așa mai departe.
Rețelele radio sunt de mare importanță pentru parcurile de camioane, taxiuri si autobuze, pentru echipele de intervenție, și nu în ultimul rând, pentru armată.
Rețelele fără fir există în mai multe forme. Unele universități instalează în campusuri antene care permit studenților să stea sub copaci și să consulte cataloagele bibliotecilor. În acest caz calculatoarele comunică cu LAN-urile fără fir direct în formă digitală. O altă posibilitate este utilizarea unui telefon celular împreună cu un modem analogic tradițional.
În sfârșit, este posibil să avem diverse combinații de rețele cu și fără fir. De exemplu, în figura 1.5 (a) este desenat un avion în care mai mulți pasageri folosesc modemuri și telefoane pentru a suna la birou. Fiecare convorbire este independentă de celelalte. O opțiune mult mai eficientă este însă LAN-ul zburător din figura 1.5 (b).
În acest caz, fiecare scaun este echipat cu un conector Ethernet, la care pasagerii pot să-și racordeze calculatoarele. La bordul avionului există un singur ruter. Acesta menține în fiecare moment o legatură radio cu un ruter aflat la sol, ruter care se schimbă pe parcursul zborului. Configurația respectivă nu reprezintă altceva decât un LAN tradițional, cu deosebirea ca legătura sa cu lumea exterioară este asigurată de o conexiune radio în loc de o linie fizică.
1.2. Programele de Rețea
1.2.1. Ierarhiile de Protocoale
Pentru a reduce din complexitatea proiectării, majoritatea rețelelor sunt organizate sub forma unei serii de straturi sau niveluri. În toate rețelele, scopul fiecărui nivel este să ofere anumite servicii nivelurilor superioare, protejându-le totodată de detaliile privitoare la implementarea efectivă a serviciilor oferite.
Nivelul n de pe o mașină conversează cu nivelul n de pe altă mașină. Regulile și convențiile utilizate în conversație sunt cunoscute sub numele de protocolul nivelului n. Entitățile care conțin niveluri corespunzătoare de pe mașini diferite se numesc egale. Cu alte cuvinte, entitățile egale sunt cele care comunică folosind protocolul. În realitate, nici un fel de date nu sunt transferate direct între nivele pereche Fiecare nivel transferă datele și informațiile de control nivelului imediat inferior, până când se ajunge la nivelul cel mai de jos. Sub nivelul acesta se află mediul fizic prin care se produce comunicarea efectivă.
În figura 1.6 este ilustrată o rețea cu cinci niveluri.
Între cele două niveluri adiacente există o interfață. O interfață definește ce operații și servicii primitive oferă nivelul de jos către nivelul de sus. Aceasta presupune ca, la rândul său, fiecare nivel să execute o colecție specifică de funcții clar definite. Pe lângă minimizarea volumului de informații care trebuie transferate între niveluri, interfețele clare permit totodată și o mai simplă înlocuire a implementării unui nivel cu o implementare complet diferită.
O mulțime de niveluri și protocoale este numită arhitectură de rețea. Specificație unei arhitecturi trebuie să conțină destule informații care să permită unui proiectant să scrie programele de rețea sau să construiască echipamentele necesare fiecărui nivel, astfel încât nivelurile să îndeplinească corect protocoalele corespunzătoare. Nici detaliile de implementare și nici specificațiile interfețelor nu fac parte din arhitectură, deoarece acestea sunt ascunse în interiorul mașinilor și nu sunt vizibile din afară. O listă de protocoale utilizate de către un anumit sistem, câte un protocol pentru fiecare nivel, se numește stivă de protocoale. Un alt set de decizii de proiectare se referă la regulile pentru transferul de date. În unele sisteme datele circulă simultan într-un singur sens – comunicare simplex. În altele datele pot circula în orice sens dar nu simultan – comunicare half-duplex. În sfărșit, în alte sisteme datele circulă în ambele sensuri simultan – comunicare duplex integral.
1.2.2. Interfețe și Servicii
Elementele active din fiecare nivel sunt numite frecvent entități. O entitate poate fi o entitate software (așa cum este un proces) sau o entitate hardware (așa cum este un cip I/O). Entitățile corespunzătoare aceluiași nivel, dar care se află pe mașini diferite, se numesc entități egale. Entitățile de la nivelul n implementează un serviciu utilizat de nivelul n+1. În acest caz nivelul n se numește furnizor de servicii, iar nivelul n+1 se numește utilizator de servicii.
Serviciile sunt disponibile în SAP-uri (Service Access Points – puncte de acces la servcii). Fiecare SAP are o adresă care îl identifică în mod unic.
Pentru ca două niveluri să schimbe între ele informație, trebuie să fie convenit un set de reguli referitoare la interfață. În cazul unei interfețe tipice, entitatea de pe nivelul n+1 pasează nivelului n, prin intermediul SAP-ului, un IDU (Interface Data Unit). Acest IDU constă dintr-un SDU (Service Data Unit) și niște informații de control. SDU reprezintă informația transmisă prin rețea către entitatea pereche și apoi în sus către nivelul n+1. Pentru a transfera SDU-ul, entitatea din nivelul n poate fi nevoită să îl fragmenteze în câteva bucăți, fiecare din acestea primind câte un antet și fiind trimisă sub forma unui PDU (Protocol Data Unit) separat, ca un pachet.
1.2.3. Servicii Orientate pe Conexiune și Servicii fără Conexiune
Serviciul orientat pe conexiune este modelat pe baza sistemului telefonic. Beneficiarul trebuie mai întâi să stabilească o conexiune, să folosească acea conexiune și apoi să o elibereze.
Prin opoziție serviciul fără conexiuni este modelat pe baza sistemului poștal. Toate mesajele conțin adresele complete de destinație și fiecare mesaj circulă în sistem independent de celelalte.
Serviciul sigur orientat pe conexiuni admite două variante: secvențele de mesaje și fluxurile de octeți. Prima variantă menține delimitarea între mesaje. În a doua variantă, conexiunea este un simplu flux de octeți.
Nu orice aplicație necesită conexiuni. Tot ceea ce se cere este un mijloc de a trimite un singur mesaj cu o probabilitate mare de a ajunge la destinație, dar fără o garanție în acest sens. Serviciul nesigur fără conexiuni este numit serviciul datagramă. În alte situații siguranță este esențială chiar dacă nu se stabilește o conexiune. Aplicațiile care necesită un astfel de serviciu pot utiliza serviciul datagramă confirmat.
Mai există un serviciu, și anume serviciul cerere-răspuns. În acest serviciu emițătorul transmite o datagramă care conține o cerere; replica primită de la receptor conține răspunsul. Acest tip de serviciu este folosit pentru a implementa comunicare în modelul client-server.
1.3. Modelul de Referință OSI
Modelul OSI este prezentat în figura 1.7 (mai puțin mediul fizic). Acest model se bazează pe o propunere dezvoltată de Organizația Internațională de Standardizare (ISO) ca un prim pas către standardizarea internațională a protocoalelor folosite pe diferite niveluri. Modelul se numește ISO-OSI (Open Systems Interconnection), pentru că el se ocupă de conectarea sistemelor deschise – adică de sisteme deschise comunicării cu alte sisteme.
Modelul OSI cuprinde șapte niveluri. Principiile aplicate pentru a se ajunge la cele șapte niveluri sunt următoarele:
Un nivel trebuie creat atunci când este nevoie de un nivel de abstractizare diferit.
Fiecare nivel trebuie să indeplinească un rol bine definit.
Funcția fiecărui nivel trebuie aleasă acordându-se atenție definirii de protocoale standardizate pe plan internațional.
Delimitarea nivelurilor trebuie făcută astfel încât să se minimizeze fluxul de informații prin interfețe.
Numărul de niveluri trebuie să fie suficient de mare pentru a nu fi nevoie să se introducă în același nivel funcții diferite și suficient de mic pentru ca arhitectura să rămână funcțională.
Modelul OSI nu reprezintă în sine o arhitectură de rețea, pentru că nu specifică serviciile și prtocoalele utilizate la fiecare nivel. Modelul spune numai ceea ce ar trebui să facă fiecare nivel. ISO a produs de asemenea standarde pentru fiecare nivel, însă aceste standarde nu fac parte din modelul de referință propriu-zis. Fiecare din standardele respective a fost publicat ca un standard internațional separat.
Nivelul fizic
Nivelul fizic se ocupă de transmiterea biților printr-un canal de comunicație. Proiectarea trebuie să garanteze că atunci când unul din capete trimte un bit 1, acesta este receptat în cealaltă parte ca un bit 1, nu ca un bit 0. Problemele tipice se referă la câți volți trebuie utilizați pentru a reprezenta un 1 și câți pentru un 0, dacă transmisia poate avea loc simultan în ambele sensuri, cum este stabilită conexiunea inițială și cum este întreruptă când au terminat de comunicat ambele părți, câți pini are conectorul de rețea și la ce folosește fiecare pin. Aceste aspecte de proiectare au o legătură strânsă cu interfețele mecanice, electrice, funcționale și procedurale, ca și cu mediul de trasmisie situat sub nivelul fizic.
Nivelul legătură de date
Sarcina principală a nivelului legătură de date este de a transforma un mijloc oarecare de transmisie într-o linie care să fie disponibilă nivelului rețea fără erori de transmisiei nedetectate. Nivelul de legătură de date realizează această sarcină obligănd emițătorul să descompună datele de intrare în cadre de date, să transmită cadrele secvențial și să prelucerze cadrele de confirmare trimise înapoi de receptor. Deoarece nivelul fizic nu face decât să accepte și să transmită un flux de biți, fără să se preocupe de semnificația sau de structura lor, responsabilitatea pentru marcarea și recunoașterea delimitatorilor între cadre îi revine nivelului legătură de date. Aceasta se poate realiza prin atașarea unor șabloane speciale de biți la începutul și la sfărșitul cadrului. În cazul în care șabloanele respective de biți pot apărea accidental în datele propriu-zise, trebuie luate măsuri speciale de precauție pentru cea aceste șabloane să nu fie incorect interpretate ca delimitatori de cadre.
Detectarea și corectarea erorilor este o altă sarcină importantă a nivelului legătură de date. Poiectanții au dezvoltat două strategii de bază pentru tratarea erorilor. O modalitate este ca pe lângă fiecare bloc de date trimis să se includă suficientă informație redundantă pentru ca receptorul să poată deduce care a fost caracterul transmis. O altă soluție este să se includă suficientă redundanță pentru a permite receptorului să constate că a apărut o eroare, dar nu care este eroarea, și să ceară o retransmisie. Prima strategie utilizează coduri corectoare de erori, iar cea de-a doua utilizează coduri detectoare de erori. Se folosesc în special coduri bloc: de lungime n biți și cu =0 sau 1. Pot avea deci combinații posibile. Nu le pot folosi pe toate, pentru a evita erorile, și voi folosi doar combinații utile (m< n). Notăm k=n-m biții de control.
Un zgomot apărut pe linie poate distruge în întregime un cadru. În acest caz, programele nivelului legătură de date de pe mașina sursă pot să retransmită cadrul. Transmiterile multiple ale aceluiași cadru introduc posibilitatea cadrelor duplicate. Un cadru duplicat poate apărea la transmisie în situația în care s-au pierdut cadrele de confirmare trimise de la receptor înapoi înspre sursă.
O altă problemă care apare la acest nivel este evitarea inundării unui receptor lent cu date provenite de la un emițător rapid. În acest scop sunt necesare mecanisme de reglare a traficului care să permită emițătorului să afle ce mărime are bufferul receptorului la momentul curent.
Dacă linia poate fi folosită pentru a trimite cadre în ambele sensuri, atunci apare o nouă problemă, care trebuie rezolvată de programele de la nivelul legătură de date. Complicația se referă la concurența care există pentru utilizarea linie între cadrele de confirmare pentru traficul de la A la B și cadrele de date din traficul de la B la A. Pentru rezolvarea ei a fost concepută următoarea soluție: atașarea (piggybacking).
Rețelele cu difuzare determină în nivelul legătură de date o problemă suplimentară: cum să fie controlat accesul la canalul partajat. De această problemă se ocupă un subnivel special al acestui nivel, și anume subnivelul de acces la mediu.
Nivelul rețea
Nivelul rețea se ocupă de controlul funcționării subrețelei. o problemă cheie în proiectare este determinarea modului în care pachetele sunt dirijate de la sursă la destinație. Dirijarea se poate baza pe tabele satistice care sunt cablate intern în rețea și care sunt schimbate rar. Traseele pot fi de asemenea stabilite la începutul fiecărei conversații, de exemplu la începutul unei sesiuni la terminal. În sfârșit dirijarea poate fi dinamică, trasele determinăndu-se pentru fiecare pachet în concordanță cu traficul curent din rețea.
Dacă în subrețea există prea multe pachete simultan, ele vor intra unul pe traseul celuilalt și astfel se vor produce gătuiri. Controlul unor astfel de congestii îi revine tot nivelului rețea.
Pentru a calcula suma datorată de clienții rețelei, programul trebuie cel puțin să numere căte pachete, sau câte caractere, sau câți biți a trimis fiecare client.
Multe probleme pot apărea atunci când un pachet trebuie să treacă dintr-o rețea în alta ca să ajungă la destinație. Modul de adresare folosit de a doua rețea poate să difere de cel pentru prima. A doua rețea poate chiar să nu accepte pachetul pentru că este prea mare. Rezolvarea problemelor ivite la trecerea dintr-o rețea în alta revine nivelului rețea.
În rețelele cu difuzare, problema dirijării este simplă, astfel că nivelul rețea este deseori subțire sau chiar nu există deloc.
Nivelul transport
Rolul principal al nivelului transport este să accepte date de la nivelul sesiune, să le descompună, dacă este cazul, în unități mai mici, să transfere aceste unități nivelului rețea și să se asigure că toate fragmentele sosesc corect la celălalt capăt.
În condiții normale nivelul transport creează o conexiune de rețea distinctă pentru fiecare conexiune de transport cerută de nivelul sesiune. În cazul în care conexiunea de transport necesită productivitate mare, nivelul transport poate totuși să creeze conexiuni de rețea multiple și să dividă datele prin conexiunile de rețea. De asemenea nivelul rețea ar putea reduce costul întreținerii unei conexiuni prin multiplexarea câtorva conexiuni de transport pe aceeași conexiune de rețea.
Nivelul determină, de asemenea, ce tip de serviciu să furnizeze nivelului sesiune și,în final, utilizatorilor rețelei. Cel mai obișnuit tip de conexiune transport este un canal punct – la – punct fără erori care furnizează mesajele sau octeții în ordinea în care au fost trimiși. Alte tipuri posibile sunt transportul mesajelor individuale – fără nici o garanție în privința ordinii de livrare – și difuzarea mesajelor către destinații multiple. Tipul serviciului se determină când se stabilește conexiunea.
Nivelul transport este un adevărat nivel capăt – la – capăt, de la sursă la destinație. Cu alte cuvinte, un program de pe mașina sursă poartă o conversație cu un program similar de pe mașina destinație, folosind în acest scop antetele mesajelor și mesaje de control. În nivelurile inferioare protocoalele au loc între fiecare mașină și vecinii săi imediați, și nu direct între mașinile sursă și destinație, care pot fi separate de numeroase rutere.
În plus față de multiplexarea mai multor fluxuri de mesaje pe același canal, nivelul transport mai trebuie să se ocupe de stabilirea și anularea conexiunilor în rețea. Pentru acest lucru este necesar un mecanism de atribuire a numelor, astfel încât un proces de pe o anumită mașină să poată descrie cu cine vrea să converseze. Trebuie, de asemenea, un mecanism pentru reglarea fluxului de informații, astfel încât o gazdă mai rapidă să nu suprasolicite o gazdă mai lentă. Un astfel de mecanism se numește controlul fluxului.
Nivelul sesiune
Nivelul sesiune permite utilizatorilor de pe mașini diferite să stabilească între ei sesiuni. Unul din serviciile nivelului sesiune se referă la controlul dialogului. Sesiunile pot permite să se realizeze trafic în ambele sensuri simultan, sau numai într-un sens odată.
Un serviciu sesiune înrudit este gestiunea jetonului. În unele protocoale este esențial ca cele două părți să nu încerce să realizeze aceeași operație în același timp. Pentru a trata aceste situații, nivelul sesiune dispune de jetoane care circulă între mașini. Numai partea care deține jetonul are voie să realizeze operațiunea critică.
Nivelul prezentare
Un exemplu tipic de serviciu prezentare este codificarea datelor într-un mod standard prestabilit. Majoritatea programelor folosite de utilizatori nu fac schimb de șiruri aleatoare de biți. Ele fac schimb de nume de persoane, adrese, date, sume de bani, etc. Aceste informații sunt reprezentate prin șiruri de caractere, prin întregi, prin numere reale și prin structuri de date. Diferite calculatoare au diferite coduri pentru reprezentarea șiruirlor de caractere (de exemplu, ASCII și Unicode), întregilor (de exemplu, complementul față de 1 și complementul față de 2) ș.a.m.d. Pentru a face posibilă comunicarea între calculatoare cu reprezentări diferite, structurile de date pot fi definite într-un mod abstract, alături de o codificare standardizată ce va fi utilizată pe cablu. Nivelul prezentare gestionează aceste structuri de date abstracte și le convertește din reprezentarea internă folosită în calculator în reprezentarea standardizată din rețea și invers.
Nivelul aplicație
Nivelul aplicație conține o varietate de protocoale frecvent utilizate.
Transmiterea datelor în modelul OSI
Figura 1.8 prezintă un exemplu de transmitere a datelor folosind modelul OSI. Procesul emițător vrea să trimită niște date procesului receptor. Emițătorul furnizează datele nivelului aplicație, acesta le atașează în față antetul aplicației, AH, (care poate fi vid) și furnizează obiectul rezultat nivelului prezentare.
Nivelul prezentare poate să modifice acest obiect în diferite moduri și poate eventual să-i adauge în față un antet, furnizând rezultatul către nivelul sesiune. Este important de știut că nivelul prezentare nu cunoaște care porțiune din datele primite de la nivelul aplicație reprezintă AH, în cazul în care acesta există, și care porțiune reprezintă datele propriu-zise ale utilizatorului.
Acest proces se repetă până când datele ajung la nivelul fizic, unde ele vor fi trimise efectiv către mașina receptoare. Pe respectiva mașină, diversele antete sunt eliminate succesiv, pe măsură ce mesajul se propagă prin niveluri în sus, până când ajunge în final la procesul destinație.
Ideea de bază este că, deși în figura 1.8 transmiterea datelor este verticală, fiecare nivel este programat ca și cum transmiterea ar fi orizontală. De exemplu, atunci când nivelul transport primește un mesaj de la nivelul sesiune, el îi atașează un antet de trasnport și îl expediază nivelului transport destinație. Din punctul său de vedere, faptul că în realitate trebuie să paseze mesajul nivelului rețea de pe mașina sa proprie este un detaliu tehnologic lipsit de importanță.
1.4. Modelul de Referință TCP/IP
Posibilitatea de a interconecta fără probleme mai multe tipuri de rețele a reprezentat de la bun început un obiectiv de proiectare major. Această arhitectură a devenit cunoscută mai târziu sub denumirea de modelul de referință TCP/IP, dată după numele celor două protocoale fundamentale utilizate.
Un alt obiectiv major a fost ca rețeaua să poată supraviețui pierderii echipamentelor din subrețea fără a fi întrerupte coversațiile existente. Mai mult, era nevoie de o arhitectură flexibilă, deoarece se aveau în vedere aplicații cu cerințe divergente, mergând de la transferul de fișiere până la transmiterea vorbirii în timp real.
Nivelul internet
Toate aceste cerințe au condus la alegerea unei rețele cu comutare de pachete bazată pe un nivel inter-rețea fără conexiuni. Acest nivel, numit nivelul internet, este axul pe care se centrează întrega arhitectură. Rolul său este de permite gazdelor să emită pachete în orice rețea și a face ca pachetele să circule independent până la destinație (fiind posibil ca aceasta să se găsească pe o altă rețea). Pachetele pot chiar să sosească într-o ordine diferită față de cea în care au fost trimise, caz în care – dacă se dorește furnizarea lor ordonată – rearanjarea cade în sarcina nivelurilor de mai sus.
Nivelul internet definește oficial un format de pachet și un protocol numit IP (Internet Protocol). Sarcina nivelului internet este să furnizeze pachete IP către destinație. Problemele majore se referă la dirijarea pachetelor și evitarea congestiei. În consecință, este rezonabil să spunem că nivelul internet din TCP/IP funcționează asemănător cu nivelul rețea din OSI. Figura 1.9 arată această corespondență.
Nivelul transport
Nivelul situat deasupra nivelului internet din modelul TCP/IP este frecvent numit nivelul transport. Acesta este proiectat astfel încât să permită conversații între entitățile pereche din gazdele sursă și, respectiv, destinație, la fel ca în nivelul transport OSI. În acest sens au fost definite două protocoale capăt – la – capăt. Primul dintre ele, TCP (Transmission Control Protocol), este un protocol sigur orientat pe conexiuni care permite ca un flux de octeți trimiși de pe o mașină să ajungă fără erori pe orice altă mașină din inter-rețea. Acest protocol fragmentează fluxul de octeți în mesaje discrete și pasează fiecare mesaj nivelului internet. La destinație, procesul TCP receptor reasamblează mesajele primite în flux de ieșire. TCP tratează totodată controlul fluxului pentru a se asigura că un emițător rapid nu inundă un receptor lent cu mai multe mesaje decât poate acesta să prelucerze.
Al doilea protocol din nivel, UDP (User Datagram Protocol), este un protocol nesigur, fără conexiuni, destinat aplicațiilor care doresc să utilizeze propria lor secvențiere și control al fluxul și nu pe cele asigurate de TCP. Protocolul UDP este de asemenea mult folosit pentru interogări întrebare-răspuns dintr-un foc, client-server, și pentru aplicații în care comunicarea promptă este mai importantă decât comunicarea cu acuratețe așa cum sunt aplicațiile de transmisie a vorbirii și a imaginilor video. Relația dintre IP, TCP și UDP este prezentată în figura 1.10. De când a fost dezvoltat acest model, IP a fost implementat pe multe alte rețele.
Nivelul aplicație
Modelul TCP/IP nu conține niveluri sesiune sau prezentare . Acestea nu au fost incluse pentru că nu s-a simțit nevoia lor. Experiența modelului OSI a dovedit că această viziune a fost corectă: în majoritatea aplicațiilor, nivelurile respective nu sunt de mare folos.
Deasupra nivelului transport se află nivelul aplicație. Acesta conține toate protocoalele de nivel mai înalt. Așa cum se vede din figura 2.3, primele protocoale de acest gen includeau terminalul virtual (TELNET), transferul de fișiere (FTP) și poșta electronică (SMTP). Protocolul de terminal virtual permite unui utilizator de pe o mașină să se conecteze și să lucreze pe o mașină aflată la distanță. Protocolul de transfer de fișiere pune la dispoziție o modalitate de muta eficient date de pe o mașină pe alta. Poșta electronică a fost la origine doare un tip de transfer de fișiere, dar ulterior a fost dezvoltat un protocol specializate pentru acest serviciu. Pe parcursul anilor, la aceste protocoale s-au adăugat multe altele, așa cum sunt. Serviciul Numelor de Domenii (Domain Name Service – DNS) pentru stabilirea corespondenței dintre numele gazdelor și adresle rețelelor, NNTP, protocolul utilizat pentru a transfera articole de știri, HTTP, folosit pentru aducerea paginilor de pe Web, și multe altele.
Nivelul gazdă-rețea
Sub nivelul internet se află necunoscutul. Modelul de referință TCP/IP nu spune mare lucru despre ce se întâmplă acolo, însă menționează că gazda trebuie să se lege la rețea, pentru a putea trimite pachete IP folosind un anumit protocol. Aceste protocol nu este definit și variază de la gazdă la gazdă și de la rețea la rețea.
Suita de protocoale TCP/IP este prezentată în figura 1.11 atât pentru aplicațiile LAN cât și pentru aplicațiile WAN.
CAP. 2. NIVELUL FIZIC
CAP. 2. NIVELUL FIZIC
2.1. Viteza de transmisie
Informația poate fi transmisă prin cablu variind câteva proprietăți fizice cum ar fi tensiunea și intensitatea curentului. Reprezentând valoarea tensiunii sau a intensității curentului ca o funcție de timp, f(t), putem modela comportamentul semnalului și îl putem analiza matematic. Această analiză face subiectul următoarelor secțiuni.
2.1.1. Analiza Fourier
Matematicianul francez Jean Fourier a demonstrat că orice funcție periodică cu comportare rezonabilă, g(t) , cu perioada T poate fi construită prin însumarea unui număr (posibil infinit) de sinusoide și cosinusoide:
unde f=1/T este frecvență fundamentală, iar și sunt amplitudinile sinusurilor și cosiunusrilor armonicei (termenului) n. Această descompunere este numită serie Fourier. Pornind de la seria Fourier funcția poate fi reconstruită.
Un semnal de date de durată finită (porprietate pe care o au toate semnalele) poate fi tratat presupunând că el repetă întregul tipar la infinit.
Amplitudinile pot fi calculate pentru orice g(t) prin multiplicarea ambilor membri ai ecuației cu urmată de integrarea de la 0 la T. Deoarece:
numai un singur termen al sumei de sinusuri nu se anulează: . Termenii sumei de cosinusuri se anulează complet. Similar multiplicând membrii ecuației cu și integrând de la 0 la T, putem obține . Prin integrarea ambilor membri ai ecuației originale, se poate obține c. Rezultatele obținute prin efectuarea acestor operații sunt:
2.1.2. Semnale Limitate de Banda de Frecvență
Pentru a face legătura dintre cele prezentate și comunicarea de date să considerăm următorul exemplu: transmisia caracterului ASCII "b" codificat pe un octet. Biții care urmează a fi transmiși sunt 01100010. Partea din stânga a figurii 2.1 (a) reprezintă tensiunea la ieșire emisă de calculatorul care transmite. Din analiza Fourier a acestui semnal rezultă următorii coeficienți:
Radicalul sumei pătratelor amplitudinilor, , pentru primii termeni este prezentat în partea dreaptă a figurii 1.2 (a). Aceste valori ne interesează, deoarece pătratele lor sunt proporționale cu energia transmisă la frecvența respectivă.
Nu există un mijloc de transmisie care să poată trimită semnale fără pierdere de putere în timpul procesului. Dacă toate componentele Fourier ar fi micșorate în aceeași măsură, atunci semnalul rezultat ar fi atenuat în amplitudine, dar nu ar prezenta distorsiuni. Din păcate, orice mijloc de transmisie atenuează diferite componente Fourier în diferite proporții, introducând astfel distorsiuni. De obicei, amplitudinile sunt transmise fără alterări de la 0 la o anumită frecvență (măsurată în cicluri pe secundă sau în Hertzi). iar toate celelalte amplitudini cu frecvențe mai mari decît această frecvență de prag sunt puternic atenuate. În unele cazuri aceasta este o proprietate fizică a mediilor de transmisie, în timp ce în altele este introdus intenționat un filtru în circuit, pentru a limita banda de frecvență disponibilă fiecărui client.
Să vedem cum va arăta semnalul transmis dacă banda de frecvență folosită ar fi atât de îngustă, încât numai frecvențele foarte joase pot fi trasmise . Figura 2.1 (b) reprezintă semnalul rezultat dintr-un canal care permite numai primei armonici (f, fundamentală) să fie transmisă. Similar, figurile 2.1 (c)-(e) prezintă spectrele și funcțiile reconstituite pentru canale cu o bandă de fecvență mai largă.
Timpul T necesar pentru transmiterea caracterului depinde atât de metoda de codificare cât și de viteza semnalului [de câte ori pe secundă se schimbă valoarea (tensiunea) semnalului]. Numărul de variații pe secundă se măsoară în baud. O linie cu o viteză de transfer de b baud nu trasmite implicit b biți/secundă, deoarece un semnal poate trsmite și mai mulți biți. Dacă se utilizează tensiunile 0, 1, 2, 3, 4, 5, 6 și 7, fiecare semnal poate fi folosit pentru transmiterea a 3 biți, rezultând un număr de biți transferați pe secundă de trei ori mai mare decât viteza de transmisie.
Pentru o anumită viteză de b biți/secundă, timpul necesar pentru a transmite, de exemplu, 8 biți este de 8/b secunde, frecvența primei armonice fiind b/8 Hz. O linie telefonică obișnuită, deseori numită linie în bandă vocală, are introdusă artificial o frecvență de prag în jurul frecvenței de 3000 Hz. Această restricție conduce la rezultatul că numărul celei mai mari armonice care poate fi trasmisă ates aproximativ de 3000/(b/8), adică 2400/b (frecvența de prag nu este foarte exactă).
În figura 2.2 sunt prezentate valorile unor viteze de transfer de date. Pornind de la aceste cifre, este clar că încercarea de a transmite date la o viteză de 9600 bps, folosind o linie telefonică obișnuită, va transforma semnalul din figura 2.1 (a) în ceva asemănă tor cu figura 2.1 (c), fiind dificilă obținerea secvenței de biți originale. Este evident ca la viteze de transfer mai mari decât 38.4 kbps nu există nici o speranță de a recupera semnalele binare, chiar dacâ mediul de trasmisie ar fi lipsit în totalitate de zgomote. Cu alte cuvinte, limitând banda de frecvență, se limitează și viteza de transfer chiar și pentru canalele perfecte. Oricum, există tehnici de codificare sofisticate, care folosesc mai multe nivele de tensiune și care pot atinge rate de transfer mai perfomante.
2.1.3. Viteza Maximă de Transfer de Date a unui Canal
Nyquist a demostrat că dacă un semnal arbitrar este transmis printr-un filtru de frecvențe joase în bandă H, semnalul filtrat poate fi complet reconstruit prin efectuarea de a exact 2H eșantioane pe secundă. Eșantionarea semnalului la o viteză mai mare decât 2H/sec este inutilă, deoarece componentele cu o frecvență mai înaltă pe care aceste eșantioane le-ar putea obține au fost deja filtrate. Dacă semnalul are V nivele discrete (în cazul canalelor fără zgomote), teorema lu Nyquist afirmă:
viteza maximă de transfer de date=2HlogV biți/sec.
Dacă sunt prezente zgomote aleatorii situație se deteriorează rapid. Mărimea zgomotului termic prezent se măsoară prin raportul dintre puterea semnalului și puterea zgomotului, fiind numită raportul semnal/zgomot. Dacă notăm puterea semnalului cu S și puterea zgomotului cu N, atunci raportul semnal/ zgomot este S/N. De obicei, acest raport nu este specificat; în schimb este dată expresia . Aceste unități sunt numite decibeli (dB).
Rezultatul cel mai important obținut de Shannon este expresia pentru viteza maximă de transfer de date a unui canal cu zgomote, având banda de frecvență de H Hz și a cărui raport semnal/zgomot S/N este dat de:
numărul maxim de biți/secundă=
Nivelul fizic se ocupă de transmiterea biților printr-un canal de comunicație. Proiectarea trebuie să garanteze că atunic când unul din capete trimite un bit 1, acesta e receptat în cealaltă parte ca un bit 1, nu ca un bit 0. Problemele tipice se referă la câți volți trebuie utilizați pentru a reprezenta un 1 și câți pentru un 0, dacă transmisia poate avea loc simultan în ambele sensuri, cum este stabilită conexiunea inițială și cum este întreruptă când au termninat de comunicat ambele părți, câți pini are conectorul de rețea și la ce folosește fiecare pin. Aceste aspecte de proiectare au o legătură strânsă cu interfețele mecanice, electrice, funcționale și porcedurale,ca și cu mediul de transmisie situate sub nivelul fizic.
2.2. Mediul de Transmisie
Scopul nivelului fizic este de a transporta o secvență de biți de la o mașină la alta. Pentru trasmisie pot fi utilizate diverse medii fizice. Fiecare dintre ele este definit de lărgimea lui de bandă, cost și de ușurința de instalare și de întreținere. Aceste medii pot fi împărțite în două grupe mari: mediile ghidate, cum ar fi cablul de cupru și fibrele optice și mediile neghidate, cum ar fi undele radio și laserul.
2.2.1. Mediul Magnetic
Una din cele mai obișnuite metode de a transporta date de la un calculator la altul este să se scrie datele pe o bandă magnetică sau pe un disc flexibil, să se transporte fizic banda sau discul la mașina destinație, după care să se citească din nou datele. Cu toate că această metodă nu este la fel de sofisticată ca folosirea unui satelit de comunicație geosincron, ea este de multe ori mai eficientă din punct de vedere al costului, mai ales pentru aplicațiile în care o banda de frecvență largă sau costul pe bit sunt factori cheie.
2.2.2. Cablul Torsadat
Deși caracterisicile benzii de frecvență a unei benzi magnetice sunt excelente, caracteristicile legate de întârziere sunt slabe. Timpul de transmisie nu se măsoară in milisecunde, ci în minute sau ore. Pentru multe aplicații este nevoie de o conexiune on-line. Cel mai vechi și încă cel mai utilizat mediu de transmisie este cablul torsadat. un cablu torsadat este format din două fire de cupru izolate, având o grosime tipică de 1 mm. Firele sunt împletite într-o formă elicoidală, exact ca o moleculă de ADN. Scopul împletirii firelor este de a reduce interferența eletrică.
Cea mai cunoscută aplicație a cablului torsadat este sistemul telefonic. Aproape toate telefonale sunt conectate la centrala telefonică pirintr-un cablu torsadat.Cablurile torsadate se pot întinde pe mai mulți kilometri fără amplificare, dar pentru distanțe mai mari, sunt necesare repetoare.
Cablurile torsadate pot fi folosite atât pentru transmisia analogică cât și pentru cea digitală. Banda de frecvență depinde de grosimea firului și de distanța parcursă, dar, în multe cazuri, poate fi atinsă o viteză de mai mulță megabiți pe secundă pe ditanțe de câțiva kilometri. Datorită performanței satisfăcătoare și a costului scăzut, cablurile torsadate sunt foarte larg folosite în prezent și probabil că vor rămâne larg folosite și în următorii ani.
Există numeroase feluri de cablu torsadat, două dintre acestea fiind importante pentru rețelele de calculatoare. Cablurile torsadate din Categoria 3 sunt formate din două fire izolate împletite împreună. În mod obișnuit patru astfel de perechi sunt grupate într-un material plastic, pentru a le proteja și pentru a le ține împreună.
Începând dn 1988, au fost introduse caburile mai performante din Categoria 5. Ele sunt similare celor din categoria 3, dar au mai ulte răsuciri pe centimetru și sunt izolate cu teflon, rezultând o interferență redusă și o mai bună calitate a semnalului pe distanțe mari, ceea ce le face mai adecvate comunicațiilor la viteze mari între calculatoare.
2.2.3. Cablul Coaxial în Bandă de Bază
Un alt mediu uzual de trasmisie este cablul coaxial (sau "coax"). El are o ecranare mai bună decât cablurile torsadate, putând acoperi distanțe mai mari la rate de transfer mai mari. Există două tipuri de cabluri coaxiale folosite pe scară largă. Primul, cablul de 50 – ohmi, este folosit în transmisia digitală și se mai numește cablu coxial în bandă de bază. Cel de-al doilea, cablul de 75 de ohmi, este frecvent folosit în transimisa analogică și poartă numele de cablu coaxial de banda largă.
Un cablu coaxial este format dintr-o sârmă de cupru dură, protejată de un material izolant. Acest material este încapsulat într-un conducor circular, de obicei sub forma unei plase strâns întrețesute. Conductorul exterior este acoperit cu un înveliș de plastic protector. În figura 2.3 este prezentată o vedere în secțiune a cablului coaxial.
Structura și ecranarea cablului coaxial asigurăp o bună împletire a necesităților de bandă de frecvență largă și totodată de imunitate excelentă la zgomot. Banda de frecvență poate depinde de lungimea cablului. Pentru cabluri de 1 Km, este posibilă o viteză de transfer a datelor între 1 și 2 Gbps.pot fi folosite și cablui mai lungi, dar la rate de transfer mai joase sau folosind periodic amplificatoare. Acest tip de cablu este larg folosit în sistemul telefonic, în televiziunea prin cablu și în unele rețele locale.
2.2.4. Cablul Coaxial de Bandă Largă
Celălalt model de cablu coaxial este folosit penru transimisia analogică în sistemele de televiziune prin cablu. Acesta este numit cablu de bandă largă. Cu toate că termenul de "bandă largă" provine din lumea telefoniei, unde se referă la o bandă de frecvență mai largă decât 4 kHz, în lumea rețelelor de calculatoare "cablu de bandă largă" înseamna orice rețea prin cablu care folosește transmisia analogică.
Deoarece rețelele de bandă largă se bazează pe tehnologia standard a televiziunii prin cablu, cablurile pot fi folosite până la 33 MHz (și de multe ori până la 450 MHz) și datorită trasmisiei analogice pot acoperi distanțe de aproape 100 Km. Pentru a transmite semnale digitale pe o rețea analogică, fiecare interfață trebuie să conțină un echipament electronic care să convertească secvența de biți ce urmează a fi transmisă în semnal analogic și semnalul analogic de la intrare într-o secvență de biți. Depinzând de echimpanetul electronic respectiv, 1 bps poate ocupa aproximativ 1 Hz din lărgiema de bandă. La frecvențe mai mari se pot obține mai mulți biți pe Hz folosind tehnici avansate de modulare a semnalului.
O diferență majoră între banda de bază și banda largă este aceea că sistemele de bandă largă acopră, de obicei, o suprafață mai mare, fiind nevoiede amplificatoare analogice care să reamplifice periodic semnalul. Aceste amplificatoare pot transmite semnalul într-o singură direcție, astfel că un calculator care transmite un pachet nu poate să primească date de la alte calculatoare, dacă între ele se află un amplificator. Pentru a ocoli această problemă, ai fost dezvoltate două tipuri de de sisteme de bandă largă: sisteme cu cablu dual și sisteme cu cablu simplu.
Sistemele cu cabluri duale au doua cabluri identice care funcționează în paralel, unul lângă altul. Pentru a transmite date, un calculator emite pe cablul 1, până la un echipament numit capăt de distribuție (head-end), care se află la rădăcina arborelui de cabluri. Capătul de distribuție transferă semnalul pe cablul 2 pentru transmisia înapoi pe arbore. Toate calculatoarele transmit pe cablul 1 și recepționează pe cablul 2. Un sistem cu cablu dual este prezentat în figura 2.4 (a).
Cealaltă schemă alocă diferite benzi de frecvență pentru trnsimise și recepție pe un singur cablu (vezi figura 2.4 (b)). Banda de frecvență joasă este folosită pentru comunicația între calculatoare și capăt, apoi capătul transferă semnalul în banda de frecvență înaltă și îl retransmite. În sistemele cu împărțire inegală (subsplit), frecvențele de la 5 la 30 MHz sunt folosite pentru transmisie și frecvențele de la 40 la 300 MHz sune folosite pentru recepție. În sistemele cu înjumătățire (midsplit), transmisia se face în banda 5 – 116 MHz, iar recepția în banda 168 – 300 MHz.
2.2.5. Fibra Optică
În 1970, un calculator rapid putea executa o instrucțiune în 100 de nsec. În 1990, un calculator CRAY rapid putea executa o instrucțiune în 1 nsec, o îmbunătățire cu un factor de 10 la fiecare deceniu. În aceeași perioadă, comunicațiile de date au evoluat de la o viteză de 56 Kbps (ARPANET), până la 1 Gbps (comunicațiile optice moderne), un câștig cu un factor mai mare de 100 pe fiecare decadă.
Mai mult, procesoarele se apropie de limitele lor fizice, date de viteza luminii și problemele de disipare a căldurii. Prin contrast, folosind tehnologiile actuale de fibre optice, banda de frecvență care poate fi atinsă este cu siguranță mai mare decât 50,000 Gbps (50 Tbps) și se caută încă materiale mai performante.
Un sistem de trasnmisie optic este format din trei componente: surse de lumină, mediul de transmisie și detectorul. Prin convenție, un impuls de lumină înseamnă bitul 1, iar absența luminii indică bitul 0. Mediul de transmisie este o fibră foarte subțire de sticlă. Atunci când interceptează un impuls luminos, detectorul generează un impuls electric. Prin atașarea unei surse de lumină la un capăt al fibrei și a unui detector la celălalt, obținem un sistem unidirecțional de transimisie adatelor care acceptă semnale electrice, le covertește și le transmite ca impulsuri luminoase și apoi le reconvertește la ieșire în semnale electrice.
Acest sistem de transmisie ar fi fost lipsit de importanță în practică, cu exepția unui principiu interesant al fizicii. Când o rază luminosă trece de la un mediu la altul, de exemplu, de la siliciu la aer, raza este refractată (îndoită) la suprafața de separație siliciu/aer ca în figura 2.5. Se observă o rază de lumină incidentă pe suprafața de separație la un unghi care se refractă la un unghi . Mărimea refracției depinde de proprietățile celor două medii (în particular, de indicii lor de refracție). Pentru unghiuri de incidență mai mari decât o anumită valoare critică, lumina este refractată înapoi în siliciu fără nici o pierdere. Astfel, o rază de lumină, la un unghi egal sau mai mare decât unghiul critic, este încapsulată în interiorul fibrei, ca în figura 2.5 (b) și se poate propaga pe mulți kilometri, aparent fără pierderi.
În figura 2.5 (b) se poate observa o singură rază încapsulată, dar se pot transmite mai multe raze cu unghiuri de incidentă diferite. Se spune ca fiecare rază are un mod diferit, iar fibra care are această proprietate se numește fibră multi-mod.
Oricum, dacă diametrul fibrei este redus la câteva lungimi de undă ale luminii, fibra acționează ca un ghid de undă și lumina se va propaga în linie dreaptă, fără reflexii, rezlutând o fibră mono-mod. Aceste fibre sunt mai scumpe, dar pot fi folosite pe distanțe mai mari.
Transmisia luminii prin fibre
Fibrele optice sunt fabricate din sticlă, iar sticla este fabricată la rândul ei din nisip, un material brut necostisitor, care se găsește în cantități nelimitate. Sticla folosită pentru fibrele este exterme de transparentă. Atenuarea luminii prin sticlă depinde de lungimea de undă a luminii. Pentru tipul de sticlă folosită la fibra optică, atenuarea este prezentată în figura 2.6 în decibeli pe kilometru linear de fibră. Atenuarea în decibeli este dată de formula:
De exemplu, pentru un factor de pierdere egal cu 2 rezultă o atenuare de Figura prezintă valorile atenuării pentru lungimi de undă apropiate spectrului razelor infraroșii, care sunt folosite în practică.
2.3. Comunicațiile fără Fir
Pentru utilizatori mobili, cablurile, de orice tip, nu sunt de folos. Ei au nevoie de acces la informații fără a fi legați de infrastructura comunicațiilor terestre. Pentru acești utilizatori, răspunsul îl constituie comunicațiile fără fir.
Unii oameni cred că viitorul rezervă numai două tipuri de comunicații: prin fibre optice și fără fir.
2.3.1. Spectrul Electromagnetic
Atunci când electronii se află în mișcare, ei creează unde electromagnetice ce se pot propaga în spațiu. Prin atașarea unei antene corspunzătoare unui circuit, undele electromagnetice pot fi difuzate eficient și interceptate de un receptor aflat la o anumită distanță.
În vid, toate undele electromagnetice se transmit cu viteza luminii ( m/sec). În cupru sau fibră, viteza scade la aproape două treimi din această valoare și devine ușor dependentă de frecvență.
Relațtia fundamentală dintre frecvența f, lungimea de undă și viteza luminii c este:
(2.1)
Deoarece c este o constanntă, dacă știm f, putem afla și invers.
Spectrul electromagnetic este reprezentat în figura 2.7. Domeniile corespunzătoare undelor radio, microundelor, undelor infraroșii și luminii vizibile din spectru pot fi folosite pentru transmiterea informației prin modularea amplitudinii, frecvenței, sau fazei undelor. Lumina ultravioletă, razele X și razele gama ar fi chiar mai performante datorită frecvenței lor mai înalte, dar ele sunt greu de produs și de modulat, nu se propagă bine prin clădiri și sunt periculoase ființelor vii. Benzile din partea de jos a figurii sunt numele oficiale ITU și se bazează pe lungimile de undă, LF acoperind intevalul de la 1 Km la 10 Km (aproximativ de la 30 de KHz la 300 Khz). Temenii de LF, MF și HF se referă la frecvențe joase, medii și respectiv înalte.
Cantitatea de informație pe care o undă electromagnetică o poate transporta este legată de lărgimea ei de bandă. Folosind tehnologia actuală, este posibil să codifcăm câțiva biți/Hz la frecvențe joase și deseori până la 40 biți/Hz la frecvențe înalte.
Dacă rezolvăm ecuația (2.1) pentru f și o diferențiem în raport cu lungimea de undă, obținem:
Dacă acum trecem la diferențe finite în loc de diferențiale și alegem doar valorile pozitive, obținem:
Astfel, fiind dată lărgimea unei benzi de lungimi de undă, , putem calcula banda de frecvență corespunzătoare, și din aceasta, viteza de transfer e date pe care banda o poate produce. Cu cât banda este mai largă, cu atât crește viteza de transfer a datelor. De exemplu, să cosiderăm banda de 1.30 microni din figura 2.6. Aici avem și , cu aproape 30 THz.
Pentru a preveni un haos total, există convenții naționale și internaționale relative la ce frecvențe pot fi folosite și de către cine. Fiecare vrea o viteză de transmisie mai mare, adică vrea un spectru de frecvențe mai larg. Pe scară globală, alocarea spectrului este facută de o agenție a ITU-R (WARC). La întâlnirea din Spania, din 1991, WARC a alocat echipamentelor de comunicație portabile o anumită porțiune din spectru. Din păcate, în Statele Unite, FCC (organizația răspunzătoare cu alocarea spectrului) a ales o altă porțiune de spectru, ea nefiind limitată la recomandările WARC. Motivul acestei alegeri a fost faptul că banda respectivă era deja alocată, iar beneficiarii nu au vrut să renunțe la ea și au avut influență politică suficientă. În consecință, echipamentele de comunicație personale construite pentru piața SUA nu vor funcționa în Europa sau Asia și viceversa.
Majoritatea transmisiilor folosesc o bandă îngustă de frecvență () pentru a obține cea mai bună recepție (mulți W/Hz). Oricum, în unele cazuri, transmițătorul sare de la o frecvență la alta, în conformitate cu anumite reguli, sau transimisia este intenționat întinsă pe o bandă de frecvență largă. Această tehincă se numește spectru împraștiat (spread spectrum). Ea este foarte populară în comunicațiile armatei, deoarece face transmisia greu de detectat și aproape imposibil de bruiat.
Pentru moment vom considera că toate transmisiunile folosesc o bandă de frecvență îngustă.
2.3.2. Transmisia Radio
Undele radio sunt ușor de generat, pot parcurge distanțe mari, penetrează clădirile cu ușurință, fiind larg răspândite în comunicații, atât interioare, cât și exterioare. Undele radio sunt de asemenea omnidirecționale, ceea ce înseamnă că se pot propaga în orice direcție de la sursă, deci nu este nevoie de o aliniere fizică a transmițătorului și a receptorului.
Proprietățile undelor radio sunt dependente de frecvențe. La frecvențe joase, undele radio se propagă bine prin obstacole, dar puterea semnalului scade mult odată cu distanța de la sursă, aproximativ cu în aer. La frecvențe înalte, undele radio tind să se propage în linie dreaptă și să sară peste obstacole. De asemenea, ele sunt absorbite de ploaie. Toate frecvențele radio sunt supuse la interferențe datorate motoarelor și a altor echipamente electrice.
Datorită capacității undelor radio de a se propaga pe distanțe mari, interferența dintre utilizatori devine o poblemă. Din acest motiv, toate guvernele acordă cu foate mare atenție licențe pentru utilizatorii de transmițătoare radio.
În benzile de frecvență foarte joase, joase și medii, undele radio se propagă la sol dupa cum este ilustrat în figura 2.8 (a). Aceste unde pot fi detectate până la appoximativ 1000 Km pentru frecvențe joase și mai puțin pentru cele mai înalte. Difuzarea undelor radio AM folosește banda MF. Undele radio din această bandă trec ușor prin clădiri, fiind astfel posibile utilizarea radiourilor portabile în spații interioare. Problema principală care apare la comunicarea de date la aceste frecvențe este lărgimea relativ mică a benzii pe care o oferă.
În benzile înalte și foarte înalte undele de la sol tind să fie absorbite de pământ.
Oricum, undele care ating ionosfera, un start de particule xcare învelesc atmosfera la o înalțime de 100 – 500 Km, sunt reflectate și trimise înapoi spre pămant, după cum arată figura 2.8 (b). În anumite condiții atmosferice, semnalele pot parcurge acest drum de mai multe ori.
2.3.3. Transmisia prin Microunde
Peste 100 Mhz, undele se propagă în linii drepte și din acest motiv pot fi direcționate. Concentrând toată energia într-un fascicol îngust cu ajutorul unei antene parabolice, rezultă o valoare mult mai ridicată a raportului semnal-zgomot, dar antenele care transmit și cele care recepționează trebuie să fie aliniate cu precizie una cu alta. În plus, faptul că aceste unde sunt orientate permite ca mai multe transmițătoare să fie aliniate și să comunice cu mai multe receptoare, fără interferențe.
Spre deosebire de undele radio la frecvențe joase, microundele nu trec bine prin clădiri. În plus, cu toate că unda poate fi bine direcționată la transmițător, apare o divergență în spațiu. Undele pot fi reflectate de straturile atmosferice joase și pot întârzia mai mult decât undele directe. Undele întârziate pot sosi defazate față de unda directă, anulând astfel semnalul. Acest efect este numit anulare multi-căi (multipath fading) și constituie deseori o problemă serioasă.
Cererea de spectre din ce în ce mai largi contribuie la îmbunătățirea tehnologiilor, astfel încât transmisia poate folosi frecvențe și mai înalte. Benzi de până la 10 GHz sunt acum uzuale, dar la aproape 8 GHz apare o nouă problemă: absorbția de către apă. Aceste unde sunt doar de câțiva centimetri lungime și sunt absorbite de ploaie.
Comunicațiile cu microunde sunt atât de larg folosite de telefonia pe distanțe mari, telefoanele celulare, televiziune și altele, încât a apărut o criză în ceea ce privește spectrul.
În afară de utilizarea pentru transmisia pe distanțe mari, microundele mai au o altă aplicație importantă și anume benzile industriale, științifice și medicale. Aceste benzi sunt o excepție de la regula acordării licențelor, transmițătoarele ce folosesc aceste benzi nu necesită licență de la guvern. Este alocată global o singură bandă: 2.400 – 2.484 GHz. În plus, in Statele Unite și Canada există benzi între 902 – 928 MHz și între 5.725 – 5.850 GHz.
2.3.4. Undele Infraroșii și Milimetrice
Undele infraroșii și milimetrice sunt larg folosite pentru comunicațiile pe distanțe reduse. Telecomenzile pentru aparatura electronică folosesc comunicațiile în infraroșu. Ele sunt relativ direcționale, ieftine și ușsor de construit, dar au un dezavantaj major: nu penetrează obiecte solide. În general, cum ne deplasăm de la unde radio lungi către lumina vizibilă, undele se comportă din ce în ce mai mult ca lumina și din ce în ce mai puțin ca unde radio.
Pe de altă parte, faptul că razele infraroșii nu trec prin obiecte constituie un avantaj. Aceasta înseamnă că un sistem cu infraroșii dintr-o cameră a unei clădiri nu va interfera cu un alt sistem similar situat într-o cameră adiacentă. Mai mult, protecția sistemelor cu infraroșii împotriva interceptărilor este mult mai bună decât în sistemele radiofonice, exact din acest motiv. Datorită acestor motive, pentru operarea unui sistem cu infraroșii nu este necesară procurarea unei licențe, spre deosebire de sistemele radiofonice.
Aceste proprietăți au făcut din undele infraroșii un candidat demn de luat în seamă pentru LAN-urile interioare fără fir. De exemplu, calculatoarele și birourile dintr-o clădire pot fi echipate cu transmițătoare și receptoare infraroșii relativ nedirecționale. În acest fel, calculatoarele portabile cu posibilități de comunicare prin infraroșu pot face parte din rețeaua locală, fără a fi nevoie să se conecteze fizic la ea. Comunicațiile cu infraroșii nu pot fi folosite în exterior deoarece soarele emite tot atâtea raze infraroșii cât unde în spectrul vizibil.
2.4. Radio Celular
Sistemele ce folosesc pentru comunicații undele radio în loc de cabluri sau fibre optice reprezintă o concurență tot mai serioasă la adresa rețelelor telefonice publice comutate, datorită numărului tot mai mare de de oameni în mișcare. Aceste sisteme vor juca în viitor un rol din ce în ce mai important pentru rețelele de calculatoare portabile, telefoanele celulare și pentru asistenții digitali personali (PDA – Personal Digital Assistant). În continuare vom examina paging-ul prin satelit, telefoanele fără fir, telefoanele celulare și alte tehnologii similare.
Aceste dispozitive au creat deja o piață imensă, în care sunt implicate companii din domeniul calculatoarelor, telefoanelor, sateliților, sau alte domenii. Rezultatul este o piață haotică, cu numeroase produse și servicii suprapuse și incompatibile, toate aflate într-o schimbare rapidă și fiind diferite, în general, de la țară la țară.
2.4.1. Sistemele Pager
În zilele noastre, persoanele care vor să primească mesaje prin pager poartă asupra lor aparate mici, cu ecrane de dimensiuni reduse, pentru afișarea scurtelor mesaje primite.
O persoană care dorește să ia legătura prin pager cu un posesor de beeper, poate suna la compania ce oferă acest serviciu, să specifice numărul pagerului și mesajul scurt pe care dorește să-l trimită. Mesajul este trimis de la compania respectivă prin linii terestre către o antenă amplasată la o înălțime mare, care difuzează direct mesajul (în cazul sistemelor pager locale) sau îl transmite către un satelit care apoi îl redifuzează (în cazul sistemelor pager de lungă distanță). Când pagerul detectează semnalul radio ce conține propriul număr de identificare, emite un semnal sonor și afișează mesajul. Este de asemenea posibil să se transmită simultan același mesaj la mai multe persoane.
Majoritatea sitemelor pager avansate se pot conecta direct la un calculator și pot recepționa mesaje mai lungi. Calculatorul poate apoi să prelucreze datele pe măsură ce sunt recepționate. De exemplu, cu ajutorul acestui sistem de pagere, o companie poate menține actualizate listele de prețuri din calculatoarele portabile ale vânzătorilor.
Marea majoritate a sistemelor pager actuale au proprietatea că funcționează într-un singur sens, de la un singur calculator către un număr mare de receptori. Din moment ce există un singur emițător, nu este nici o problemă în legătură cu cine urmează să vorbească și nici o dispută între utlizatorii aflați în competiție pentru un număr mic de canale.
Sistemele pager actuale necesită o bandă îngustă, deoarece fiecare mesaj are nevoie pentru a fi trimis de o singură rafală de aproximativ 30 de octeți. La o asemenea rată de transfer a datelor, un canal de satelit de 1 Mbs poate gestiona peste 240000 pagere pe minut. Sistemele pager mai vechi lucrează la diferite frecvențe în banda 150 – 170 MHz.
Majoritatea sistemelor pager moderne folosesc banda 930 – 932 MHz. Figura 2.9 (a) evidențiază caracterul unidirecțional al sistemelor pager, având o singură frecvență pentru efectuarea tuturor transmisiilor. Telefoanele mobile sunt bidirecționale și folosesc două frecvențe pentru o legătură, având perechi diferite de frecvențe pentru apeluri diferite așa cum se poate vedea în figura 2.9 (b).
2.4.2. Telefoane fără Fir
Telefoanele fără fir au apărut din dorința de a permite oamenilor să se plimbe în jurul casei în timp ce vorbesc la telefon. Un asemenea telefon se compune din două părți: o stație de bază și un receptor. Stația de bază se conectează la sistemul telefonic. Telefonul comunică cu stația de bază printr-un sistem radio de putere mică. Distanța tipică este de aproximativ 100 până la 300 de metri.
Deoarece primele telefoane fără fir au fost concepute numai ca să comunice cu propria stație de bază, nu a fost necesară o standardizare. O parte din modelele ieftine foloseau o frecvență fixă stabilită din fabricație. Au apărut astfel probelem în ceea ce priveșe folosirea a două astfel de aparate în apropiere unul față de celălalt. Modelele mai scumpe înlăură această problemă, permițând utilizatorului să selecteze frecvența de emisie.
Prima generație de telefoane fără fir, cunoscută sub denumirea CT-1 în Statele Unite și CEPT-1 în Europa, a fost în întregime analogică. Era posibil ca aceste telefoane să creeze interferențe cu radioul și televizorul. Recepția slabă și lipsa securității au determinat fabricanții să dezvolte un standard digital, CT-2, care își are originile în Anglia. Primele dispozitive CT-2 puteau face apeluri, dar nu le puteau recepționa.
În 1992 a apărut a treia generație, CT-3 sau DECT, care suportă distanțe mai mari față de stația de bază. Această tehnologie este pe cale să se apropie tot mai mult de telefoanele celulare.
2.4.3. Telefoanele Celulare Analogice
În 1946, primul sistem de telefoane pentru automobile a fost pus în funcțiune în St. Louis. Acest sistem folosea un singur emițător amplasat pe o clădire înaltă și avea un singur canal folosit atăt pentru emisie căt și pentru recepție. Pentru a vorbi, utilizatorul trebuia să apese un buton care activa emițătorul și dezactiva receptorul. Astfel de sisteme sunt cunoscute sub denumirea de sisteme cu buton de emisie. Taxiurile și mașinile de poliție folosesc încă acest sistem.
În 1960 a fost instalat IMTS (Improved Mobile Telephone System – sistemul îmbunătățit de telefonie mobilă). Și acesta folosește un emțător de mare putere (200 Watt), amplasat pe vârful unui deal, folosind însă două frecvențe: una pentru emisie și una pentru recepție. Deoarece toată comunicația dinspre telefoanele mobile se desfășoară pe un canal diferit de cel pe care telefoanele ascultă, utilizatorii telefoanelor mobile nu se mai pot auzi unii pe alții.
IMTS suportă 23 de canale împărțite între 150 și 450 MHz. Din cauza numărului mic de canale, utilizatorii trebuie să aștepte deseori perioade lungi de timp până când obțin tonuri. De asemenea, datorită puterii mari a emițătorului, sistemele adiacente trebuie să se afle la câteva sute de kilometri distanță pentru a se evita interferențe. Pe ansamblu, sistemul a fost impracticabil datorită posibilităților limitate.
Sistemul telefonic mobil avansat
Totul s-a schimbat odată cu AMPS (Advanced Mobile Phone System), inventat de Bell Labs și instalat pentru prima dată în SUA în 1982. Sistemul este folosit în Anglia sub denumirea TACS și în Japonia MCS-L1. În AMPS, o regiune geografică este împărțită în celule, de obicei de 10 până la 20 kilometri lățime, fiecare celulă folosind o anumită mulțime de frecvențe. Ideea de bază care conferă AMPS-ului o capacitate semnificativ mai mare decât a tuturor sistemelor anterioare, constă în folosirea de celule relativ mici și efolosirea frecvențelor de transmisie în celule apropiate dar nu adiacente. În timp ce într-un sistem IMTS de 1000 km lățime poate exista un singur apel pe fiecare frecvență, un sistem AMPS poate avea 100 de celule de 10 km în aceeași regiune și este capabil să suporte 5 până la 10 apeluri pe fiecare frecvență, în celule separate și îndepărtate. Mai mult decât atât, celulele de dimensiuni reduse necesită puteri mici, ceea ce implică dispozitive de dimensiuni reduse și ieftine. Telefoanele portabile emit 0.6W; emițătoarele de pe mașini au în mod tipic 3W.
Ideea refolosirii frecvențelor este ilustrată în figura 2.10 (a). În mod normal, celulele sunt aproximativ circulare, dar ele pot fi modelate mai ușor ca hexagoane. În figura 2.10 (a) celulele au toate aceeași dimensiune. Ele sunt grupate împreună în unități de 7 celule. Fiecare literă indică un grup de frecvențe. Trebuie remarcat că pentru fiecare set de frecvențe există o zonă tampon de lățime aproximativ egală cu două celule distanță în care acea frecvență nu este refolosită, realizând astfel o delimitare mai bună și o interferență scăzută.
Într-o zonă în care numărul de utlizatori s-a mărit atât de mult incât sistemul a devenit supraîncărcat, se reduce puterea și se împart celulele supaîncărcate în celule mai mici pentru a permite mai multe refolosiri de frecvențe așa cum este arătat în figura 2.10 (b).
În centrul fiecărei celule se află o stație de bază prin intermediul căreia transmit toate telefoanele din celulă. Stația de bază cuprinde un calculator și un emițător/receptor conectat la o antenă. Într-un sistem redus, toate stațiile de bază sunt conectate la un singur dispozitiv denumit MTSO (Mobile Telephone Switching Office – Oficiu telefonic de comutare mobil). Într-un sistem mare pot fi necesare mai multe MTSO-uri, toate acestea conectându-se la un al doilea nivel MTSO și așa mai departe. MTSO comunică cu stațiile de bază, între ele și cu rețeaua de telefonie publică comutată, folosind o rețea cu comutare de pachete.
În orice moment orice telefon mobil se află, în mod logic, într-o celulă specifică și sub controlul stașiei de bază a celulei respective. Când un telefon mobil părăsește o celulă, stația sa de bază sesizează o scădere a semnalului dinspre telefon și întreabă toate stațiile de bază înconjurătoare cât de puternic este semnalul pe care îl recepționează ele de la respectivul telefon. Stația de bază transferă apoi proprietatea asupra telefonului către celula care recepționează cel mai puternic semnal, aceasta fiind și celula în care se află acum telefonul. Telefonul este apoi informat despre noul său șef, iar dacă un apel este în derulare în acel moment telefonul este rugat să comute pe un canal nou (deoarece canalul vechi nu este refolosit în nici o celulă adiacentă). Acest proces poartă denumirea de timp mort și durează aproximativ 30 msec. Atribuirea canalului se face de către MTSO, care este centru nervos al sistemului. Stațiile de bază sunt de fapt doar niște radio-relee.
Canale
Sistemul AMPS utilizează 832 canale full-duplex, fiecare constând dintr-o pereche de canale simplex. Există astfel 832 canale simplex pentru transmisie de la 824 la 849 MHz și 832 canale simplex pentru recepție de la 869 la 894 MHz. Fiecare din aceste canle simplex are o lățime de 39 kHz. Din această cauză AMPS folosește modularea în frecvență pentru a separa canalele.
În banda de 800 MHz, undele radio au aproximativ 40 cm lungime și se propagă în linie dreaptă. ele sunt absorbitede copaci și plante și sunt reflectate de pământ și clădiri. Aceasta poate să conducă la un efect de ecou sau la distorsionarea semnalului.
În Statele Unite, din cele 832 de canale din fiecare oraș, jumătate sunt alocate companiei locale de telefoane, furnizor de tip B (B-side carrier), cealaltă jumătate fiind alocată altei companii furnizoare de servicii de telefonie mobilă, furnizor de tip A (A-side carrier). Ideea este să se asigure existența a cel puțin doi furnizori concurenți.
Cu toate acestea, diferența dintre o companie de telefoane și o companie de telefoane celulare este nesemnificativă, deoarece majoritatea companiilor de telefoane au ca parteneri o companie de telefoane celulare.
Cele 832 de canale se împart în patru categorii:
Control (bază către mobil) pentru gestionarea sistemului.
Paging (bază către mobil) pentru a anunța utilizatorii detelefonae mobile că sunt apelați.
Acces (bidirecțional) pentru stabilirea apelului și alocarea canalului.
Date (bidirecțional) pentru voce, fax sau date.
Pentru control sunt rezervate 21 de canale și acestea sunt fixate în fiecare telefon într-un PROM. Deoarece nu pot fi refolosite în celule învecinate aceleași frecvențe, numărul real de canale vocale disponibile pe celulă este de regulă 45.
Gestiunea apelului
Fiecare telefon mobil din AMPS are un număr serial pe 32 de biți și un număr de telefon de 10 cifre în PROM-ul propriu. Numărul de telefon este format dintr-un cod al zonei de 3 cifre pe 10 biți și un număr de abonat de 7 cifre pe 2 de biți. Atunci când este activat, un telefon scanează o listă preprogramată cu 21 canale de control, pentru a descopri semnalul cel mai puternic. Telefoanele mobile sunt configurate să scaneze numai după A-side, numai după B-side, preferabil A-side sau preferabil B-side în funcție de serviciul (serviciile) la care s-a abonat clientul. De pe canalele de control se determină numerele canalelor de paging și acces.
Apoi telefonul difuzează propriul număr serial de 32 de biți și numărul de telefon de 34 de biți. Ca orice altă informație de control din AMPS, acest pachet este transmis în formă digitală, de mai multe ori și cu un cod corector de erori, deși canalele vocale sunt analogice.
Atunci când stația de bază aude anunțul, sesiezează MTSO-ul care înregistrează existența noului său client și infomează de asemenea MTSO-ul clientului asupra poziției sale curente. În timpul unei funcționări normale, telefonul mobil se reînregistrează la aproximativ 15 minute.
Pentru a face un apel, un utilizator mobil activează telefonul, introduce de la taste numărul de apleat și apasă butonul SEND. Telefonul transmite apoi numărul de apelat și identitatea proprie pe canalul de acces. Dacaă acolo apare o coliziune, el încearcă mai târziu din nou. Atunci când primește o cerere, stația de bază informează MTSO-ul. Dacă apelantul este un client al companiei MTSO (sau unul din parteneri), MTSO-ul caută un canal liber pentru apel. Dacă găsește unul, numărul canalului este transmis înapoi pe canalul de control. Telefonul mobil comută apoi automat pe canalul vocal selectat și așteaptă până când partea apelată ridică telefonul.
Apelurile primite funcționeză diferit. La început toate telefoanele libere ascultă în continuu pe canalul de paging pentru a detecta mesajele adresate lor. Atunci când se face apel către un telefon mobil (fie de la un telefon fix, fie de la alt telefon mobil), se transmite un pachet către MTSO-ul apelatului pentru a descopri unde se alfă acesta. Se transmite apoi un pachet către stația de bază din celula sa curentă, care apoi transmite pe canalul de paging un mesaj de difuzare de forma următoare: "Unitatea 14, ești acolo?". Telefonul apelat răspunde apoi cu "Da" pe canalul de control. Baza spune apoi ceva de genul "Unitatea 14, ai apel pe canalul 3". În acest moment, telefonul apelat comută pe canalul 3 și începe să sune.
Probleme de securitate
Telefoanele celulare sunt total lipsite de securitate. Oricine dispune de un receptor (scaner) pe bandă largă se poate poziționa și asculta tot ceea ce se întâmplă într-o celulă. Deoarece majoritatea utilizatorilor celularelor nu-și dau seama cât de nesigur este acest sistem, de multe ori ei transmit în acest mod numerele cărților de credit sau alte informații confidețiale.
O altă problemă importantă o constituie furtul de informație pe timpul emisiei. Utilizând un receptor pentru întreaga bandă atașat la un calculator, se poate monitoriza canalul de control și înregistra numărul serial de 32 biți și numărul de telefon pe 34 de biți al tuturor telefoanelor mobile pe care le ascultă. Se poate astfel construi o bază de date destul de mare în câteva ore. Oricare din numerele din această bază de date poate fi folosit pentru apeluri ilegale.
2.4.4. Telefoane Celulare Digitale
Prima generație de sisteme celulare a fos analogică. Cea de-a doua generație este digitală. În Statele Unite a existat în principal un singur sistem: AMPS. Atunci când a venit timpul sistemelor digitale, au apărut trei sau patru concurenți. Acum se pare că vor supraviețui două sisteme. Primul este compatibil cu cele anterioare, având schema APMS de alocare a frecvențelor și este specificat în standarde sub denumirile IS-54și IS-135. Celălalt se bazează pe succesiunea directă a spectrului împrăștiat și este specificat în standardul IS-95.
IS-54 este dual (analogic și digital) și folosește aceleași canale de 30 de kHz pe care le folosește și AMPS. El împachetează 48,6 Kbps pe fiecare canal și îl partajează între trei utilizatori simultan. Fiecare utilizator primește 13 Kbps; restul reprezintă supraîncărcarea datorată datelor de control și sincronizării. Celulele, stația de bază și MTSO-ul funcționează la fel ca în AMPS. Difera numai semnalizarea digitală și codificarea digitală a vocii.
În Europa a avut loc procesul invers. Erau în folosință cinci sisteme analogice diferite, în țări diferite. Această experiență a condus la acceptarea unui sistem digital comun denumit GSM (Global Systems for Mobile Communication – Sistem Global pentru Comunicații Mobile), care a fost pus în funcțiune înaintea oricăruia din sistemele concurente americane. Sistemul japonez este diferit de toate cele prezentate anterior.
Deoarece toate sistemele europene erau diferite între ele, reîncadrarea în banda de 900 MHz și transfomarea lor în sisteme digitale care să opereze într-o bandă de frecvențe nouă (1,8 GHz), s-au facut destul de simplu. GSM folosește atât modularea în frecvență, cât și cea în timp. Spectrul disponibil este împărțit în benzi de 50 – 200 kHz. În interiorul fiecărei benzi se folosețte modularea în timp pentru a multiplexa mai mulți utilizatori.
Unele telefoane GSM folosesc cartele inteligente de dimensiunea unei cărți de credit, ce conțin un procesor. Numărul serial și numărul de telefon se află în cartelă și nu în telefon, ceea ce conduce la o mai mare securitate. De asemenea, se folosește și criptarea.
2.5. Sateliți de Comunicație
În anii 1950 și la începutul anilor 1960, oamenii au ăncercat să stabileacsă sisteme de comunicație pe baza reflectării semnalelor de către baloane meteorologice metalizate. Din nefericire, semnalele recepționate erau prea slbe ca să poată fi folosite practic la ceva. Apoi, Marina SUA a construit, pe baza reflectării semnalelor de către Lună, un sistem operațional pentru comunicații navă-țărm.
Progresul în domeniul comunicațiilor spațiale a trebuit să mai aștepte până când a fost lansat primul satelit de comunicații, în 1962. Principalul avantaj este că satelitul artificial poate amplifica semnalele înainte de a la transmite înapoi.
Sateliții de comunicație au câteva proprietăți interesante, care îi fac tentanți pentru multe aplicații. Un satelit de comnucație poate fi gândit ca un mare repetor de microunde. Acesta conține mai multe dispozitive de recepție-transmisie automată (transporder), fiecare dintre acestea ascultă pe o anume porțiune de spectru, amplifică semnalul recepționat și apoi îl redifuzează pe o altă frecvență pentru a evita interferența cu semnalul care se recepționează. Unde descendentă poate fi difuzată, acoprind astfel o fracțiune substanțială din suprafața Pământului sau poate fi concentrată, caz în care va acoperi numai o zonă de câteva sute de kilometri diametru.
2.5.1 Sateliți Geosincroni
Conform legii lui Kepler, perioada de rotație a unui satelit variază cu puterea 3/2 a razei orbitei. În apropierea suprafeței Pământului, perioada este de aproximativ 90 minute. Sateliții de comunicații aflați la o altitudine atât de mică sunt problematici deoarece se găsesc în raza vizuală a unei stații de pe Pământ numai un interval scurt de timp.
Totuși, la o altitudine de aproximativ 36.000 km deasupra ecuatorului, perioada unui satelit este de 24 de ore și, prin urmare, satelitul se învârte la aceeași viteză cu Pământul. Un observator care se uită la un satelit de pe o orbită ecuatorială circulară, vede satelitul într-un punct fix de pe cer, aparent nemișcat. Este ideal ca satelitul să apară fix pe cer, doarece altfel ar fi nevoie pentru urmărirea sa de o antenă rotativă foarte scumpă.
Pentru a evita interferența, în condișiile tehnologiilor actuale, nu este bine să existe sateliți poziționați mai aproape de 2 grade în planul ecuatorial de 360 de grade. La o spațiere de 2 grade pot exista pe cer la un moment dat doar 180 de sateliți de comunicație geostaționari. O parte din aceste poziții pe orbită sunt rezervate pentru alte clase de utilizatori (de exemplu difuzare de televiziune, în scopuri guvernametale sau militare).
Din fericire, sateliții care folosesc porțiuni diferite din spectru nu interferă și, de aceea, fiecare din cei 180 sateliți posibili pot avea mai multe fluxuri de date care urcă și coboară simultan. Prin urmare, dacă lucrează la frecvențe diferite, doi sau mai mulți sateliți pot ocupa aceeași poziție pe orbită.
Pentru a evita haosul total pe cer, s-au realizat acorduri internaționale referitoare la cine poate ocupa o poziție pe orbită și ce frecvențe poate folosi. Cele mai importante benzi comerciale sunt ilustrate în figura 2.11. Banda C a fost desemnată inițial pentru traficul comercial prin sateliți. În banda C sunt asigurate două domenii de frecvență, cea mai mică pentru traficul descendent (dinspre satelit), iar cea superioară pentru traficul ascendent (către satelit). Pentru o conexiune full-duplex este necesar un canal în ambele sensuri. Aceste benzi sunt deja supraaglomerate, deoarece sunt folosite și de purtătoarele pentru legăturile terestre pe microunde.
Următoarea bandă mai înaltă disponibilă pentru companiile comerciale de telecomunicație este banda Ku. Această bandă nu este încă congestionată și – la aceste frecvențe – sateliții pot fi poziționați la o apropiere de un grad. Totuși, există o altă problemă: ploaia. Apa este un absorbant excelent al acestor microunde scurte. Din fericire, furtunile torențiale sunt de obicei localizate și, prin urmare, folosind mai multe stații terestre separate prin distanțe mari, în loc de una singură, problema poate fi evitată cu prețul unui surplus de antene, cabluri și electronică pentru a comuta rapid între stații. Lățimea de bandă a benzii Ka a fost de asemenea alocată pentru traficul comercial prin satelit, dar echipamentul necesar pentru folosirea ei este încă foarte scump. În plus față de aceste benzi comerciale, există de asemenea multe benzi guvernamentale și militare.
Un satelit obișnuit are 10-12 transpondere, fiecare cu o lățime de bandă de 36-50 MHz. Un transponder de 50 Mbps poate fi folosit pentru a codifica un singur flux de date de 50 Mbps, 800 canale vocale digitale de 64 Kbps, sau diverse alte combinații. Mai mult decât atât, două transpondere pot folosi polarizări diferite ale semnalului, prin urmare ele pot folosi același domeniu de frecvențe fără să interfere. În sateliții mai vechi, împărțirea transponderelor pe canale s-a făcut static, prin despicarea lățimii de bandă în benzi fixede frecvență (FDM). În prezent, se folosește de asemenea multiplexarea cu divizare în timp datorită marii sale flexibilități.
Primii sateliți aveau un singur fascicol spațial care ilumina întregul Pământ. Odată cu scă derea masivă a prețului, dimensiunii și cerințelor de putere ale microelectronicii, a devenit posibilă o strategie de difuzare mult mai sofisticată. Fiecare satelit este echipat cu antene și transpondere multiple. Fiecare fascicol descendent poate fi focalizat pe o arie geografică mică și prin urmare pot avea loc simultan, transmisii ascendente și descsndente multiple. Aceste așa numite fascicole punctuale sunt în mod obișnuit de formă eliptică și pot avea până la câteva sute de km în diametru. Un satelit de comunicații pentru Statele Unite are în mod normal un singur fascicol larg pentru cele 48 de state alăturate, plus fascicole punctuale pentru Alaska și Hawaii.
O nouă realizare în lumea comunicațiilor prin satelit o constituie dezvoltarea microstațiilor de cost scăzut, denumite uneori și VSAT-uri (Verz Small Aperture Terminals – Terminale cu Deschidere Foarte Mică). Aceste mici terminale au antene de 1 metru și pot emite cu o putere de aproximativ 1 Watt. Legătura ascendentă este în general bună pentru 19.2 kbps, dar cea descendentă este mai mare, deseori de 512 kbps. În multe sisteme VSAT, microstațiile nu au suficientă putere pentru a comunica direct între ele (prin intermediul satelitului). În schimb, se folosește o stație terestră specială, un hub, cu o antenă mare, de câștig ridicat, pentru a retransmie traficul dintre VSAT-uri, așa cum este prezentat în figura 2.12. În acest mod de lucru, atât emițătorul cât și receptorul dispun de o antenă largă și de un amplificator puternic.
Sateliții de comunicație au câteva proprietăți care se deosebesc radical de legăturile terestre punct-la-punct. Ca un prim aspect, cu toate că semnalele spre și dinspre satelit se propagă cu viteza luminii, distanța mare dus-întors introduce o întârziere substanțială. Funcție de distanța dintre utlizator și stația terestră și de înălșimea satelitului deasupra orizontului, timpul de propagare capăt-la-capăt este între 250 și 300 msec. O valoare uzuală este de 270 msec (540 msec pentu un sistem VSAT cu un hub).
Pentru comparație, legăturile terestre prin microunde au o întârziere de propagare în jur de 3 msec/km, iar legăturile pe cablu coaxial sau fibră optică au o întârziere de aproximativ 5 msec/km.
O altă proprietate importantă a sateliților este aceea că ei sunt în mod inerent sisteme cu difuzare. Transmiterea unui mesaj către miile de stații din raza de acțiune a unui transponder costă tot atât de mult cât pentru o singură stație. Pentru unele aplicații, această proprietate este foarte utilă. Chiar atunci când difuzarea poate fi simulată folosind linii punct-la-punct, difuzarea prin satelit poate fi mult mai ieftină. Pe de altă parte, din punctul de vedere al seurității și confidențialtății, sateliții sunt un dezastru complet: oricine poate asculta orice. Atunci când este necesară securitatea, criptarea este esențială.
Sateliții au de asemenea proprietatea că prețul transmisiei unui mesaj este independent de distanța parcursă. Sateliții au rate de eroare excelente și pot fi instalați aproape instantaneu, un considerent major pentru comunicațiile militare.
2.5.2. Sateliți de Joasă Altitudine
În primii 30 de ani ai erei sateliților, sateliții de joasă altitudine au fost rareori folosiți pentru comunicații, deoarece ei apar și dispare destul de repede din câmpul vizual. În 1990 Motorola a obținut acordul FCC în vederea lansării a 77 de sateliți de joasă altitudine pentru proiectul Iridium. Ideea era că în momentul în care un satelit dispare din câmpul vizual, ar putea să-i ia locul un alt satelit.
Scopul principal al sistemului Iridium este să furnizeze servicii mondiale de telecomunicație, folosind dispozitive portabile care să comunice direct cu sateliții Iridium. Sistemul funizează servicii vovale, de date, paging, fax și navigare, în orice loc de pe glob.
Sistemul folosește ideea din radioul celular, dar cu o modificare. În mod normal, celulele sunt fixe și utilizatorii sunt mobili. În acest caz, fiecare satelit are un număr considerabil de raze punctuale care pot scana Pământul pe măsură ce satelitul se deplasează. De aceea, în acest sistem, atât celulele cât și utilizatorii sunt mobili, dar tehnicile de transfer folosite pentru radioul celular se aplică la fel, atât pentru cazul în care celula părăsește utilizatorul cât și pentru cazul în care utilizatorul părăsește celula.
Sateliții trebuie poziționați la o altitudine de 750 km pe orbite polare circulare. Ei vor fi aranjați în formă de coliere nord-sud, cu un satelit la fiecare 32 de grade latitudine. După cum se sugerează în figura 2.13 (a), cu șase coliere de sateliți s-ar putea acoperi întregul Pământ.
După cum este prezentat în figura 2.13 (b), fiecare satelit va avea maximum 48 de raze punctulae, cu un total de 1628 celule pe suprafața Pământului. Frecvențele pot fi refolosite două celule mai încolo, ca și în radioul celular convențional. Fiecare celulă va avea 174 canale full-duplex, cu un total de 283.272 canale pe tot globul. O parte din aceste vor fi pentru paging și navigare, care nu necesită o mare lățime de bandă.
Legăturile ascendente și cele descendente vor lucra în banda L, la 1,6 GHz. În felul acesta, comunicarea cu un satelit este posibil să se face folosind un dispozitiv alimantat cu o baterie mică. Mesajele recepționate de un satelit, dar destinate unui alt satelit aflat la distanță, vor fi retransmise între sateliți în banda Ka. În spațiul exterior este disponibilă suficientă lățime de bandă pentru legături intersatelit. Factorul limitator l-ar putea constitui segmentele ascendente/descendente.
CAP. 3. SUBNIVELUL DE ACCES LA MEDIU
3.1. Protocoale pentru Rețele LAN fără Fir
Pe măsură ce numărul de echipamente de calcul și comunicație crește, același lucru se întâmplă și cu nevioa lor de conectare la lumea exterioară. Chiar și primele telefoane portabile, aveau posibilitatea de a se conecta la alte telefone. Primele calculatoare ortabile nu au avut această posibilitate, dar curând după accea, modemurile au devenit un lucru obișnuit. Pentru a comunica, aceste calculatoare trebuiau să fie conectate la o priză telefonică de perete. Necesitatea unei conexiuni prin cablu la o rețea fixă însemna că de fapt calculatoarele, deși erau portabile, nu erau mobile.
Pentru a obține o adevărată mobilitate, calculatoarele portabile trebuie să utilizeze pentru comunicație semnale radio (sau infraroșii). Astfel, utilizatorii dedicați pot citi sau trimite poșta electronică în timp ce merg cu mașina sau cu vaporul. Un sistem de calculatoare portabile care comunică prin radio poate fi privit ca un LAN fără fir. Aceste LAN-uri au proprietăți oarecum diferite față de LAN-urile convenționale și necesită protocoale speciale pentru subnivelel MAC.
O configurație obișnuită pentru un LAN fără fir este o clădire cu birouri, cu stațiile de bază amplasate strategic în jurul clădirii. Toate stațiile de bază sunt interconectate prin cabluri de cupru sau fibră optică. Dacă puterea de emisie a stațiilor de bază și a calculatoarelor portabile este reglată la o rază de acțiune de 3 sau 4 metri, atunci fiecare cameră devine o singură celulă, iar întreaga clădire devine un mare sistem celular, ca în sistemele de telefonie celulară tradițională studiate în Cap. 2. Însă, spre deosebire de sistemele de telefonie celulară, fiecare celulă are un singur canal, acoperind întreaga lărgime de bandă disponibilă. În mod normal, lărgimea de bandă a canalului este de 1-2 Mbps.
În continuare vom presupune că toți emițătorii radio au un domeniu fix. Atunci când un receptor se află în raza a doi emițători activi, semnalul rezultat va fi, în general, amestecat și neutilizabil (cu câteva excepții). În unele LAN-uri fără fir nu toate stațiile se află în domeniul celorlalte, ceea ce duce la o serie de complicații. Mai mult, pentru LAN-uri de incintă fără fir, prezența pereților între stații poate avea un impact major asupra domeniului efectiv al fiecărei stații.
O abordare naivă în construirea unui LAN fără fir o constituie încercarea de utilizare a protocolului CSMA (Carrier Sense Multiple Access – acces multiplu cu detecție de purtătoare): ascultarea celorlalte transmisiuni și transmisia numai în cazul în care nimeni nu transmite. Problema este că acest protocol nu este chiar potrivit, deoarece nu contează interferența la emițător, ci cea la receptor. Pentru a vedea natura problemei, să privim figura 3.1, în care apar patru stații nelegate prin cablu. Pentru ceea ce vrem să arătăm, nu contează care sunt stații de bază și care sunt calculatoare portabile. Domeniul (de recepție) radio are proprietatea că A și B sunt fiecare în domeniul celeilalte și pot interfera una cu cealaltă. Și C poate să interfereze atât cu B, cât și cu D, dar nu cu A.
Să considerăm mai întâi ce se întâmplă când A transmite către B, ca în figura 3.1 (a). Dacă ascultă mediul, ea nu o va auzi pe A, pentru că A este în afara domeniului ei, trăgând concluzia falsă că poate transmite. Dacă C începe să transmită, ea va interfera la B cu cadrul de la A, distrugându-l. Problema stației care nu poate detecta un potențial competitor la mediu pentru că se află prea departe este numită uneori problema stației ascunse (hidden station problem).
Să considerăm acum situația inversă: B transmite către A, ca în figura 3.1 (b). Dacă C ascultă mediul, va sesiza transmisia și va deduce în mod incorect că nu poate transmite către D, când de fapt o asemenea transmisie ar cauza o proastă recepșie doar în zona cuprinsă între B și C, unde nu se pot afla nici unul dintre receptorii vizați. Această situație se numește și problema stației expuse (exposed station problem).
Problema este că înainte de a începe o transmisiune, o stație dorește să știe dacă în preajma receptorului se desfașoară sau nu vreo activitate. CSMA sesizeasă acest lucru prin simpla detecție a purtătoarei. Prin cablu, toate semnalele se propagă la toate stațiile, așa că, la un moment dat, poate avea loc o singură transmisie, indiferent de zona sistemului în care se desfășoară ea. Într-un sistem bazat pe unde radio cu domeniu mic, se pot desfășura mai multe transmisiuni simultan, dacă acestea au destinații diferite și aceste destinații au domenii disjuncte.
Altă cale de abordare a acestei probleme este să ne închipuim o clădire de birouri în care fiecare angajat are un calculator portabil nelegat prin cablu. Să presupunem că X vrea să transmită un mesaj la Y. Calculatorul lui X ascultă mediul local și, nedetectând nici o activitate, începe să transmită. Totuși, se mai poate produce o coliziune în biroul lui Y, pentru că Z îi transmitea deja dintr-un alt loc, atât de departe de X încât calculatorul acestuia nu a putut detecta acest lucru.
MACA și MACAW
Unul dintre primele protocoale concepute pentru LAN-urile fără fir este MACA (Multiple Access with Collision Avoidance – Acces Multiplu cu Evitarea Coliziunii). El a fost utilizat ca bază pentru standardul de LAN fără fir IEEE 802.11. Ideea de bază care stă în spatele său este ca emițătorul să stimuleze receptorul să emită un scurt cadru, astfel încât stațiile apropiate să poată detecta această tranimisune și să nu emită și ele pe durata cadrului de date care urmează. MACA este ilustrat în figura 3.2.
Să vedem acum modul în care A îi transmite un cadru lui B. A începe prin a emite un cadru RTS (Request To Send – cerere de emisie) către B, ca în figura 3.2(a). Acel scurt cadru de 30 de octeți conține lungimea cadrului de date care va urma. Apoi B răspunde cu un cadru CTS (Clear To Send – aprobare transmisie), ca în figura 3.2(b). Cadrul CTS conține lungimea datelor (copiată din cadrul RTS). La recepția cadrului CTS, A începe transmisia.
Să urmărim acum modul în care reacționează stațiile care recepționează vreunul din aceste cadre. Orice stație care aude RTS se află în mod cert în apropierea luiA și trebuie să tacă suficient de mult pentru ca CTS să poată fi trimis fără conflicte înapoi la A. Orice stație care recepționează CTS se află în mod cert în apropiere de B și trebuie să tacă în timpul transmisiei de date în curs, a cărei lungime o poate afla examinând cadrul CTS.
În figura 3.2, C se află în domeniul lui A, însă nu în domeniul lui B. De aceea, va auzi RTS de la A, dar nu și CTS de la B. Cât timp nu interferează cu CTS, ea este liberă să transmită în timp ce cadrul de date este emis. În schimb, D este în domeniul lui B, dar nu și în cel al lui A. Nu aude RTS, dar aude CTS. Recepționând CTS, își va da seama că este aproape de o stație care este pe cale să primească un cadru, așa că ea se va abține de la a emite ceva până când, după calculele sale, acel cadru se va termina. Stația E aude ambele mesaje de control și, ca și D, trebuie să tacă până la terminarea cadrului de date.
În ciuda acestor precauții, încă mai pot apărea coliziuni. De exemplu, B și C ar putea transmite simultan cadre RTS către A. Ele vor intra în coliziune și se vor pierde. În eventualitatea unei coliziuni, un emițător care nu a avut succes (adică unul care nu aude un CTS în intervalul de timp prevăzut) va aștepta o perioadă de timp aleatorie și va încerca din nou. Algoritmul utilizat este cel de regresie exponențială binară.
Prin studii de simulare a MACA, s-a reuțit îmbunătățirea performanțelor acestuia, rezultând un nou protocol, numit MACAW. S-a observat la început că, fără confirmări ale nivelului de legătură de date, cadrele pierdute nu erau retransmise până când, mult mai târziu, nivelul de transport le observa absența. S-a rezolvat această problemă introducând un cadru de confirmare, ACK, după fiecare cadru de date transmis cu succes. S-a mai observat că CSMA are o oarecare utilitate, și anuma să oprească o stație de la a transmite un RTS concomitent cu altă stație apropiată care face același lucru către aceeași destinație, așa că a fost adăugată și detecția de purtătoare. Algorimul de regresie se execută acum separat pentru fiecare flux de date (pereche sursă – destinație) și nu pentru fiecare stație. În final, pentru a îmbunătați performațele sistemului, s-a mai adăugat un mecanism ce permite stațiilor să schmibe informații despre congestia rețelei, precum și o cale de a face ca algoritmul de regresie să reacționeze mai puțin violent la problemele temporare.
Radioul Celular Digital
O a doua formă de rețele fără fir o reprezintă radioul celular, succesor al sistemului AMPS, pe care l-am studiat în Cap. 2. Radioul celular digital prezintă un mediu oarecum diferit fața de LAN-urile fără fir și utilizează protocoale diferite. În particular, el este orientat către telefonie, care cere mai degrabă conexiuni de ordinul minutelor, decât al milisecundelor, deci este mai eficientă alocarea canalelor per convorbire decât per cadru. Oricum, ambele tehnici sunt egal valabile în cazul traficului de date. În această secțiune vom trece în revistă trei abordări radical diferite în alocarea canalelor pentru sisteme radio digitale fără fir, și anume GSM, CDPD și CDMA.
GSM – sistemul global pentru comunicații mobile
În cazul comunicațiilor mobile, transmisia digitală are câteva avantaje față de cea analogică. Primul: vocea, datele și faxul pot fi integrate într-un singur sistem. al doilea: cu cât sunt descoperiți algorimi mai buni de compresie a vocii, cu atât este nevoie de o lărgime debandă mai îngustă pentru fiecare canal. Al treilea: pentru îmbunătățirea calității transmisiunii pot fi folosite coduri corectoare de erori. În fine, semnalele digitale pot fi criptate pentru asigurarea securității.
Sistemul digital european, GSM, a fost conceput de la început ca un sistem pur digital fără vreun compromis de dragul compatibilității înapoi. Întrucât GSM este mai înaintat față de sistemul Statelor Unite și este utilizat curent în peste 60 de țări din Europa și din afara ei, îl vom folosi ca exemplu de radio celular digital.
GSM a fost proiectat inițial pentru a fi utilizat în banda de 900 MHz. Mai târziu au fost alocate frecvențe și la 1800 MHz, iar un al doilea sistem, asemănător cu GSM a fost instalat acolo. El a fost denumit DCTS 1800, dar, în esență, este GSM.
Sistemul GSM are maxim 200 canale full-duplex pe celulă. Fiecare canal este construit dintr-o frecvență tur (de la stațiile mobile la stațiile de bază) și o frecvență retur (de la stația de baza la stațiile mobile). Fiecare bandă de frecvență are o largime de 200 kHz, ca în figura 3.3.
Fiecare din cele 124 de canale de frecvență suportă 8 conexiuni separate utilizând multiplexarea prin diviziunea timpului (TDM). Fiecărei stații active la un moment dat îi este repartizat o cuantă de timp pe un canal. Teoretic, fiecare celulă poate suporta 992 de canale, dar multe din ele nu sunt disponibile, pentru a evita conflictele de frecvență cu celulele vecine. În figura 3.3, cele opt cuante de timp hașurate aparțin aceluiași canal, câte patru pentru fiecare direcție. Dacă stația mobilă, căreia i s-au acordat frecvențele 890.4/935.4 MHz si cuanta 2, vrea să transmită stației de bază, ea ar utiliza cele patru cuante umbrite de jos (și pe cele care ar urma în timp), punănd date în fiecare cuantă, până când sunt transmise toate datele.
Cuantele TDM din figura 3.3 fac parte dintr-o ierarhie complexă de cadre. Fiecare cuantă TDM are o structură specifică, iar grupurile de cuante TDM formează multicadre, de asemenea cu o structură specifică. O versiune simplificată a acestei ierarhii este prezentată în figura 3.4.
Se observă că fiecare cuantă TDM este formată dintr-un cadru de date de 148 de biți. Fiecare cadru de date începe și se termină cu trei biți 0, pentru delimitarea cadrului. De asemenea, mai conține două câmpuri de informație de câte 57 de biți, fiecare având un bit de control care ne arată dacă următorul câmp de informație este pentru voce sau date. Între câmpurile de informație se află un câmp (de pregătire) de 26 de biți, Sync, utilizat de recptor pentru a se sincroniza cu capetele cadrului emițătorului. Un cadru de date este transmis în 547 msec, dar un emițător are voie să transmită un cadru de date doar la 4,615 msec, întrucât împarte canalul cu alte 7 stații. Rata totală a fiecărui canal este de 270833 bps, împărțită la 8 utilizatori. Scăzând încărcarea suplimentară, fiecare conexiune poate transmite un semnal de voce compresat sau 9600 bps de date.
După cum se poate vedea în figura 3.4, 8 cadre de date formează un cadru TDM, iar 26 de cadre TDM formează un multicadru de 120 msec. Din cele 26 de cadre TDM ale unui multicadru, cuanta 12 este utilizată pentru control, iar cuanta 25 este rezervată pentru utilizări viitoare, astfel încât doar 24 sunt disponibile pentru traficul utilizatorilor.
Totuși, pe lângă cele 26 de cuante ale multicadrului din figura 3.4, este utilizat și un multicadru de 51 de cuante care nu apare în figură. Unele dintre aceste cuante sunt utilizate pentru a păstra câteva canale de control folosite la administrarea sistemului. Canalul de control al difuzării (broadcast control channel) este un flux continuu de date emis de stația de bază și conține identitatea acesteia și starea canalului. Toate stațiile mobile îi urmăresc cu atenție semnalul, pentru a ști când au trecut într-o nouă celulă.
Canalul de control dedicat (dedicated control channel) este folosit la reactualizarea localizării, înregistrarea și stabilirea legăturii. În particular, fiecare stație de bază menține o bază de date a stațiilor mobile aflate momentan în perimetrul deservit de ea. Informațiile necesare pentru menținerea acestei baze de date sunt trimise prin canalul de control dedicat.
Mai există și canalul de control comun (common control channel), care este împărțit în trei subcanale logice. Primul dintre aceste subcanale este canalul de avertizare (paging channel), utilizat de stația de bază pentru a anunța apeluri către stațiile mobile. Fiecare stație îl ascultă permanent. Al doilea este canalul cu acces aleatoriu (random acces channel), prin care stațiile mobile pot cere o cuantă pe canalul de control dedicat. Cu ajutorul acestei cuante, o stație poate iniția o convorbire. Cuanta acordată este anunțată pe cel de-al treilea subcanal, canalul de acordare a accesului (access grant channel).
CDPD – pachete de date digitale celulare
GSM se bazează, în principal, pe comutare de circuite. Un calculator mobil cu un modem special poate realiza un apel utilizând un telefon GSM în același mod în care l-ar realiza printr-un telefon cablat. Totuși, utilizarea acestei strategii nu este lipsită de probleme. Pe de o parte, schimbarea stației de bază este frecventă, uneori chiar și pentru utilizatorii staționari (stațiile de bază își pot transfera utilizatori între ele, pentru echilibrarea încărcării), iar fiecare transfer îneamnă o pierdere de circa 300 msec. Pe de altă parte, GSM poate suferi de o rată înaltă a erorilor. În fine, apelurile fără fir sunt scumpe și nota de plată crește rapid, deoarece taxarea se face pe minut de conectare, nu pe octet transmis. O încercare de rezolvare a acestor probleme este reprezentată de un serviciu de datagrame digitale cu comutare de pachete, numit CDPD (Cellular Digital Packet Data). El este construit deasupra AMPS și este pe deplin compatibil cu acesta. În principiu, orice canal liber de 30 kHz poate fi obținut temporar pentru transmisia de cadre de date la o rată totală de 19,2 kbps. Pentru că CDPD implică o mică încărcare suplimentară, rata netă a datelor se situează aproape de 9600 bps. Totuși, un sistme de datagrame fără fir, neorientat pe conexiune, pentru transmisia, de exemplu, a pachetelor IP, utilizând actualul sistem de telefonie celulară, este o propunere interesantă pentru mulți utilizatori și, de aceea, utilizarea ei este tot mai frecventă.
CDPD urmează îndeaproape modelul OSI. Nivelul fizic se ocupă cu detaliile modulației și transmisiei radio. De asemenea, există protocoale pentru nivelurile de legătură de date, rețea și transport. În continuare, vom da o descriere generală a sistemului, iar apoi vom descrie protocolul de acces la mediu.
Un sistem CDPD este format din trei tipuri de stații: gazde mobile, stații de bază și stații de bază în interfață. Aceste stații interacționează cu gazdele staționare și cu ruterele standard, de tipul celor care se găsesc în orice WAN. Gazdele mobile sunt calculatoarele portabile ale utilizatorilor. Stațiile de bază sunt emițători care emit către stațiile mobile. Stațiile de interfață de bază sunt noduri speciale care interfațează toate stațiile de bază din zona unui furnizor de CDPD cu un ruter standard (fix), pentru a transmite mai departe prin Internet sau alt WAN. această configurație este prezentată în figura 3.5.
În CDPD sunt definite trei tipuri de interfețe. Interfața E (E-Interface), externă furnizorului de CDPD, conectează o zonă CDPD la o rețea fixă. Această interfață trebuie bine definită, pentru a permite CDPD să se conecteze la o varietate de rețele. Interfața I (I-Interface), internă furnizorului de CDPD, conectează două zone CDPD. Ea trebuie să fie standardizată, pentru a permite utilizatorilor să treacă de la o zona la alta. A treia interfață este Interfața A (A-Interface), interfața aeriană, între stația de bază și gazdele mobile.
Datele sunt transmise prin interfața aeriană compresate, criptate și cu corecția erorilor. Bucăți de câte 274 de biți compresați și criptați sunt impachetate în blocuri de 378 de biți, utilizând codul corector de erori Reed-Solomon. Fiecărui bloc RS îi sunt adăugate șapte cuvinte indicatoare de câte șase biți, formând blocuri de căte 420 de biți. Fiecare bloc de 420 de biți este împărțit în șapte microblocuri de câte 60 de biți care sunt transmise consecutiv. Fiecare microbloc își are propriul cuvânt indicator de șase biți, utilizați pentru a indica starea canalului. Aceste microblocuri trec printr-un canal retur (de la bază) de 19.2 Kbps, sau preintr-un al doilea canal, canalul tur (spre bază), de 19.2 Kbps, în modul full-duplex. Efectiv, atât canalul tur, cât și cel retur sunt cunatificate în timp ca o secvență de microblocuri de 60 de biți. Fiecare microbloc durează 3,125 msec.
Fiecare celulă CDPD are o singură pereche tur/retur disponibilă pentru date. Canalul retur este ușor de administrat, întrucât există un singur emițător pe celulă: stația de bază. Toate cadrele transmise prin el sunt difuzate, fiecare gazdă mobilă selectându-le doar pe acelea destinate ei sau tuturora.
Partea complicată este canalul tur, pentru care concurează toate gazdele mobile care vor să transmită. Când o gazdă mobilă are de transmis un cadru, va urmări canalul retur pentru un bit indicator care îi spune dacă cuanta curentă de pe canalul tur este liberă sau ocupată. Dacă este ocupată, în loc să aștepte pentru următoarea cuantă de timp, sare peste un număr aletoriu de cuante și încearcă din nou. Dacă iarăși vede canalul tur ocupat, așetaptă un timp aleatoriu mai îndelungat și repetă procedura. Timpul de așteptare mediu statistic se dublează la fiecare încercare nereușită. Când, în sfărșit, reușește să prindă canalul presupus liber, începe să-și transmită microblocul.
Esența acestui algoritm, numit DSMA (Digital Sense Multiple Access – access multiplu cu detectie digitala) este să evite ca toate gazdele mobile să se precipite pe canalul tur imediat ce acesta devine liber.
Necazul este că, în ciuda DSMA, încă mai este posibilă o coliziune cu altă gazdă mobilă, deoarece două sau mai multe dintre ele pot alege aceeași cuantă de timp pentru a începe emisia. Pentru a permite gazdelor mobile să descopere dacă au suferit sau nu o coliziune, un bit indicator din fiecare microbloc arată dacă microblocul precedent de pe canalul tur a fost recepționat corect. Din nefericire, stația de bază nu poate determina acest lucru instantaneu după terminarea unui microblocl, astfel că recepția corectă/incorectă a microblocului n este întârziată până la microblocul n+2.
Întrucât nu poate aprecia dacă o transmisiune s-a efectuat cu succes în cazul în care un emițător are mai multe blocuri de transmis, le va transmite pur și simplu, fără a fi nevoit să capete din nou canalul. Dacă în cuanta de timp următoare constată că transmisia sa anterioară a eșuat, se oprește. Altfel, va continua să transmită, până la un anumit număr maxim de blocuri Reed-Solomon sau până când stația de bază setează un bit indicator pe canalul retur, pentru a-i spune că deocamdată a auzit destul de la respectivul emițător.
O propietate suplimentară a CDPD este că utilizatorii de date sunt un fel de cetățeni de categoria a doua. Atunci când o nouă transmisiune de voce este pe cale să primească un canal utilizat momentan pentru CDPD, stația de bază emite un semnal special pe retur, închizând canalul. Dacă stația de bază cunoaște deja numărul noului canal CDPD, îl anunță. Astfel, pentru a-l găsi, gazdele mobile trebuie să îl vâneze dintr-o mulțime cunoscută de potențiale canale CDPD. În acest fel, CDPD poate absorbi orice capacitate liberă dintr-o celulă fără a interfera cu vocea.
Ar trebui să rezulte clar din această descriere că CDPD a fost adăugat sistemului de voce după ce acesta din urmă era deja operațional, iar proiectarea sa era constrânsă de faptul că nu se puteau efectua modificări aspura sistemului de voce. În consecință, atunci când se execută selecția canalului pentru transmisiuni vocale, algoritmul nu ține cont de existența CDPD. Acesta este motivul pentru care canalul CDPD este uneori confiscat brusc. Oricum, nimic nu ne împiedică să avem canale CDPD dedicate. Cu cât CDPD crește în popularitate, cu atât este mai probabil ca furnizorii să rezerve canale exclusiv pentru el.
CDMA – acces multiplu cu diviziunea codului
GSM ar putea fi descris ca o soluție brutală pentru alocarea canalului. El utilizează o combinație de, practic, toate tehnicile cunoscute, întrețesute complex. CDPD folosit la transmisiuni de cadre singulare este la bază CSMA persistent. Vom examina acum încă o metodă de alocare a unui canal fără fir, CDMA (Code Division Multiple Access).
CDMA este complet diferit de toate celelalte tehnici de alocare studiate până acum. Unele dintre ele erau bazate pe pe împărțirea canalului în benzi de frecvență și repartizarea acestora static (FDM – multiplexare cu divizare în frecvență) sau la cerere, deținătorul utilizând banda neprecizat de mult. Alte tehnici alocau canale în rafale, reparizând întregul canal static sau dinamic. CDMA permite fiecărei stații să transmită în continuu pe întreg spectrul de fracvență. Transmisiunile multiple simultane sunt separate cu ajutorul teoriei codificării. CDMA presupune că semnalele muliple sunt însumate.
În CDMA fiecare interval de bit este divizat în m intervale scurte numite așchii. În mod obișnuit sunt 64 sau 128 de așchii/bit, dar în exemplul de mai jos, pentru simplificare, vom folosi doar 8 așchii/bit.
Fiecare stație are un cod unic pe m biți, numit și secvență de așchii. Pentru a transmite un bit 1, o stație își trimite propria secvență de așchii. Pentru a transmite un bit 0, ea va trimite complementul secvenței sale de așchii. Nici o altă secvență nu este permisă. Astfel, pentru m = 8, dacă stația A are secvența 000110011, va trimite un 1 cu 00011011 și un 0 cu 11100100.
Creșterea cantității de informație transmisă de la b biți/sec l mb așchii/sec poate fi realizată dacă lărgimea de bandă disponibilă este mărită de m ori, făcînd astfel ca CDMA să fie o formă de comunicație cu spectru larg (presupunând că nu se fac schmibări în tehnicile de modulație sau codificare). Dacă avem o bandă de 1 MHz pentru 100 de stații, cu FDM fiecare ar avea 10 kHz și ar putea emite la 10 Kbps (presupunînd un bit pe Hz). Cu CDMA, fiecare stație folosește toată banda de 1 MHz, astfel că rata așchiilor este de 1 megaașchie pe secundă. Cu mai puțin de 100 de așchii pe bit, lărgimea de bandă efectivă pentru fiecare stație este mai mare la CDMA decât la FDM, iar problema alocării canalului este de asemenea rezolvată.
Vom folosi pentru exemplificarie o notație bipolară, cu 0 binar reprezentat ca -1, iar 1 binar ca +1. Secvențele de așchii le vom scrie între paranteze, așa că un bit pentru stația A va deveni (-1 -1 -1 +1 +1 -1 +1 +1). În figura 3.6(a) sunt prezentate secvențele de așchii binare asociate celor patru stații luate ca exemplu. În figura 3.6(b) ele sunt prezentate în notația bipolară.
Fiecare stație are propria sa secvență de așchii. Vom folosi simbolul S pentru a indica vectorul de m așchii pentru stația S și ~S pentru negația sa. Toate secvențele de așchii sunt ortogonale două căte două, prin aceasta înțelegând că produsul scalar normat al oricăror două secvențe distincte de așchii S și T, notat S • T, este 0.
În termeni matematici,
Altfel spus, toate perechile care se pot forma sunt diferite între ele. Această proprietate de ortogonalitate se va dovedi crucială mai târziu. De notat că dacă S • T = 0, atunci și S • ~T este tot 0. Produsul scalar normat al oricărei secvențe de așchii cu sine însăși este 1:
Acest lucru se întâmplă deoarece fieecare din cei m termeni ai produsului scalar este 1, astfel că suma este m. De notat, de asemenea, că S • ~S = -1.
În timpul fiecărui interval de bit, o stație poate transmite un 1 emițând propria secvență de așchii, sau poate transmite un 0, emițând complementul secvenței sale de așchii, sau poate să nu transmită nimic. Pentru moment, vom presupune că toate stațiile sunt sincronizate în timp, astfel că toate secvențele de așchii încep în același moment.
Când două sau mai multe stații transmit simultan semnalele lor bipolare se adună liniar. De exemplu, dacă într-un interval de așchie 3 stații emit +1 și o stație emite -1, rezultatul este +2.
În figura 3.6(c) avem șase exemple de una sau mai multe stații transmițând simultan. În primul exemplu, C transmite un bit 1, deci vom obține secvența de așchii a lui C. În al doilea exemplu, atât B cât și C tranmit biți de 1, deci vom obține suma secvențelor lor de așchii bipolare, și anume:
(-1 -1 +1 -1 +1 +1 +1 -1)+(-1 +1 -1 +1 +1 +1 -1 -1)=(-2 0 0 0 +2 +2 0 -2)
În cel de-al treilea exemplu, stația A emite un 1 iar stația B emite un 0. Celelalte tac. În al patrulea exemplu, A și C emit câte un bit 1, în timp ce B emite un bit 0. În al cincilea exemplu, toate cele patru stații emit câte un bit 1. În final, în ultimul exemplu, A, B și D emit câte un bit 1, în timp ce C emite un bit 0. Să notăm că fiecare dintre cele șase secvențe, până la , date în figura 3.6(c) repreyintă durata unui singur bit.
Pentru a reface șirul de biți al unei stații individuale, receptorul trebuie să cunoască dinainte secvența de așchii a stației. El face recuperarea calculând produsul scalar normat între secvența de așchii recepționată (suma liniară a tuturor stațiilor care au transmis) și secvența de așchii a stației al cărei șir de biți încearcă să îl refacă. Dacă secvența de așchii recepționată este S și receptorul încearcă să asculte de la o stație a cărei secvență de așchii este C, atunci va calcula doar produsul scalar normat, S • C.
Pentru a vedea de ce se întâmplă așa, imaginați+vă două stații, A și C, ambele transmițând un bit 1 în același timp în care B transmite un bit 0. Receptorul primește suma: S = A + ~B + C și calculează:
S•C = (A+~B+C)•C = A•C+~B•C+C•C = 0+0+1 = 1
Primii doi termeni dispar, deoarece toate perechile de secvențe de așchii au fost alese cu grijă pentru a fi ortogonale. Acum ar trebui să fie clar de ce această proprietate trebuie impusă secvențelor de așchii.
Un alt mod de a gândi relativ la această situație este de a ne imagina toate cele trei secvențe de așchii sosite separat, în loc să fie însumate. Atunci receptorul ar calcula produsul scalar cu fiecare separat și ar aduna rezulatele. Datorită proprietății de ortogonalitate, toate produsele interne în afară de C • C ar fi 0. Adunându-le și apoi făcând produsul lor scalar este, de fapt, același lucru cu calculul produselor internei și adunarea acestora.
Pentru a face procesul de decodificare mai concret, să considerăm din nou cele șase exemple din figura 3.6(d). Să presupunem că receptorul este interesat în extragerea bitului trimis de stația C din fiecare din cele șase sume de la la . Ea calculează acest bit prin însumarea perechilor de produse între vectorul S recepționat și vectorul C din figura 3.6(b), luând apoi 1/8 din rezultat (deoarece în acest caz m=8). Așa cum am arătat, de fiecare dată este decodificat bitul corect.
Într-un sistem CDMA ideal, fără zgomote, capacitatea (adică numărul de stații) poate fi mărită arbitrar de mult, așa cum și capacitatea unui canal Nyquist fără zgomote poate fi mărită arbitrar de mult prin utilizarea unui număr tot mai mare de biți pe eșantion. În practică, limitările fizice reduc considerabil capacitatea. La început, am presupus că toate așchiile sunt sincronizate în timp. În realitate, aceasta este imposibil de realizat. Ceea ce se poate face este ca emițătorul și receptorul să se sincronizeze prin expedierea de către emițător a unei secvențe de așchii cunoscute, suficient de lungă pentru ca receptorul să o poată localiza. Astfel, toate celelalte transmisii (nesicronizate) sunt percepute ca un zgomot aleatoriu. Dacaă ele nu sunt pre numeroase, algoritmul fundamental de decodificare funcționează totuși destul de bine. Cu cât o secvență de așchii este mai lungă, cu atât este mai mare probabilitatea detectării ei corecte în prezența zgomotului. Pentru o mai mare siguranță, secvența de biți poate folosi un cod corector de erori. Secvențele de așchii nu folosesc niciodată coduri corectoare de erori.
O presupunere implicită în discuția anterioară este că nivelurile de putere ale tuturor stațiilor sunt aceleași cu cele percepute de receptor. Protocolul CDMA este folosit în mod obișnuit pentru sistemele fără fir cu o stație de bază fixă și cu multe stații mobile la distanțe variabile de aceasta. Nivelurile de putere recepționate la stația de bază depind de cît de departe sunt emițătorii. În acest caz, o euristică bună este ca fiecare stație mobilă să emită către stația de bază la un nivel invers de putere față de cel primit de la stația de bază, astfel încât o stație mobilă care recepționează un semnal slab de la bază va folosi mai multă putere decât una care primește un semnal puternic. De asemenea, stația de bază poate să comande stațiilor mobile să crească sau să scadă puterea lor de emisie.
De asemenea, am presupus că receptorul știe cine este emițătorul. În principiu, având suficientă capacitate de calcul, receptorul poate asculta toți emițătorii deodată, prin rularea algoritmului de decodificare pentru fiecare dintre ei în paralel. Cu toate acestea, CDMA este o strategie inteligentă care este rapid introdusă în comunicațiile mobile fără fir.
3.2. Rețele de Sateliți
WAN-urile bazate pe comunicații prin sateliți sunt singurele rețele de acest tip (WAN), care folosesc canale cu acces multiplu. Vom trata în continuare problemele care apar în cadrul acestor rețele și protocoalele creeate pentru rezolvarea lor.
De obicei, sateliții de comunicație au în jur de douăsprezace sau mai multe transpondere. Fiecare transponder are un fascicul care acoperă o porțiune din suprafața Pământului, variind de la un fascicul larg cu diametrul de 10000 km, la un fascicul localizat cu diametrul de numai 250 km. Stațiile din interiorul suprafeței acoprite de fascicul pot trimite cadre satelitului prin frecvența de ridicare. Satelitul le transmite apoi pe frecvența de coborâre. Pentru ridicare și coborâre se folosesc frecvențe diferite pentru a împiedica transponederul să intre în oscilație. Sateliții care nu fac prelucrare locală, ci doar amplifică și retransmit orice aud (cei mai mulți dintre ei) se numesc sateliți de tip conductă cotită (bent pipe).
Fiecare antenă se poate orienta către o anumită suprafață, poate transmite câteva cadre și apoi reorienta către altă suprafață. Poziționarea se face electronic, dar tot durează un număr de microsecunde. Timpul în care un fascicul stă poziționat pe o suprafață dată se numește timp de staționare (dwell time). Pentru eficiență maximă acesta nu trebuie să fie prea scurt, pentru că altfel s-ar pierde prea mult timp cu mutarea fasciculului.
La fel ca și în cazul LAN-urilor, una dintre problemele cheie de proiectare este cum să fie alocate canalele transponderelor. Totuși, spre deosebire de LAN-uri, detectarea purtătoarei este imposibilă datorită unei întârzieri de propagare de 270 msec. Când o stație detectează starea unui canal de coborâre, aude ce s-a întâmplat cu 270 msec în urmă. Detectarea unui canal de ridicare este în general imposibilă. Drept rezultat, protocoalele CSMA/CD (care presupun că o stație care transmite poate detecta coliziunile pe durata primilor biți transmiși și apoi să se retragă dacă are loc o coliziune) nu pot fi folosite în cazul sateliților.
Pe canalul de acces multiplu (ridicare) sunt folosite cinci clase de protocoale: interogare, ALOHA, FDM, TDM și CDMA. Problema principală este canalul de ridicare deoarece canalul de coborâre nu are decât un expeditor (satelitul) și nu are probleme de alocare a canalului.
3.2.1. Interogare
Modul tradițional de a aloca un singur canal între utilizatorii concurenți utilizează interogarea acestora. Este prohibitiv de costisitor ca satelitul să interogheze pe rând fiecare stație pentru a vedea dacă are un cadru, din cauza timpului de 270 msec necesar pentru fiecare secvență întrebare/răspuns.
Totuși, dacă toate stațiile de la sol sunt legate la o rețea de comutare de pachete (în mod obișnuit de bandă îngustă), se poate concepe o variantă a acestei idei. Ideea este să se aranjeze toate stațiile într-un inel logic astfel încât fiecare stație să-și cunoască succesorul. Prin acest inel terestru circulă un jeton, pe care satelitul nu îl vede niciodată. Unei stații îi este permis să transmită pe ridicare numai atunci când este în posesia jetonului. Dacă numărul stațiilor este mic și constant, dacă timpul de transmitere al jetonului este scurt și dacă rafalele de date transmise pe canalul de ridicare sunt mult mai lungi decât timpul de rotație a jetonului, schema are o eficiență moderată.
3.2.2. ALOHA
ALOHA simplu se implementează ușor: fiecare stație transmite atunci când vrea. Problema este că eficiența canalului nu se ridică peste 18%. În general, un asemenea factor de utilizare redusă este inacceptabil pentru sateliți care costă zeci de milioane de dolari fiecare.
Folosind ALOHA cuantificat, se dublează eficiența dar apare problema sincronizării tuturor stațiilor, pentru ca toate să știe când începe fiecare cuantă de timp. Din fericire, chiar satelitul are răspunsul, din moment ce este implicit un mediu de difuzare. O stație terestră, stația de referință, transmite periodic un semnal special, a cărui redifuzare este folosită de toate stațiile terestre ca origine a timpului. Dacă toate cuantele de timp au lungimea DT, fiecare stație știe acum că cuanta de timp k începe la intervalul kDT de la originea timpului. Deoarece ceasurile merg puțin diferit este necesară resincronizarea periodică, pentru a menține toate stațiile în fază. O complicație în plus este că timpul de propagare de la satelit este diferit pentru fiecare stație terestră, dar aceasta se poate corecta.
Pentru a mări utilizarea canalului de ridicare peste 1/e, putem să trecem de la canalul cu un singur flux de ridicare din figura 3.7(a) la schema cu două fluxuri de ridicare din figura 3.7(b). O stație care are un cadru de transmis alege la întâmplare unul dintre cele două canale de ridicare și trimite cadrul în următorul interval. Fiecare canal de ridicare operează apoi un canal ALOHA cuantificat independent.
Dacă unul dintre canalele de ridicare conține un singur cadru, acesta este pur și simplu transmis în cuanta de coborâre corespunzătoare mai târziu. Dacă amândouă canalele au succes, satelitul poate să memoreze unul dintre cadre, transmițându-l mai târziu în timpul unei cuante libere. Calculând probabilitățile, se poate arăta că, dat fiind un spațiu de memorare nelimitat, utilizarea coborârii poate fi adusă la 0,736, cu condiția măririi cu 50% a necesităților de bandă.
3.2.3. FDM
Multiplexarea prin divizarea frecvenței este cea mai veche și probabil încă cea mai folosită metodă de alocare a canalelor. Un transponder de 36 Mbps poate fi împărțit static în 500 canale PCM de 64 Kbps, fiecare operând la frecvența sa unică, pentru a evita interferența cu altele.
Deși simplă, FDM are anumite dezavantaje. În primul rând, este nevoie de benzi de gardă între canale pentru separarea stațiilor. Această cerință există pentru că nu este posibilă construirea unor emițători care emit toată energia în banda principală și nimic în benzile laterale/secundare. Cantitatea de bandă risipită în benzile de gardă poate reprezenta o fracțiune importantă din total.
În al doilea rând, stațiile trebuie controlate cu grijă în ceea ce privește puterea semnalului de ieșire. Dacă o stație emite putere prea mare în banda principală, va pune automat prea multă putere în benzile secundare, revărsându-se peste canalele adiacente și cauzând interferențe. În sfârșit, FDM este în întregime o tehnică analogică și nu este adecvată implementării în software.
Dacă numărul de stații este mic și fixat, canalele de frecvență pot fi alocate static în avans. Totuși, dacă numărul de stații sau încărcarea pe fiecare dintre acestea poate fluctua rapid, este nevoie de o formă de alocare dinamică a benzilor de frecvență. Un asemenea mecanism este sistemul SPADE folosit de câțiva sateliți Intelsat timpurii. Fiecare transponder SPADE a fost împărțit în 794 canale de voce PCM mai simple (64 Kbps) Împreună cu un canal obișnuit de semnalizare, de 128 Kbps. Canalele PCM erau folosite în perechi pentru a oferi serviciu full-duplex. Banda totală folosită de un transponder era de 50 Mbps pentru porțiunea de ridicare și de încă 50 Mbps pentru coborâre.
Canalul obișnuit de semnalizare era împărțit în unități de 50 msec. O unitate conținea 50 de cuante de 1 msec (128 biți). Fiecare cuantă aparținea cel mult uneia dintre cele 50 de stații terestre. Cînd o stație terestră avea informație de trimis, alegea la întâmplare un canal curent nefolosit și scria numărul acelui canal în următoarea cuantă de 128 de biți. În cazul în care canalul selectat era în continuare nefolosit atunci când cererea era văzută pe coborâre, canalul era considerat alocat și toate celelalte stații se abțineau de la a încerca să-l dobândească. Dacă două sau mai multe stații încercau să aloce același canal în același cadru, se producea o coliziune și trebuia să încerce din nou mai târziu. Atunci când o stație termina de folosit canalul, trimitea un mesaj de eliberare a cuantei sale din canalul comun.
3.2.4. TDM
La fel ca FDM, TDM este bine înțeles și larg folosit în practică. Necesită sincronizarea cuantelor de timp, dar aceasta poate fi oferită de o stație de referință, după cum este descris pentru ALOHA cuantificat de mai sus. Asemănător cu FDM, pentru un număr de stații mic și care nu variază, atribuirea cuantelor poate fi stabilită în avans și niciodată schimbată, dar pentru un număr variabil de stații sau pentru un număr fixat de stații cu înărcare variabilă în timp, cuantele de timp trebuie atribuite dinamic.
Atribuirea cuantelor se poate face în mod centralizat sau descentralizat. Ca exemplu de atribuire centralizată de cuante, să considerăm ACTS-ul experimental (Advanced Communication Technology Satellite – Satelitul cu tehnologie avansată de comunicare), care a fost proiectat pentru câteva zeci de stații. ACTS a fost lansat în 1992 și are patru canale TDM independente de 110 Mbps, două de ridicare și două de coborâre. Fiecare canal este organizat ca o secvență de cadre de 1 msec, fiecare cadru conținând 1728 cuante de timp. Fiecare cuantă de timp are partea utilă de 64 biți, permițând includerea unui canal de voce de 64 Kbps.
Fasciculele pot fi mutate de la o suprafață geografică la alta, dar din moment ce mutarea consumă câteva cuante de timp, în mod normal canalelor care au originea sau se termină în aceeași arie geografică le sunt atribuite cuante de timp succesive, pentru a mări timpul de staționare și a micșora pierderea de timp datorată mutării fasciculului. Astfel gestionarea cuantelor de timp necesită o cunoaștere în profunzime a amplasării geografice a stațiilor pentru a minimiza numărul către una din stațiile terestre, MCS (Master Control Station – stația de control principală).
Funcționarea ACTS este un proces continuu în trei pași, fiecare pas luând 1 msec. În pasul 1, satelitul primește un cadru și îl stochează într-un RAM cu 1728 intrări, aflat la bordul satelitului. În pasul 2, un calculator (aflat la bord) copiază fiecare intrare la ieșirea corespunzătoare (posibil pentru o altă antenă). În pasul 3, cadrul de ieșire este transmis pe coborâre.
Inițial, fiecărei stații îi este atribuită cel puțin o cuantă de timp. Pentru a dobândi canale suplimentare (pentru alte apeluri de voce), o stație trimite un scurt mesaj de cerere la MCS. Aceste mesaje folosesc un număr mic de biți suplimentari și oferă un canal de control special la MCS cu o capacitate de aproximativ 13 mesaje/sec pe stație. Canalele sunt dedicate; nu există dispute pentru ele.
Alocarea dinamică de cuante TDM este de asemenea posibilă. În cele ce urmează vom discuta trei scheme. În fiecare dintre aceste, cadrele TDM sunt împărțite în cuante de timp, cu fiecare cuantă având un posesor (temporar). Cuanta de timp poate fi folosită numai de posesor.
Prima schemă presupune că există mai multe cuante decât stații, astfel încât fiecărei stații îi este atribuită o cuantă implicită. Dacă sunt mai multe cuante decât stații, cuantele suplimentare nu sunt asociate nimănui. Dacă posesorul unei cuante nu o dorește pe durata ciclului curent, trece în așteptare. O cuantă fără nimic este un semnal pentru toți ceilalți că posesorul ei nu are trafic. În timpul cadrului următor, cuanta devine disponibilă oricui o vrea, pe bază de concurență.
Dacă posesorul dorește să-și recupereze cuanta sa "implicită", trimite un cadru, forțând astfel o coliziune (dacă mai există trafic). După coliziune, orice stație în afară de posesor trebuie să renunțe să folosească cuanta în următorul cadru. Astfel, posesorul poate întotdeauna să înceapă transmisia într-un interval de două cadre (în cel mai rău caz). La utilizare redusă a canalelor, sistemul nu are performanțe la fel de bune ca ALOHA cuantificat normal din moment ce, după fiecare coliziune, stațiile intrate în coliziune trebuie să se abțină de la un cadru pentru a vedea dacă posesorul vrea cuanta înapoi. Figura 3.8(a) prezintă un cadru cu opt cuante, dintre care șapte sunt deținute de G, A, F, E, B, C și respectiv D. Cea de-a opta cuantă nu aparține nimănui și poate fi disputată.
O a doua schemă este aplicabilă, chiar dacă numărul stațiilor este necunoscut și este variabil. În această metodă, cuantele nu au posesori permanenți, spre deosebire de metoda lui Binder. În schimb, stațiile concurează pentru canale folosind ALOHA cuantificat. De câte ori o transmisie este reușită, stația care a facut-o are dreptul la aceeași cuantă și în următorul cadru. Astfel, cât timp o stație are de trimis informații, poate să o facă la nesfârșit. În esență, propunerea permite un amestec dinamic de ALOHA cuantificat și TDM, cu numărul cuantelor atribuite fiecăruia variind la cerere. Figura 3.8(b) prezintă un cadru cu opt cuante. Inițial, E folosește ultima cuantă, dar după două cadre, nu mai are nevoie de aceasta. Trece în așteptare timp de un cadru, apoi D o culege și o păstrează până când termină.
O a treia schemă datorată lui Roberts, impune ca stațiile să facă cereri în avans înainte de a transmite. Fiecare cadru conține, să zicem, o cuantă specială (ultima din figura 3.8(c)) care este împărțită în V subcuante mai mici, folosite pentru a face rezervări. Atunci când o stație vrea să trimită date, emite un scurt cadru de cerere într-o subcuantă de rezervare aleasă la întâmplare. Dacă rezervarea este reușită (nu au loc coliziuni), atunci este rezervată următoarea cuantă (cuante) obișnuită. Toate stațiile trebuie să țină în premanență evidența lungimii cozii (numărul de cuante rezervate), astfel ca, atunci când orice stație face o rezervare reușită, să se știe peste câte cuante trebuie să sară înainte de a transmite. Stațiile nu trebuie sâ țină evidența celor aflați în coadă; trebuie să cunoască doar lungimea cozii. Atunci când lungimea cozii scade la 0, toate cuantele se transformă în subcuantele de rezervare pentru a mări viteza procesului de rezervare.
Deși TDM este larg folosit, cu și fără scheme de rezervare, are și el unele defecte. În primul rând, impune ca toate stațiile să fie sincronizate în timp, ceea ce nu este așa ușor în practică din cauză că sateliții au tendința de a aluneca pe orbită, ceea ce schimbă timpul de propagare la fiecare stație terestră. De asemenea, necesită ca fiecare stație terestră să fie capabilă de viteze rafală foarte mari. De exemplu, chiar dacă o stație ACTS poate avea numai un canal de 64 Kbps, ea trebuie să fie capabilă să emită o rafală de 64 biți într-o cuantă de timp de 578 nsec. Cu alte cuvinte, trebuie de fapt să opereze la 110 Mbps. În schimb, o stație FDM de 64 Kbps operează într-adevăr la 64 Kbps.
3.2.5. CDMA
Ultima schemă este CDMA. CDMA evită problema sincronizării în timp, cât și cea a alocării canalelor. Este complet descentralizată și în întregime dinamică.
Totuși, are două dezavantaje principale. În primul rând, capacitatea unui canal în prezența zgomotelor și a stațiilor necoordonate este în mod obișnuit mai mică decât ce poate realiza TDM. În al doilea rând, cu 128 așchii/bit (o valoare obișnuită), deși rata de transfer nu este mare, rata de așchii este mare, necesitând un emițător rapid și scump.
CAP. 4. PARTICULARITĂȚI ALE REȚELELOR FĂRĂ FIR LA NIVELURILE REȚEA ȘI TRANSPORT
4.1. Nivelul Rețea în Internet
La nivelul rețea, Internet-ul poate fi văzut ca o colecție de subrețele sau sisteme automate (AS-uri – Autonomous Systems) care sunt conectate împreună. Nu există o structură reală, dar există câteva coloane vertebrale majore. Acestea sunt construite din linii de înaltă capacitate și rutere rapide. Atașate la coloana vertebrală sunt rețelele regionale (de nivel mediu), iar la aceste rețele regionale sunt atașate LAN-urile din multe universități, companii și furnizori de servicii Internet.
Liantul care ține Internet-ul la un loc este protocolul de nivel rețea numit IP (Internet Protocol). Spre deosebire de protocoalele mai vechi de nivel rețea acesta a fost proiectat de la început având în vedere interconectarea rețelelor. Sarcina lui este de oferi cu eforturi maxime o cale pentru a transporta datagrame de la sursă la destinație, fără a ține seama dacă aceste mașini sunt sau nu în aceeași rețea sau dacă sunt sau nu alte rețele între ele.
Comunicația în Internet funcționează după cum urmează. Nivelul transport preia șiruri de date și le sparge în datagrame. În teorie, datagramele pot avea fiecare până la 6.4 Kocteți, dar în practică ele sunt de obicei în jurul valorii de 1500 octeți. Fiecare datagramă este transmisă prin Internet, fiind eventual fragmentată în unități mai mici pe drum. Când toate bucățile ajung în sfârșit la mașina destinație, ele sunt reasamblate la nivelul rețea în datagrama originală. Datagrama este apoi pasată nivelului transport, care o inserează în șirul de intrare al procesului receptor.
4.1.1. Protocolul IP
Un loc potrivit pentru a porni studiul protocolului IP este însuși formatul datagramelor IP. O datagramă IP constă dintr-o parte de antet și parte de text. Antetul are o parte fixă de 20 de octeți și o parte opțională cu lungime variabilă. Formatul antetului este prezentat în figura 4.1.
Câmpul Versiune memorează cărei versiuni de protocol îi aparține datagrama. Prin includerea unui câmp versiune în fiecare datagramă, devine posibil ca tranziția dintre versiuni să țină mult timp cu unele mașini rulând vechea versiune, iar altele rulând-o pe cea nouă.
Din moment ce lungimea antetului nu este constantă, un câmp din acesta, IHL, este pus la dispoziție pentru a spune cât de lung este antetul, în cuvinte de 32 de octeți. Valoarea minimă a antetului este de 20 de octeți care se aplică atunci când nu sunt prezente opțiuni. Valoarea maximă a acestui câmp de 4 biți este 15, ceea ce limitează antetul la 60 de octeți și, astfel, câmpul de opțiuni la 40 de octeți. Pentru unele opțiuni, cum ar fi cea care înregistrează calea pe care a mers un pachet, 40 de octeți sunt mult prea puțini făcând această opțiune nefolositoare.
Câmpul Tip Serviciu permite gazdei să comunice subrețelei ce tip de serviciu dorește. Sunt posibile diferite combinații de fiabilitate și viteză. Pentru vocea digitizată, livrarea rapidă are prioritate față de transmisia corectă. Pentru transferul de fișiere transmisia fără erori este mult mai importantă decât transmisia rapidă.
Câmpul însuși conține un câmp de 3 biți Precedență, 3 indicatori (flags), D, T și R, plus doi biți nefolosiți. Câmpul Precedență este o prioritate, de la 0(normal) la 7(pachet de control al rețelei). Cei trei biți indicatori permit gazdei să specifice ce o afectează cel mai mult din mulțimea: Delay, Throughput, Reliability. În teorie aceste câmpuri permit ruterelor să ia decizii între o legătură prin satelit sau o line dedicată. În practică ruterele curente ignoră total câmpul Tip Serviciu.
Lungimea totală include totul din datagramă – atât antet cât și date. Lungimea maximă este de 64 Ko.
Câmpul Identificare este necesar pentru a permite gazdei destinație să determine cărei datagrame aparține un nou pachet primit. Toate fragmentele unei datagrame conțin aceeași valoare de Identificare.
DF vine de la Don't Fragment. Acesta este un ordin dat ruterelor să nu fragmenteze datagrama pentru că destinația nu este capabilă să asambleze piesele la loc. De exemplu când un calculator pornește, memoria sa ROM poate cere să i se trimită o imagine de memorie ca o singură datagramă. Prin marcarea datagramei cu bitul DF emițătorul știe că aceasta va ajunge într-o singură bucată chiar dacă aceasta însemnă că datagrama trebuie să evite o rețea cu pachete mai mici pe calea cea mai bună și să aleagă o rută suboptimală. Este necesar ca toate mașinile să accepte fragmente de 576 octeți sau mai mici.
Deplasamentul fragmentului spune unde este locul fragmentului curent în cadrul datagramei. Toate fragmentele dintr-o datagramă, cu excepția ultimului trebuie să fie un multiplu de 8 octeți – unitatea de fragmentare elementară. Din moment ce sunt prevăzuți 13 biți, există un maxim de 8192 de fragmente pe datagramă, obținându-se o lungime maximă sa datagramei de 655536 octeți, cu unul mai mult decât câmpul Lungime totală.
Câmpul Timp de viață este un contor folosit pentru a limita durata de viață a pachetelor. Este prevăzut să contorizeze timpul în secunde, permițând un timp maxim de viață de 255 secunde. El trebuie să fie decrementat la fiecare salt (trecere printr-o rețea în alta), și se presupune că este decrementat de mai multe ori când stă la coadă un timp îndelungat într-un ruter. În practică el contorizează doar salturile. Când ajunge la valoarea 0, pachetul este eliminat și se trimite înapoi la gazda sursă un pachet de avertisment. Această facilitate previne hoinăreala la infinit a datagramelor, ceea ce se poate întâmpla dacă tabelele de dirijare devin incoerente.
Suma de control a antetului verifică numai antetul. O astfel de sumă de control este utilă pentru detectarea erorilor generate de locații de memorie proaste din interiorul unui ruter. Algoritmul este de a aduna toate jumătățile de cuvinte, de 16 biți, atunci când acestea sosesc, folosind aritmetică în complement față de 1 și păstrarea complementul față de 1 al rezultatului. Pentru scopul acestui algoritm suma de control a antetului este presupusă a fi 0 după sosire. Acest algoritm este mai robust decât folosirea unei adunări normale.
Adresa sursei și Adresa destinației indică numărul de rețea și numărul de gazdă. Câmpul Opțiuni a fost proiectat pentru a oferi un subterfugiu care să permită versiunilor viitoare ale protocolului să includă informații care nu sunt prezente în proiectul original, pentru a permite cercetătorilor să încerce noi idei și pentru a evita alocarea unor biți din antet pentru informații folosite rar. În acest moment sunt definite cinci opțiuni așa cum sunt listate în figura 4.2.
Opțiunea Securitate menționează cât de secretă este informația.
Opțiunea Dirijare strictă pe baza sursei dă calea completă de la sursă la destinație ca o secvență de adrese IP. Datagrama este obligată să urmărească această cale precisă. Ea este deosebit de utilă pentru administratorii de sistem pentru a trimite pachete de urgență atunci când tabelele de dirijare sunt distruse sau pentru a realiza măsurători de timp.
Opțiunea Înregistrează calea indică ruterelor pe ce cale să își adauge adresele lor IP la câmpul Opțiune. Aceasta permite administratorilor de sistem să localizeze pene în algoritmii de dirijare.
Opțiunea Amprentă de timp este similară opțiunii Înregistrează ruta, cu excepția faptului că, în plus față de înregistrarea adresei sale de 32 biți, fiecare ruter înregistrează și o amprentă de timp de 32 biți. Și această opțiune este folosită în special pentru depanarea algoritmilor de dirijare.
4.1.2. Adrese IP
Fiecare gazdă și ruter din Internet are o adresă IP, care codifică adresa sa de rețea și de gazdă. Combinația este unică: nu există două mașini cu aceeași adresă IP. Toate adresele IP sunt de 32 de biți lungime și folosite în câmpurile Adresă sursă și Adresă destinație ale pachetelor IP. Formatele folosite pentru adresele IP sunt ilustrate în figura 4.3. Acele mașini care sunt conectate la mai multe rețele au adrese diferite în fiecare rețea.
Formatele de clasă A, B, C, și D permit până la 126 rețele cu 16 milioane de gazde fiecare, 16382 rețele cu până la 64k gazde, 2 milioane rețele cu până la 256 gazde fiecare și multicast (trimitere multiplă), în care fiecare datagramă este direcționată mai multor gazde. Adresele care încep cu 11110 sunt rezervate pentru o folosire ulterioară. Numerele de rețea sunt distribuite de NIC (Network Information Center) pentru a evita conflictele.
Valorile 0 și -1 au semnificații speciale, așa cum se arată în figura 4.4. Valoarea 0 înseamnă rețeaua curentă sau gazda curentă. Valoarea -1 este folosită ca o adresă de difuzare pentru a desemna toate gazdele din rețeaua indicată.
Fig. 4.4. Adrese IP speciale
Adresa IP 0.0.0.0 este folosită de gazde atunci când sunt pornite, dar nu mai este folosită ulterior. Adresele IP cu 0 ca număr de rețea se referă la rețeaua curentă. Aceste adrese permit ca mașinile să refere propria rețea fără a cunoaște numărul de rețea (dar ele trebuie să cunoască clasa adresei pentru a știi câte zerouri să includă). Adresele care constau numai din 1-uri permit difuzarea în rețeaua curentă, în mod uzual un LAN. Adresele cu un număr exact de rețea și numai 1-uri în câmpul gazdă permit mașinilor să trimită pachete de difuzare în LAN-uri la distanță, aflate oriunde în Internet. În final, toate adresele de forma 127.xx.yy.zz sunt rezervate pentru testări în bucla locală. Pachetele trimise către această adresă nu sunt trimise prin cablu; ele sunt prelucrate local și tratate ca pachete sosite. Aceasta permite pachetelor să fie trimise către rețeaua locală fără ca emițătorul să cunoască numărul său. Această facilitate este folosită de asemenea pentru depanarea programelor de rețea.
4.1.3. IP Mobil
Mulți utilizatori ai Internetului au calculatoare portabile și vor să rămână conectați la Internet atunci când se deplasează. Din nefericire, sistemul de adresare IP face lucrul la depărtare de casă mai ușor de zis decât de făcut. Vom examina în continuare atât problema, cât și soluția.
Problema apare chiar în schema de adresare. Fiecare adresă IP conține trei câmpuri: clasa, numărul de rețea și numărul de gazdă. De exemplu, să considerăm mașina cu adresa IP 160.80.40.20. Partea 160.80 indică clasa (B) și numărul de rețea (8272); partea 40.20 este numărul de gazdă (10260). Ruterele din toată lumea au tabele de dirijare care spun ce linie se folosește pentru a ajunge la rețeaua 160.80. Oricând vine un pachet cu destinație de forma 160.80.xxx.yyy, pachetul pleacă pe respectiva linie.
Dacă dintr-o dată, mașina cu adresa respectivă este transferată într-un alt loc din Internet, pachetele vor continua să fie dirijate către LAN-ul (sau ruterul) de acasă. Proprietarul nu va mai primi poșta electronică și așa mai departe. Acordarea unei noi adrese IP mașinii, adresă care să corespundă cu noua sa locație, nu este atractivă pentru că ar trebui să fie informate despre schimbare un număr mare de persoane, programe și baze de date.
O altă abordare este de a avea rutere care să facă dirijarea folosind adresa IP completă, în locul clasei și a rețelei. Cu toate acestea, această strategie ar necesita ca fiecare ruter să aibă milioane de intrări în tabelele de rutare, la un cost astronomic pentru Internet.
Când oamenii au început să ceară posibilitatea de a avea gazde mobile, IETF a constituit un grup de lucru pentru a găsi o soluție. Grupul de lucru a formulat rapid un număr de obiective considerate necesare în orice soluție. Cele majore au fost:
Fiecare gazdă mobilă trebuie să fie capabilă să folosească adresa sa IP de bază oriunde.
Nu au fost permise schimbări de programe pentru gazdele fixe.
Nu au fost permise schimbări pentru programele sau tabelele ruterelor.
Cele mai multe pachete pentru gazdele mobile nu ar trebui să facă abateri pe drum.
Nu trebuie să apară nici o suprasolicitare când o gazdă mobilă este acasă.
Soluția aleasă va fi descrisă în continuare.
În figura 4.5, este prezentat modelul foarte general al Internet-ului, divizat în domenii (de cele mai multe ori LAN-uri sau celule de comunicație fără fir). Pentru a oferi servicii utilizatorilor mobili, într-un astfel de domeniu trebuie să existe cel puțin un agent pentru străini (foreign agent) care să țina evidența tuturor utilizatorilor mobili care vizitează domeniul. De asemenea, fiecare domeniu trebuie să aibă un agent local (home agent) care să țină evidența utilizatorilor cu domiciliul în domeniul respectiv, dar care vizitează alte domenii.
Când un nou utilizator pătrunde într-un alt domeniu, fie prin conectarea la acesta (atașarea fizică la LAN), fie prin intrarea într-o celulă, calculatorul său trebuie să se înregistreze la agentul pentru străini din domeniul respectiv. Procedura de înregistrare de desfășoară astfel:
Periodic, fiecare agent pentru străini difuzează un pachet anunțându-și existența și adresa. Un utilizator mobil nou sosit trebuie să aștepte unul dintre aceste mesaje, însă dacă nici unul nu sosește într-un interval rezonabil de timp, calculatorul mobil poate difuza un pachet prin care solicită un răspuns de la un agent strain.
Calculatorul mobil se înregistrează la agentul pentru străini precizând adresa sa permanentă, adresa actuală la nivelul de legătură de date, precum și unele informații de securitate.
Agentul pentru străini contactează apoi agentul local al domeniului din care provine utilizatorul mobil și îl anunță despre faptul că acesta se află în domeniul său. Acest mesaj conține adresa de rețea a agentului pentru străini și informația de securitate, pentru a convinge agentul local că gazda mobilă este într-adevăr acolo.
Agentul local examinează informația de securitate, care conține și o ștampilă de timp, pentru a dovedi că a fost generată în ultimele câteva secunde. Dacă este așa, se confirmă aceasta agentului pentru străini.
Când agentul pentru străini primește confirmarea de la agentul local, el creează o nouă intrare în tabela sa și anunță utilizatorul mobil ca a fost înregistrat.
Când un pachet ajunge în LAN-ul de domiciliu al utilizatorului, el vine la un ruter atașat la LAN. Apoi ruterul încearcă să localizeze gazda în mod uzual, prin difuzarea unui pachet ARP întrebând, de exemplu: "Care este adresa Ethernet a lui 160.80.40.20?" Agentul local răspunde la această întrebare dând propria adresă Ethernet. Apoi ruterul trimite pachetele pentru 160.80.40.20 la agentul local. El, în schimb, le trimite prin tunel la adresa intermediarului prin încapsularea lor în câmpul informație utilă al unui pachet IP adresat agentului pentru străini. După aceasta, agentul pentru străini le desface și le livrează la adresa de nivel legătură de date a gazdei mobile. În plus, agentul de casă dă emițătorului adresa intermediarului, așa încât viitoarele pachete pot fi trimise prin tunel direct la agentul pentru străini. Această soluție răspunde tuturor cerințelor expuse mai sus.
Probabil că merită menționat un mic amănunt. În momentul în care gazda mobilă se mută, probabil că ruterul are adresa ei Ethernet (care în curând va fi invalidă) memorată în memoria ascunsă. Pentru a înlocui această adresă Ethernet cu cea a agentului local, se folosește un truc numit ARP gratuit. Acesta este un mesaj special, nesolicitat, către ruter, pe care îl determină să schimbe o anumită intrare din memoria ascunsă, în acest caz cea a gazdei mobile care urmează să plece. Când, mai târziu, gazda mobilă se întoarce, este folosit același truc pentru a actualiza din nou memoria ascunsă a ruterului.
Nu există nimic în proiect care să împiedice o gazdă mobilă să fie propriul său agent pentru străini, dar această abordare funcționează numai dacă gazda mobilă (în postura sa de agent pentru străini) este conectată logic în Internet la situl său curent. De asemenea, ea trebuie să fie capabilă să obțină pentru folosire o adresă (temporară) de intermediar. Acea adresă IP trebuie să aparțină LAN-ului în care este atașată în mod curent.
Soluția IETF pentru gazde mobile rezolvă un număr de alte probleme care nu au fost menționate până acum. De exemplu, cum sunt localizați agenții? Soluția este ca fiecare agent să-și difuzeze periodic adresa și tipul de serviciu pe care dorește să-l ofere (de exemplu, agent local, pentru străini, sau amândouă). Când o gazdă mobilă ajunge undeva, ea poate asculta așteptând aceste difuzări, numite anunțuri. Ca o alternativă, ea poate difuza un pachet prin care își anunță sosirea și să spere că agentul pentru străini local îi va răspunde.
O altă problemă care trebuie rezolvată este cum să se trateze gazdele mobile care pleacă fără a anunța acest lucru. Soluția este ca îregistrarea să fie valabilă doar pentru un interval de timp fixat. Dacă nu este reîmprospătată periodic, ea expiră și ca urmare gazda străină poate să-și curețe tabelele.
O altă problemă este securitatea. Când un agent local primește un mesaj care-i cere să retrimită pachetele destinate lui X la o anumită adresă, ar fi bine să nu se supună decât dacă este convins că X este sursa acestei cereri, și nu altcineva. Pentru acest scop sunt folosite protocoale criptografice de autentificare.
Un punct final adresat de Grupul de Lucru se referă la nivelurile de mobilitate. Mobilitatea în raport cu un sistem care este la rândul său mobil este tratată folosind recursiv tunele.
4.2. Nivelul Transport în Internet
Internet-ul are două protocoale importante la nivel transport: un protocol orientat pe conexiuni și un altul fără conexiuni. Protocolul orientat pe conexiuni este TCP. Protocolul fără conexinui este UDP.
4.2.1. TCP
TCP (Transport Communication Protocol – RFC 793) a fost proiectat explicit pentru a asigura un flux sigur de octeți de la un capăt la celălalt al conexiunii într-o inter-rețea nesigură. O inter-rețea diferă de o rețea propriu-zisă prin faptul că diferite părți ale sale pot diferi substanțial în topologie, lărgime de bandă, întârzieri, dimensiunea pachetelor și alți parametri. TCP a fost proiectat să se adapteze în mod dinamic la proprietățile rețelei Internet și să fie robust în ceea ce privește mai multe tipuri de defecte.
Fiecare mașină care suportă TCP dispune de o entitate de transport TCP, fie ca proces utilizator, fie ca parte a nucleului care gestionează fluxurile TCP și interfețele către nivelul IP. O entitate TCP acceptă fluxuri de date utilizator de la procesele locale, le împarte în fragmente care nu depășesc 64k octeți și expediază fiecare fragment ca o datagramă IP separată. Atunci când datagramele IP conținând informație TCP sosesc la o mașină, ele sunt furnizate entității TCP, care reconstruiește fluxul original de octeți.
Nivelul IP nu conferă nici o garanție că datagramele vor fi livrate corect, astfel că este sarcina TCP-ului să detecteze eroarea și să efectueze o retransmisie atunci când situația o impune. Datagramele care ajung la destinație pot sosi într-o ordine eronată; este, de asemenea, sarcina TCP-ului să le reasambleze în mesaje respectând ordinea corectă.
Modelul Serviciului TCP
Serviciul TCP este obținut prin crearea atât de către emițător căt și de către receptor a unor puncte finale, numit socluri (sockets). Fiecare soclu are un număr de soclu format din adresa IP a mașinii gazdă și un număr de 16 biți, local gazdei respective, numit port. Port este numele TCP pentru un TSAP. Pentru a obține o conexiune TCP, trebuie stabilită explicit o conexiune între un soclu de pe mașina emițătoare și un soclu de pe mașina receptoare.
Un soclu poate fi folosit la un moment dat pentru mai multe conexiuni. Conexiunile sunt identificate prin identificatorii soclurilor de la ambele capete. Nu este folosit nici un alt număr sau identificator de circuit virtual.
Numerele de port mai mici decât 256 se numesc porturi general cunoscute și sunt rezervate serviciilor standard. De exemplu, orice proces care dorește să stabilească o conexiune cu o mașină gazdă pentru a transfera un fișier utilizănd FTP, se poate conecta la portul 21 al mașinii destinație pentru a contacta daemonul său FTP. Similar, portul 23 este folosit pentru a stabili o sesiune de lucru la distanță folosind TELNET. Lista porturilor general cunoscute este conținută în RFC 1700.
Toate conexiunile TCP sunt duplex integral și punct – la – punct. Duplex integral înseamnă că traficul se poate desfășura în ambele sensuri în același timp. Punct – la – punct indică faptul că fiecare conexiune are exact două puncte finale. TCP nu suporta difuzarea parțială sau totală.
O conexiune TCP este un flux de octeți și nu un flux de mesaje. Dimensiunile mesajelor nu se conservă de la un capăt la celălalt.
Atunci când o aplicație trimite date către TCP, TCP-ul le poate expedia imediat sau le poate reține într-un buffer în scopul colectării unei cantități mai mari de informație pe care să o expedize toată odată. Cu toate acestea, câteodată, aplicația dorește explicit ca informația să fie expediată imediat. De exemplu, să presupunem că un utilizator este conectat la o mașină de la distanță. După ce a fost terminată o linie de comandă și s-a tastat Return, este esențial ca linia să fie expediată către mașina de la distanță și să nu fie memorată până la terminarea următoarei linii. Pentru a forța exepdierea, aplicația poate folosi indicatorul PUSH, care îi semnalează TCP-ului să nu întârzie procesul de transmisie.
Unele din primele aplicații foloseau indicatorul PUSH ca un fel de marcaj pentru a delimita marginile mesajelor. Deși acest truc funcționează câteodată, uneori el eșuează datorită faptului că, la recepție, nu toate implementările TCP-ului transmit aplicației indicatorul PUSH. Mai mult decât atât, dacă mai multe indicatoare PUSH apar înainte ca primul să fi fost transmis (de exemplu, pentru că linia de legătură este ocupată), TCP-ul este liber să colecteze toată informația referită de către aceste indicatoare într-o singură datagramă IP, fără să includă nici un separator între diferitele sale părți.
O ultimă caracteristică a serviciului TCP este informația urgență. Atunci când un utilizator apasă tasta DEL sau CTRL-C pentru a întrerupe o prelucrare la distanță, aflată deja în execuție, aplicația emițător plasează o informație de control în fluxul de date și o furnizează TCP-ului împreună cu indicatorul URGENT. Acest eveniment impune TCP-ului întreruperea acumulării de informație și transmisia imediată a întregii informații disponibile deja pentru conexiunea respectivă.
Atunci când informația urgentă este recepționată la destinație, aplicația receptoare este întreruptă, astfel încât, eliberată de orice altă activitate, aplicația să poate citi fluxul de date și să poată regăsi informația urgentă. Această schemă furnizează un rudiment de mecanism de semnalizare, orice alte detalii fiind lăsate în seama aplicației.
Protocolul TCP
Fiecare octet al unei conexiuni TCP are propriul său număr de secvență, reprezentat pe 32 de biți. Numerele de secvență sunt utilizate atât pentru confirmări căt și pentru mecanismul de secvențiere, acesta din urmă utilizând câmpuri separate de 32 de biți din antet.
Entitățile TCP de transmisie și de recepție interschimbă informație sub formă de segmente. Un segment constă dintr-un antet de exact 20 de octeți (plus o parte opțională) urmat de un zero sau mai mulți octeți de date. Programul TCP este cel care decide cât de mari trebuie să fie segmentele. El poate acumula informația provenită din mai multe scrieri într-un singur segment sau poate fragmenta informația provenind dintr-o singură scriere în mai multe segmente. Există două limite care restricționează dimensiunea unui segment. În primul rând, fiecare segment, inclusiv antetul TCP, trebuie să încapă în cei 65.535 octeți de informație utilă IP. În al doilea rând, fiecare rețea are o unitate maximă de transfer sau MTU (Maximum Transfer Unit), deci fiecare segment trebuie să încapă în acest MTU. Dacă un segment parcurge o secvență de rețele fără a fi fragmentat și ajunge apoi la o rețea al cărui MTU este mai mic decât dimensiunea segmentului, ruterul de la frontiera acelei rețele fragmentează segmentul în două sau mai multe segmente mai mici. Fiecare nou segment astfel creat capătă propriile antete TCP și IP, astfel încât fragmentarea realizată de către rutere mărește încărcarea totală deoarece antetul adaugă încă 40 de octeți de informație.
Protocolul de bază utilizat de către entitățile TCP este protocolul cu fereastră glisantă. Atunci când un emițător transmite un segment, el pornește un cronometru. Atunci când un segment ajunge la destinație, entitatea TCP receptoare trimite înapoi un segment care conține și numărul de secvență următor pe care aceasta se așteaptă să-l recepționeze. Dacă cronometrul emițătorului depășește o anumită valoare înaintea primirii confirmării, emițătorul retransmite segmentul confirmat.
Pot apărea multe situații particulare. De exemplu, având în vedere că segmentele pot fi fragmentate, este posibil ca o parte a segmentului să fie recepționată și confirmată de către entitatea TCP receptoare, în timp ce restul să fie pierdut. De asemenea, segmentele pot ajunge într-o ordine arbitrară, dar octeții ajunși la destinație nu pot fi confirmați datorită absenței octeților intermediari. Segmentele pot de asemenea întârzia pe drum un interval suficient de mare pentru ca emițătorul să detecteze o depășire a cronometrului și să le retransmită. Dacă segmentul retransmis parcurge o cale diferită de cea parcursă de segmentul original și este fragmentat în mod diferit, atunci unii biți, atât din segmentul original cât și din segmentul duplicat, pot fi recepționați sporadic, ceea ce impune o tratare atentă, astfel încât fluxul de octeți să fie fiabil.
Antetul segmentului TCP
În figura 4.6 este prezentată structura unui segment TCP. Fiecare segment începe cu un antet format dintr-o structură fixă de 20 de octeți. Antetul fix poate fi urmat de un set de opțiuni asociate antetului. În continuarea opțiunilor, dacă ele există, pot urma până la 65.535-20-20=65.495 de octeți de date unde primul 20 reprezintă antetul IP iar al doilea antetul TCP. Segmente care nu conțin octeți de date sunt nu numai permise, dar și utilizate în mod frecvent pentru confirmări și mesaje de control.
Câmpurile port sursă și port destinație identifică punctele finale ale conexiunii. Fiecare mașină poate decide pentru sine modalitatea de alocare a porturilor sale mai mari de 256. Un port formează împreună cu adresa IP a mașinii sale un unic TSAP de 48 de biți. Conexiunea este identificată de ambele numere ale soclurilor sursă și destinație.
Câmpurile număr de secvență și număr de confirmare au semnificația funcțiilor lor uzuale. Trebuie notat că cel din urmă indică octetul următor aștepat și nu ultimul octet recepționat în mod corect. Ambele câmpuri au lungimea de 32 de biți, deoarece într-un flux TCP fiecare bit de informație este numerotat.
Lungimea antetului TCP indică numărul de cuvinte de 32 de biți care sunt conținute în antetul TCP. Această informație este utilă, deoarece câmpul Opțiuni este de lungime variabilă, proprietate pe care o transmite astfel și antetului.
Urmează șase indicatori de câte un bit. URG este poziționat pe 1 dacă indicatorul Urgent este valid. Indicatorul Urgent este folosit pentru a indica deplasamentul de octeți față de numărul curent de secvență la care se găsește informația urgentă. O astfel de facilitate suplinește mesajele de întrerupere.
Bitul ACK este poziționat pe 1 pentru a indica facptul că numărul de confirmare este valid. În cazul în care ACK e poziționat pe 0 segmentul în discuție nu conține o confirmare și câmpul număr de confirmare este ignorat.
Bitul PSH indică informația forțată. Receptorul este obligat să livreze aplicației informația respectivă imediat ce este recepționată și să nu o memoreze în așteptarea umplerii bufferelor de comunicație.
Bitul RST este folosit pentru a desființa o conexiune care a devenit inutilizabilă datorită defecțiunii unei mașini sau oricărui alt motiv. El este de asemenea utilizat pentru a refuza un segment invalid sau o încercare de deschidere a unei conexiuni.
Bitul SYN este utilizat pentru stabilirea unei conexiuni. Cererea de conexiune conține SYN=1 și ACK=0 pentru a indica faptul că acel câmp suplimentar de confirmare nu este utilizat. Răspunsul la o astfel de cerere conține o confirmare, având SYN=1 și ACK=1. Bitul ACK face distincția dintre mesajele o cerere de conexiune și conexiune acceptată.
Bitul FIN este folosit pentru a încheia o conexiune. El indică faptul că emițătorul nu mai are nici o informație de transmis.
În TCP, fluxul de control este tratat prin ferestre glisante de dimensiune variabilă. Câmpul Fereastră indică numărul de octeți care pot fi trimiși, începând cu octetul confirmat. Un câmp Fereastră de valoare 0 spune că octeții până la Număr de confirmare -1 inclusiv au fost recepționați dar receptorul nu mai dorește continuarea transmisiei. Permisiunea de expediere poate fi acordată ulterior prin trimiterea unui segment având același
Câmpul Sumă de control este folosit pentru mărirea fiabilității. Ac
Număr de confirmare, dar un câmp Fereastră cu o valoare nenulă este sumă de control este calculată pentru antet, informație și pseudo-antetul conceptual prezentat în figura 4.7. 7În momentul calculului, suma de control TCP este poziționată pe 0 iar câmpul de date este completat cu un octet suplimentar nul, dacă lungimea sa este un număr impar. Algoritmul de calcul al sumei de control este simplu, el adunând toate cuvintele de 16 biți în complement față de 1 și aplicând apoi încă o dată complementul față de 1 asupra sumei. În acest mod atunci când receptorul aplică același calcul asupra întregului segment, inclusiv asupra sumei de control, rezultatul ar trebuie să fie 0.
Pseudo-antetul conține adresele IP ale mașinii sursă și destinație, de 32 de biți fiecare, numărul de protocol pentru TCP și numărul de octeți al segmentului TCP. Prin includerea pseudo-antetului în calculul sumei de control TCP se pot detecta pachetele care au fost preluate eronat.
Câmpul Opțiuni a fost proiectat pentru a permite adăugarea unor facilități suplimentare neacoperite de antetul obișnuit. Cea mai importantă opțiune este aceea care permite fiecărei mașini să specifice încărcarea maximă de informație utilă TCP pe care este dispusă să o accepte. Utilizarea segmentelor de dimensiune mare este mai eficientă decât utilizarea segmentelor de dimensiune mică datorită amortizării antetului de 20 de octeți prin cantitatea mai mare de informație utilă. Cu toate acestea este posibil ca mașini mai puțin performante să nu fie capabile să manevreze segmente foarte mari. În timpul inițializării conexiunii, fiecare parte anunță dimensiunea maximă acceptată și așteaptă de la partener aceeași informație. Câștigă cel mai mic dintre cele două numere. Dacă o mașină nu cunoaște această opțiune, valoarea implicită de informație utilă este de 536 octeți.
O fereastră de 64k octeți reprezintă adesea o problemă pentru liniile cu o lărgime de bandă mare și/sau cu întârzieri mari. Pe o linie T3 (44736 Mbps) trimiterea unei ferestre întregi de 64 K octeți durează doar 12 msec. Dacă întârzierea propagării dus-întors este de 50 milisec (valoarea tipică pentru o linie trans-continentală), emițătorul va aștepta confirmări-fiind deci inactiv- 3/4 din timp. Pe o conexiune prin satelit situația este chiar mai rea. O fereastră de dimensiune mare ar permite emițătorului să continue transmiterea informației, însă o astfel de dimensiune nu poate fi reprezentată în cei 16 biți ai câmpului fereastră.
O altă opțiune propusă de RFC 1106, și care este în prezent implementată pe scară largă, constă în utilizarea unei repetări selective în locul unui protocol cu întoarcere de n pași. Dacă receptorul primește un segment eronat urmat de un număr mare de segmente corecte, protocolul TCP clasic va constata într-un final o depășire de timp și va retrimite toate segmentele neconfirmate, deci și pe acelea care au fost recepționate corect. RFC 1106 introduce NAK-urile pentru a permite receptorului să ceară un anumit segment.
Administrarea conexiunii TCP
În TCP conexiunile sunt stabilite utilizând înțelegerea în trei pași. Pentru a stabili o conexiune, una din părți așteaptă în mod pasiv o cerere de conexiune prin execuția primitivelor LISTEN și ACCEPT, putând specifica o sursă anume sau nici o sursă în mod particular.
Cealaltă parte execută o primitivă CONNECT, indicând adresa IP și numărul de port la care dorește să se conecteze, dimesiunea maximă a segmentului TCP pe care este dispusă să o accepte. Primitiva CONNECT trimite un segment TCP având bitul SYN poziționat și bitul ACK nepoziționat, după care așteaptă un răspuns.
Atunci când sosește la destinație un segment, entitatea TCP receptoare verifică dacă nu cumva există un proces care a executat LISTEN pe numărul de port precizat. În caz contrar, trimite un răspuns cu bitul RST poziționat, pentru a refuza conexiunea.
Dacă există vreun proces care ascultă la acel port, segmentul TCP va fi direcționat către acel proces.
Numărul inițial de secvență asociat unei conexiuni nu este 0. Se utilizează o schemă bazată pe un ceas cu bătaie la fiecare 4 microsecunde. Pentru siguranța suplimentară, atunci când o mașină se defectează, este posibil ca ea să nu fie reinițializată în timpul de viață al unui pachet (120 sec), garantându-se astfel că pachetele unei conexiuni anterioare nu se plimbă încă prin Internet.
Deși conexiunile TCP sunt bidirecționale, pentru a înțelege cum sunt desființate conexiunile, cel mai bine este să ni le imaginăm sub forma unei perechi de legături unidirecționale. Fiecare legătură unidirecțională este eliberată independent de perechea sa. Pentru eliberarea unei conexiuni, orice partener poate expedia un segment TCP având bitul FIN poziționat, lucru care indică faptul că nici o informație nu mai urmează să fie transmisă. Atunci când FIN-ul este confirmat sensul respectiv de comunicare este efectiv oprit. Cu toate acestea, informația poate fi transferată în continuare, nedefinit, în celălalt sens. Conexiunea este desființată atunci când ambele direcții au fost oprite. În mod normal, pentru a elibera o conexiune sunt necesare patru segmente TCP: câte un FIN și un ACK pentru fiecare sens. Dacă un răspuns la un FIN nu este recepționat pe durata a cel mult două cicluri maxime de viață ale unui pachet, emițătorul FIN-ului eliberează conexiunea. Cealaltă parte va observa că nimeni nu mai ascultă la celălalt capăt al conexiunii, datorită expirării unui interval de timp.
Controlul congestiei în TCP
Atunci când încărcarea la care este supusă o rețea este mai mare decât poate aceasta să suporte, apare o creștere a congestiei. Deși nivelul rețea încearcă să de asemenea să controleze congestia, cea mai mare parte a muncii este făcută de TCP, și aceasta deoarece adevărata soluție a congestiei este micșorarea ratei de transfer a informației.
Ideea de bază este de a nu injecta un nou un pachet în rețea până când un pachet mai vechi nu o părăsește, iar acest lucru este realizat prin manipularea dinamică a ferestrei.
Soluția din Internet este de a realiza posibilitatea de existență a două probleme: capacitatea receptorului și capacitatea emițătorului, și de a le trata separat pe fiecare. Pentru a face acest lucru fiecare emițător menține două ferestre: fereastra acceptată de receptor și a doua, fereastra de congestie. Numărul de octeți transmiși este dat de minimul dintre cele două ferestre. Mai este utilizat și un al treilea paramteru numit prag, inițial de 64K. Atunci când apare o depășire de timp pragul este poziționat la jumătate din fereastra de congestie curentă și fereastra de congestie este repoziționată la dimensiunea unui segment maxim.
Administrarea contorului de timp în TCP
TCP utilizează mai multe contoare de timp pentru a-și realiza funcțiile.
Cel mai important este contorul de retransmisie. Atunci când este retransmis segment, se pornește acest contor. Dacă timpul expiră înaintea primirii confirmării segmentul este retransmis. Mărimea contorului este stabilită prin utilizarea unui algoritm dinamic care ajustează constant intervalul de depășire. Pentru fiecare conexiune TCP păstrează o variabilă, RTT care este cea mai bună estimare a circuitului dus-întors către destinație. Dacă notăm timpul cât i-a trebuit unei confirmări să se întoarcă RTT se calculează după formula :
RTT=aRTT+(1-a)M
unde a este un factor de netezire care determină ponderea dată vechii valori. Uzual a=7/8.
Un al doilea contor este contorul de persistență. El este proiectat să prevină următoarea situație de interblocare. Receptorul trimite o confirmare cu o dimensiune a ferestrei 0, spunându-i emițătorului să aștepte. Mai târziu, receptorul actualizează fereastra dar pachetul cu această actualizare este pierdut astfel încât ambii parteneri așteaptă o reacție din partea celuilalt. Atunci când contorul de persitență expiră, emițătorul trimite o sondă, răspunsul furnizând dimensiunea ferestrei.
Un al treilea contor este contorul de menținere în viață. Când o conexiune a fost inactivă pe o perioadă lungă de timp, acest contor poate expira pentru a forța una din părți să vadă dacă cealaltă mai există.
4.2.2. Protocolul UDP
Setul de protocoale de transport din Internet suportă de asemnea un protocol fără conexiune, UDP (User Datagram Protocol). UDP oferă aplicațiilor o modalitate de a trimite datagrame IP neprelucrate, încapsulate și pe care le transmite fără a stabili o conexiune. Multe aplicații client-server în care o parte emite cereri și cealaltă parte emite răspunsuri folosesc mai dregrabă UDP decât să se complice să stabilească și apoi să elibereze o conexiune. UDP este descris în RFC 768.
Un segment UDP constă dintr-un antet de 8 octeți urmat de date. Antetul este prezentat în figura 4.8. Cele două porturi au același rol ca și în TCP: de a identifica punctele terminale ale mașinilor sursă și destinație. Câmpul lungime UDP include cei 8 octeți ai antetului plus datele. Câmpul sumă de control UDP cuprinde același format pseudo-antet prezentat în figura 4.7, antetul UDP și datele UDP, completate, după caz, până la un număr par de octeți. El este opțional și, în cazul în care nu este calculat, este memorat ca 0 (o valoare 0 rezultată în urma calculelor este memorată ca un șir de biți 1, ccea ce este același lucru în complement față de 1).
4.2.3. TCP și UDP fără Fir
Teoretic, protocoalele de transport ar trebui să fie independente de tehnologia nivelului rețea. În particular, TCP-ului ar trebui să nu-i pese dacă IP rulează peste o rețea cablu sau radio. În practică, acest lucru contează, deoarece cele mai multe implementări TCP au fost atent optimizate pe baza unor presupuneri care sunt adevărate pentru rețele cu cabluri, dar care nu mai sunt valabile în cazul rețelelor fără fir. Ignorarea proprietăților de transmisie fără fir poate conduce la o implementare TCP corectă din punct de vedere logic, dar cu performanțe incredibil de proaste.
Principala problemă este algoritmul de control al congestiei. Aproape toate implementările TCP din zilele noastre pleacă de la premisa că depășirile de timp sunt cauzate de congestie și nu de pierderea pachetelor. În consecință, atunci când expiră un contor, TCP încetinește ritmul și trimite pachete cu mai puțină vigoare. Ideea din spatele acestei abordări constă în reducerea încărcării rețelei și în diminuarea astfel a suferinței cauzate de congestie.
Din nefericire, legăturile bazate pe transmisia fără fir sunt profund nefiabile. Ele pierd tot timpul pachete. Pentru a controla această pierdere a pachetelor, abordarea corectă este să se retrimită cât mai repede posibil. Încetinirea ritmului nu face decât să înrăutățească lucrurile. Daca presupunem că, atunci când emițătorul transmite 100 de pachete pe secundă, 20% din totalul pachetelor se pierde, productivitatea este de 80 pachete/sec. Dacă emițătorul încetinește ritmul la 50 pachete/sec, productivitatea scade la 40 pachete/sec.
Atunci când se pierde un pachet pe o rețea cu cabluri, emițătorul ar trebui să încetinească ritmul. Atunci când se pierde un pachet pe o rețea fără fir, emițătorul ar trebui să se străduiască și mai tare. Dacă emițătorul nu știe despre ce tip de rețea este vorba, luarea unei decizii este dificilă.
În mod frecvent, calea de la emițător la receptor este eterogenă. Primii 100 km pot să fie într-o rețea cu cabluri, dar ultimul kilometru poate să fie fără fir. Acum, luarea unei decizii în situația unei depășiri de timp este și mai dificilă, dat fiind că intervine și locul în care apare problema. O soluție găsită în 1995, TCP indirect, constă în spargerea conexiunii TCP în două conexiuni separate, ca în figura 4.9.
Prima conexiune pleacă de la emițător la stația de bază. Cea de-a doua leagă stația de bază de receptor. Această stație de bază nu face decât să copieze pachetele din cele două conexiuni în ambele direcții.
Avantajul acestei scheme este acela că ambele conexiuni sunt acum omogene. Depășirile de timp din prima conexiune pot încetini emițătorul, în timp ce depășirile de timp din cea de-a doua îl pot accelera. Alți parametri pot fi de asemenea reglați separat în fiecare din cele două conexiuni. Dezavanatajul este acela că este negată însăși semnatica TCP. Atâta timp cât fiecare parte a conexiunii este o conexiune TCP în sine, stația de bază confirmă fiecare segment TCP în mod obișnuit. Doar că acum, recepția unei confirmări de către emițător nu mai înseamnă că receptorul a primit segmentul, ci doar că el a fost primit de către stația de bază.
Există și o soluție diferită care nu încalcă semantica TCP. Ea se bazează pe mici modificări făcute în codul nivelului rețea din stația de bază Una din modificări constă în adăugarea unui agent de supraveghere care observă și interceptează pachetele TCP care pleacă spre gazda mobilă precum și confirmările care se întroc de la aceasta. Atunci când observă un segment TCP care pleacă spre gazda mobilă, dar nu observă confirmarea recepționării acestuia într-un interval de timp dat (relativ scurt), agentul ascuns, pur și simplu retransmite acel segment, fără a mai spune sursei acest lucru. De asemenea, el genezează o retransmisie și atunci când observă confirmări duplicate din parte gazdei mobile, lucru care indică invariabil faptul că acesta a pierdut ceva. Confirmările duplicate sunt descărcate pe loc, pentru a evita ca sursa să le interpreteze ca un semn de congestie.
Cu toate acestea, un dezavantaj al acestei transparențe este acela că, dacă legătura fără fir pierde multe pachete, sursa poate depăși limita de timp în așteptarea unei confirmări și poate invoca în consecință algoritmul de control al congestiei. În cazul TCP-ului indirect, algoritmul de control al congestiei nu va fi niciodată inițiat dacă nu apare într-adevăr o situație de congestie în partea "cablată" a rețelei. Cel de-al doilea algoritm oferă de asemenea o soluție problemei pierderii segmentelor generate de către gazda mobilă. Atunci când stația de bază constată o pauză în interiorul domeniului numerelor de secvență, aceasta generează o cerere pentru o repetare selectivă a octetului lipsă, utilizând o opțiune TCP. Prin aceste două corecturi, legătura fără fir devine mai fiabilă în ambele direcții fără ca sursa să știe acest lucru și fără modificarea semanticii TCP.
Deși UDP-ul nu suferă de aceleași probleme ca și TCP-ul, comunicația fără fir introduce și pentru el anumite dificultăți. Pricipala problemă este aceea că programele utilizează UDP așteptându-se ca acesta să fie foarte fiabil. Ele știu că nu este furnizată nici o garanție, dar cu toate aceste se așteaptă ca el să fie aproape perfect. Într-un mediu fără fir, el va fi însă departe de perfecțiune. Pentru programele care sunt capabile să se refacă după pierderea mesajelor UDP, dar numai cu un cost considerabil, trecerea bruscă de la un mediu în care mesajele puteau fi pierdute mai mult teoretic decât practic la un mediu în care ele sunt pierdute sistematic poate conduce la un dezastru în ceea ce privește performanțele.
CAP. 5. APLICAȚIA
5.1. Prezentare
Aplicația realizează trimiterea către un abonat la un serviciu GSM, a mesajelor scurte (S.M.S.) prin Internet folosind un server HTTP și o pagină HTML ca interfață pentru utilizator și un simplu telefon mobil (în cazul de față un telefon Nokia modelul 3110) pentru trimiterea efectivă a mesajelor. Telefonul mobil este conectat la computerul pe care rulează serverul HTTP printr-un cablu serial corespunzător.
Fig. 5.1 Pagina WEB prin care utilizatorii pot avea acces la serviciul SMS Gateway
Pentru a avea acces la acest serviciu, utilizatorii trebuie să completeze formularul prezentat în figura 5.1 urmat de apăsarea butonului "Trimite". După cum se poate vedea, formularul are trei câmpuri: telefon, identificare și mesaj. Câmpul telefon reprezintă numărul de telefon la care se va trimite mesajul; câmpul identificare reprezintă o modalitate prin care cel care va primi mesajul poate cunoaște identitatea expeditorului (de ex: nume, telefon sau e-mail); iar câmpul mesaj reprezintă mesajul propriu-zis.
La apăsarea butonului "Trimite" conținutul formularului este verificat, din punct de vedere al integrității (utilizatorul a completat toate câmpurile corect și nu a depășit 160 de caractere – lungimea maximă a unui mesaj SMS) de o procedură JavaScript si apoi trimis către serverul HTTP unde este prelucrat cu ajutorul unui script ASP (Active Server Pages – tehnologie server-side scripting realizată de Microsoft), care scrie mesajul de transmis într-un fișier cu acces secvențial, împreună cu numărul de telefon, într-o anumită formă. De asemenea, scriptul scrie într-un fișier log data și ora la care a fost primit mesajul, mesajul propriu-zis și adresa IP de la care a fost trimis mesajul. In figura 5.2 este prezentat mesajul întors clientului de scriptul ASP.
Fișierul în care a fost scris mesajul este citit periodic de un program rezident în memorie care atunci când găsește vreun mesaj îl va trimite dând o secvență de comenzi telefonului prin portul serial. Programul a fost realizat în Visual C++ și realizează trimiterea de șiruri de caractere către portul serial.
Telefonul este comandat printr-un set de comenzi AT prin care se specifică modul de trimitere al mesajelor SMS (AT+CMGF=1), numărul operatorului de mesaje scurte din rețeaua GSM (AT+CSCA="+40721204104" – în cazul rețelei CONNEX). Trimiterea mesajului se face printr-o secvență de tipul:
AT+CMGS="+40721xxxxxx" \r
mesaj \r
CTRL+Z \r
5.2. Listingul Surselor
Paginile WEB
Pagina principală – default.htm
<HTML>
<HEAD>
<TITLE>Catalin Mihai – GSM SMS Gateway</TITLE>
<script language="JavaScript">
// <!– Ascund codul pentru browsere ce nu suporta JavaScript
function verifyForm () {
if (document.forms.send.telefon.value == "") {
window.alert ("Trebuie sa completati campul 'Telefon'")
return false
}
if (document.forms.send.telefon.value == "0721-") {
window.alert ("Trebuie sa completati campul 'Telefon'")
return false
}
if (document.forms.send.mesaj.value == "") {
window.alert ("Trebuie sa completati campul 'Mesaj'")
return false
}
if (document.forms.send.mesaj.value.length > 155) {
window.alert ("Mesajul contine " + document.send.mesaj.value.length + " de caractere! \nMai mult decat 155!")
return false
}
return true
}
// –>
</script>
</HEAD>
<BODY background="images/back.jpg">
<table width="630" align="center">
<tr>
<td>
<img src="images/sigla.jpg" border="0">
</td>
</tr>
<tr>
<td>
<font size="-1"> <b>Pentru trimiterea unui mesaj SMS, completati formularul de mai
jos si apasati butonul "Trimite!"</b><br><br>
<b><u>Observatii:</u></b><br>
a) Un mesaj SMS poate avea maxim 160 de caractere.<br>
b) Mesajul care se va trimite va contine mesajul propriu-zis urmat de textul introdus de dvs la campul "Identificare origine".<br>
c) Campurile "Telefon" si "Mesaj" sunt obligatorii iar campul "Identificare origine" este optional.<br><br>
</font></td>
</tr>
<tr>
<td>
<form action="send.asp" method="POST" name="send">
<table border="1" width="620">
<tr>
<td bgcolor="silver" width="200">
Nr. telefon:
</td>
<td width="420">
<input type="Text" name="telefon" value="0721-" align="LEFT" size="30" maxlength="10">
</td>
</tr>
<tr>
<td bgcolor="silver" width="200">
Identificare origine:<br>
<font size="2">(ex: nume, telefon, e-mail)</font>
</td>
<td width="420">
<input type="Text" name="origine" align="LEFT" size="30">
</td>
</tr>
<tr>
<td bgcolor="silver" width="200" valign="top">
Mesaj:
</td>
<td width="420">
<textarea name="mesaj" cols="29" rows="3" ></textarea>
</td>
</tr>
</table>
<br>
<br>
<table>
<tr>
<td width="310" align="center">
<input type="Submit" name="OK" value=" Trimite! " onClick="return verifyForm()">
</td>
<td width="310" align="center">
<input type="reset">
</td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td>
<hr width="620" size="0.5">
</td>
</tr>
<tr>
<td>
<center>
Puteti vedea sursele fisierelor html si asp, alegand unul din fisiere si apasand apoi butonul "GO!".<br>
<form action="redirect.asp" method="POST">
Fisier:
<select name="file">
<option value="default.htm">default.htm</option>
<option value="send.asp">send.asp</option>
<option value="redirect.asp">redirect.asp</option>
</select>
<input type="Submit" name="go" value="GO!">
</form>
</center>
</td>
</tr>
</table>
</BODY>
</HTML>
Scriptul ASP – send.asp
<HTML>
<HEAD>
<TITLE>Catalin Mihai – GSM SMS Gateway</TITLE>
</HEAD>
<BODY background="images/back.jpg">
<table width="630" align="center">
<tr>
<td>
<img src="images/sigla.jpg" border="0">
</td>
</tr>
<tr>
<td>
<font face="Verdana" size="3">
<%
tel=Trim(Request("telefon"))
tel=Replace(tel, "-", "")
tel=Replace(tel, " ", "")
If Len(tel) < 9 Or Left(tel, 3) <> "0721" Then
Response.Write "<b>Eroare!!!</b><br>"
Response.Write "Numarul de telefon introdus este invalid!"
Else
orig=Trim(Request("origine"))
mesaj=Request("mesaj")
mesaj=Replace(mesaj, Chr(10), " ")
mesaj=Replace(mesaj, Chr(13), "")
nl=Chr(13) & Chr(10)
Set fs=CreateObject("Scripting.FileSystemObject")
Set send=fs.OpenTextFile("c:\webshare\logs\sendfile", 2, FALSE, FALSE)
Set logfile=fs.OpenTextFile("C:\WEBSHARE\LOGS\SEND.LOG", 2, FALSE, FALSE)
IP= Request.ServerVariables("REMOTE_ADDR")
host=Request.ServerVariables("REMOTE_HOST")
towrite="[msg]" & nl & "Telefon=" & tel & nl & "Mesaj=" & mesaj & nl
towrite=towrite & "From=" & orig & nl
send.WriteLine(towrite)
towrite=Now() & nl & "Telefon: " & tel & nl & "Mesaj:" & nl & mesaj & nl & "From: " & orig & nl & IP & " – " & Host & nl & "––––––"
logfile.WriteLine(towrite)
send.close
logfile.close
Response.Write "Mesajul dumneavoastra a fost introdus in coada de asteptare si va fi trimis in curand!"
End If
%>
</font>
</td>
</tr>
</table>
</BODY>
</HTML>
Programul C++
SMSSender.h
// SMSSender.h : main header file for the SMSSENDER application
//
#if !defined(AFX_SMSSENDER_H__8A115425_2BDB_11D3_AC60_FB60D904D13E__INCLUDED_)
#define AFX_SMSSENDER_H__8A115425_2BDB_11D3_AC60_FB60D904D13E__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CSMSSenderApp:
// See SMSSender.cpp for the implementation of this class
//
class CSMSSenderApp : public CWinApp
{
public:
CSMSSenderApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSMSSenderApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CSMSSenderApp)
// NOTE – the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
//Members
HANDLE hCommPort, hGigi;
CString gsPort;
DECLARE_MESSAGE_MAP()
HANDLE SetupCommPort (void);
// int WriteToCOM(CString);
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#define SETXOFF 1 // Simulate XOFF received
#define SETXON 2 // Simulate XON received
#define SETRTS 3 // Set RTS high
#define CLRRTS 4 // Set RTS low
#define SETDTR 5 // Set DTR high
#define CLRDTR 6 // Set DTR low
#define RESETDEV 7 // Reset device if possible
#define SETBREAK 8 // Set the device break line.
#define CLRBREAK 9 // Clear the device break line.
int WriteToCOM(CString);
void COMM(void * param);
int SendMssg(CString, CString);
#endif // !defined(AFX_SMSSENDER_H__8A115425_2BDB_11D3_AC60_FB60D904D13E__INCLUDED_)
SMSSenderDlg.h
// SMSSenderDlg.h : header file
//
#if !defined(AFX_SMSSENDERDLG_H__8A115427_2BDB_11D3_AC60_FB60D904D13E__INCLUDED_)
#define AFX_SMSSENDERDLG_H__8A115427_2BDB_11D3_AC60_FB60D904D13E__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CSMSSenderDlg dialog
class CSMSSenderDlg : public CDialog
{
// Construction
public:
CSMSSenderDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CSMSSenderDlg)
enum { IDD = IDD_SMSSENDER_DIALOG };
CEdit m_cTel;
CEdit m_cMsg;
CButton m_cSend;
CString m_szMsg;
CString m_szTel;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSMSSenderDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CSMSSenderDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButtonsend();
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_SMSSENDERDLG_H__8A115427_2BDB_11D3_AC60_FB60D904D13E__INCLUDED_)
SMSSender.cpp
// SMSSender.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "SMSSender.h"
#include "SMSSenderDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSMSSenderApp
BEGIN_MESSAGE_MAP(CSMSSenderApp, CWinApp)
//{{AFX_MSG_MAP(CSMSSenderApp)
// NOTE – the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSMSSenderApp construction
CSMSSenderApp::CSMSSenderApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CSMSSenderApp object
CSMSSenderApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CSMSSenderApp initialization
BOOL CSMSSenderApp::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
gsPort = _T("com3:");
SetupCommPort ();
if(WriteToCOM(_T("AT+CMGF=1\r")) == -1)
MessageBox(NULL, "Nu poate scrie in portul serial!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
if(WriteToCOM(_T("AT+CSCA=\"+40721004000\"\r")) == -1)
MessageBox(NULL, "Nu poate scrie in portul serial!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
/* DWORD dwReadStatId;
HANDLE hThread = CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE) COMM,
(LPVOID) NULL,
0,
&dwReadStatId);*/
CSMSSenderDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
HANDLE CSMSSenderApp::SetupCommPort (void)
{
hCommPort = CreateFile( gsPort,
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL| FILE_FLAG_OVERLAPPED,
0);
if (hCommPort == INVALID_HANDLE_VALUE) {
MessageBox(NULL, "Nu poate deschide portul serial!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
return NULL;
}
COMMTIMEOUTS cto = { 2, 1, 1, 0, 0 };
DCB dcb;
if(!SetCommTimeouts(hCommPort,&cto))
MessageBox(NULL, "Nu poate seta portul serial!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
memset(&dcb,0,sizeof(dcb));
dcb.DCBlength = sizeof(dcb);
dcb.BaudRate = 9600;
dcb.fBinary = 1;
dcb.fDtrControl = DTR_CONTROL_ENABLE;
dcb.fOutxCtsFlow = 1;
dcb.fRtsControl = DTR_CONTROL_HANDSHAKE;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.ByteSize = 8;
if(!SetCommState(hCommPort,&dcb))
MessageBox(NULL, "Nu poate seta portul serial!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
SetupComm(hCommPort, 512, 512);
if (!EscapeCommFunction(hCommPort, SETDTR))
MessageBox(NULL, "Nu poate deschide portul serial!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
return hCommPort;
}
int WriteToCOM(CString szParam)
{
LPOVERLAPPED lpOver = new OVERLAPPED;
DWORD dwRead;
int ret = WriteFile(theApp.hCommPort, szParam.GetBuffer(szParam.GetLength()), szParam.GetLength(), &dwRead, lpOver);
if(!ret )
{
delete lpOver;
return -1;
}
delete lpOver;
return 0;
}
void COMM(void * param)
{
OVERLAPPED os;
DWORD dwEvtMask;
DWORD dwErrorFlags;
COMSTAT ComStat;
DWORD dwlength;
char lpszBlock[2];
CString szToken ;
bool bReadState;
memset( &os, 0, sizeof( OVERLAPPED ) ) ;
memset((char *)&lpszBlock,0,sizeof(lpszBlock));
os.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
SetCommMask(theApp.hCommPort,EV_RXCHAR);
PurgeComm(theApp.hCommPort,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
while(2)
{
dwEvtMask=0;
WaitCommEvent(theApp.hCommPort,&dwEvtMask,&os);
if(dwEvtMask&EV_RXCHAR)
{
do{
ClearCommError(theApp.hCommPort,&dwErrorFlags,&ComStat);
dwlength=min((DWORD)4096,ComStat.cbInQue);
if(dwlength>0)
{
unsigned long iNrBytes;
bReadState=ReadFile(theApp.hCommPort,
lpszBlock,
1,
&iNrBytes,
&os);
if(bReadState)
{
if((*lpszBlock != 13) && (*lpszBlock != 10))
{
if((*lpszBlock != 6) && (*lpszBlock != 21))
szToken += _T(lpszBlock);
}
else
{
if(*lpszBlock != 13)
{
//Se prelucreaza token-ul
}
}
}
}
}while(dwlength>0);
}
}
CloseHandle(os.hEvent);
}
int SendMssg(CString szTel, CString szMsg)
{
char szBuff[1024];memset(szBuff, 0, sizeof(szBuff));
sprintf(szBuff, "AT+CMGS=\"+4%s\"\r\n",szTel);
if(WriteToCOM(szBuff) == -1)
::MessageBox(NULL, "Eroare la scrierea pe COM!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
Sleep(200);
memset(szBuff, 0, sizeof(szBuff));
sprintf(szBuff, "%s\r\n",szMsg);
if(WriteToCOM(szBuff) == -1)
::MessageBox(NULL, "Eroare la scrierea pe COM!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
Sleep(200);
memset(szBuff, 0, sizeof(szBuff));
sprintf(szBuff, "\x1A\x0D\x0A");
if(WriteToCOM(szBuff) == -1)
::MessageBox(NULL, "Eroare la scrierea pe COM!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
return 1;
}
SMSSenderDlg.cpp
// SMSSenderDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SMSSender.h"
#include "SMSSenderDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
int iFlag;
extern CSMSSenderApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSMSSenderDlg dialog
CSMSSenderDlg::CSMSSenderDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSMSSenderDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSMSSenderDlg)
m_szMsg = _T("");
m_szTel = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CSMSSenderDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSMSSenderDlg)
DDX_Control(pDX, IDC_EDITTEL, m_cTel);
DDX_Control(pDX, IDC_EDITMSG, m_cMsg);
DDX_Control(pDX, IDC_BUTTONSEND, m_cSend);
DDX_Text(pDX, IDC_EDITMSG, m_szMsg);
DDX_Text(pDX, IDC_EDITTEL, m_szTel);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSMSSenderDlg, CDialog)
//{{AFX_MSG_MAP(CSMSSenderDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTONSEND, OnButtonsend)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSMSSenderDlg message handlers
BOOL CSMSSenderDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About…" menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
iFlag = -1;
SetTimer(1, 45000, NULL);
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CSMSSenderDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CSMSSenderDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() – cxIcon + 1) / 2;
int y = (rect.Height() – cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CSMSSenderDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CSMSSenderDlg::OnButtonsend()
{
char szTel[160];
char szMsg[20];
m_cMsg.GetWindowText(szMsg, 160);
m_cTel.GetWindowText(szTel, 60);
if(szTel == _T(""))
{
::MessageBox(NULL, "Introduceti numarul de telefon!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
return;
}
if(szMsg == _T(""))
{
::MessageBox(NULL, "Mesaj vid!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
return;
}
char szBuff[1024];memset(szBuff, 0, sizeof(szBuff));
sprintf(szBuff, "AT+CMGS=\"+4%s\"\r\n",szTel);
if(WriteToCOM(szBuff) == -1)
::MessageBox(NULL, "Eroare la scrierea pe COM!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
Sleep(200);
memset(szBuff, 0, sizeof(szBuff));
sprintf(szBuff, "%s\r\n",szMsg);
if(WriteToCOM(szBuff) == -1)
::MessageBox(NULL, "Eroare la scrierea pe COM!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
Sleep(200);
memset(szBuff, 0, sizeof(szBuff));
sprintf(szBuff, "\x1A\x0D\x0A");
if(WriteToCOM(szBuff) == -1)
::MessageBox(NULL, "Eroare la scrierea pe COM!", "Eroare!", MB_OK | MB_ICONEXCLAMATION);
}
void CSMSSenderDlg::OnTimer(UINT nIDEvent)
{
if(++iFlag)
{
iFlag–;
return;
}
//TRACE("Timer enter!");
char szTel[20];memset(szTel, 0, sizeof(szTel));
char szMsg[200];memset(szMsg, 0, sizeof(szMsg));
char szFrom[20];memset(szFrom, 0, sizeof(szFrom));
if(!GetPrivateProfileString("msg", "Telefon", NULL, szTel, 20, "c:\\webshare\\logs\\sendfile"))
{
iFlag = -1;
//TRACE("Timer exit1!\n");
return;
}
if(!GetPrivateProfileString("msg", "Mesaj", NULL, szMsg, 200, "c:\\webshare\\logs\\sendfile"))
{
iFlag = -1;
//TRACE("Timer exit2!\n");
return;
}
if(!GetPrivateProfileString("msg", "From", NULL, szFrom, 20, "c:\\webshare\\logs\\sendfile"))
{
iFlag = -1;
//TRACE("Timer exit3!\n");
return;
}
char szBuff[200];memset(szBuff, 0, sizeof(szBuff));
sprintf(szBuff, "Mesaj de la :%s \r%s", szFrom, szMsg);
SendMssg(_T(szTel), _T(szBuff));
//TRACE("Trimit mesaje!");
HANDLE hFile = CreateFile( "c:\\webshare\\logs\\sendfile",
GENERIC_READ | GENERIC_WRITE,
0,
0,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,//| FILE_FLAG_OVERLAPPED,
0);
if(hFile != (HANDLE)-1)
{
CloseHandle(hFile);
//TRACE("Inchid fisieru'!");
}
iFlag = -1;
//TRACE("Timer exit final!\n");
CDialog::OnTimer(nIDEvent);
}
Cap. 6. CONCLUZII
6.1. Scopul Proiectului
Scopul proiectului este acela de a trimite mesaje scurte de tip S.M.S. cu ajutorul Internetului utilizând un server HTTP și o pagină HTML ca interfață, conectând un telefon mobil cu un cablu serial la computerul pe care rulează serverul HTTP (în acest caz telefonul mobil este un Nokia 3110).
6.2. Etapele Realizării Proiectului
Studiul structurii și modelelor de referință în rețelele de calculatoare pentru subsistemele de calculatoare, programele de rețea, modelul de referință OSI și modelul de referință TCP/IP.
Studiul nivelului fizic pentru viteza de transmisie, mediul de transmisie, comunicațiile fără fir, sistemul radio celular și sateliții de comunicare.
Studiul subnivelului de acces la mediu pentru rețelele LAN și rețelele de sateliți.
Structurarea rețelelor fără fir la nivelurile rețea de transport pentru nivelul rețea în Internet și nivelul transport în Internet cu modelele TCP și UDP.
Realizarea aplicației prin care se realizează trimiterea către un abonat la un serviciu GSM, a mesajelor scurte (S.M.S.) prin Internet utilizând un server HTTP și o pagină HTML.
CAP. 7. BIBLIOGRAFIE
Teodoru Gugoiu – HTML prin EXEMPLE; editura Teora, 2000.
E. Diatcu, A. Tertișco, F. Iacob, M. Tache, Z. Racoviță – ELEMENTE FUNDAMENTALE ALE TEORIEI SISTEMELOR ȘI CALCULATOARELOR; editura HYPERION XXI, 1997.
Sfetcu Nicolae – Telefonia mobila celulara: procesoare de semnal digital, 1997.
CAP. 7. BIBLIOGRAFIE
Teodoru Gugoiu – HTML prin EXEMPLE; editura Teora, 2000.
E. Diatcu, A. Tertișco, F. Iacob, M. Tache, Z. Racoviță – ELEMENTE FUNDAMENTALE ALE TEORIEI SISTEMELOR ȘI CALCULATOARELOR; editura HYPERION XXI, 1997.
Sfetcu Nicolae – Telefonia mobila celulara: procesoare de semnal digital, 1997.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Implementarea Internetului In Retelele Fara Fir (ID: 149861)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
