Concepte Linux Networking

De la Wiki.lug.ro
Versiunea din 27 martie 2009 13:11, autor: Bmbogdan (Discuție | contribuții) (Reveniri la ultima modificare de către 71.198.34.249 (discuţie); revenire la ultima versiune de către Petre)

Salt la: navigare, căutare

Aceasta este o traducere a Linux Networking-concepts HOWTO publicată de proiectul netfilter la http://www.netfilter.org/documentation/HOWTO/networking-concepts-HOWTO.html

Documentul este publicat sub licenţă GNU GPL, (C) 2000 Paul `Rusty' Russell.

Traducera originală a fost preluată de la http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/ro/text/Linux-Networking-concepts-HOWTO şi începe cu următorul text:


traducere ver. 0.4 de catre Riddl

Multumiri tuturor celor care m-au ajutat,  in special lui Gushterul.
Observatie f importanta: probabil ca exista unele greseli in acest document.
Am tradus si eu cum m-am priceput mai bine, daca descoperiti greseli de 
traducere si pentru observatii pertinente trimiteti-mi mail pentru Riddl la 
"discutzii at gmx dot net". Nu uitati sa precizati numele documentului.
Multumesc anticipat.
Aceasta versiune este  putin modificata fata de original, deorece unii termeni 
sunau foarte ciudat in ro.

Lecturare placuta!

Linux Networking-concepts HOWTO

HOWTO privind Conceptele de retea Linux - HOWTO

Rusty Russell

$Revision: 1.3 $ $Date: 2002/06/05 13:21:56 $

Acest document descrie ce este o reţea (cum ar fi internetul), şi foarte primar cum funcţionează aceasta.


Introducere

Bine ai venit!

Am scris în trecut un număr de howto-uri despre reţelele, şi am constatat că există în fiecare o mulţime de termeni jargonici. Am avut de ales între trei variante: celelalte două ignorau problema şi explicau termenii peste tot. Nici una dintre ele nu era atractivă.

Software-ul liber îţi dă oferă oportunitatea să explorezi şi să te joci cu el pe sistemul pe care îl foloseşti. Cred că dându-le posibilitatea oamenilor să experimenteze aceasta libertate, acest software are un scop nobil; nu numai că-i face pe oameni să se simtă puternici printr-o ocupaţie (cum ar fi reconstruirea unui motor de maşină) dar prin natura internetului şi software-ului liber ai posibilitatea să partajezi experienţa ta cu milioane de oameni.

Dar trebuie să începi de undeva, aşa că iată-ne.

(C) 2000 Paul "Rusty" Russell. Sub licenţă GNU GPL.


Ce este o "reţea de calculatoare"?

O reţea de calculatoare constă în toate tehnologiile folosite pentru ca nodurile de reţea să schimbe informaţie între ele (prin "noduri" înţeleg computere, imprimante, maşini de gătit şi orice altceva doreşti). Nu contează foarte mult cum sunt interconectate: pot să folosească fibră optică sau porumbei călători. E clar, unele alegeri sunt mai bune decât altele, mai ales dacă ai prin casă pisici. :)

În mod normal conectarea a două calculatoare nu se poate numi reţea, este nevoie de trei sau mai multe pentru a deveni o reţea. Acest lucru seamănă cu cuvântul "grup": doi oameni înseamnă doar două persoane, pe când trei persoane formează un grup. De asemenea, reţelele sunt adesea prinse împreună, pentru a forma reţele mai mari, fiecare reţea mai mică (de obicei numita o "sub-reţea") poate fi parte componentă dintr-o reţea mai mare.

De fapt conexiunea între două computere este adesea denumită "legătură de reţea". Dacă este ceva cablu în spatele computerului tău către alte computere atunci aceea este legătura ta de reţea.

Sunt patru lucruri despre care suntem interesaţi când vorbim despre o reţea de calculatoare:

Mărimea

Dacă pur şi simplu conectezi între ele cele patru calculatoare de acasă, ai realizat ceea ce se numeşte LAN (Local Area Network - reţea locala). Dacă totul este la distanta de mers pe jos, este denumit de obicei LAN, oricâte calculatoare ar fi conectate, şi din orice infrastructura ar fi constituită reţeaua.

La celalalt pol se situează WAN-ul (Wide Area Network - reţea întinsă). Dacă ai un calculator la Bucureşti, România, altul în New York, SUA, şi unul în Lhasa, Tibet, şi reuşeşti să le conectezi, aceasta este atunci un WAN.


Topologia: Forma

Desenează harta unei reţele: liniile sunt "legăturile din reţea", şi fiecare nod este un punct. Poate că fiecare linie duce într-un punct central ca o stea, însemnând că fiecare vorbeşte printr-un singur punct ( o "topologie stea"):

             o   o   o
              \_ | _/
                \|/
           o-----o-----o
               _/|\_
              /  |  \
             o   o   o

Sau poate că fiecare comunică în linie, astfel:

             o------o------o-------o--------o
             |                              |
             |                              |
             |                              o
             |                              |
             o                              |
                                            o

Sau poate că ai trei subreţele conectate printr-un singur nod:

                         o
             o           |  o--o--o
             |           |  |
             o--o--o--o--o  o
                    \       |
                     o------o
                    /       |
             o--o--o--o--o  o
             |           |  |
             o           |  o--o
                         o


Vei vedea multe topologii ca acestea în realitate şi multe altele mult mai complicate.


Fizic: Din ce este făcută reţeaua.

Al treilea lucru de care trebuie să fim interesaţi este din ce este construită reţeaua noastră. Cea mai ieftina este "sneakernet-u", erau oamenii care transportau diskete de la un computer la altul. Sneakernet-ul este aproape întodeauna un "LAN". Disketele costa mai puţin de 1$ şi o pereche de skeakers (încălţăminte care nu face zgomot) în jur de 20$.

Cel mai obişnuit sistem folosit pentru a conecta reţeaua de acasă către alte reţele mai mari este prin intermediul unui "modem" (MODulator/DEModulator), care transformă o legătură telefonică într-o legătură de reţea. Modemul transformă ceea ce transmite calculatorul în sunete, şi ascultă sunetele venite de la celalalt capăt pe care le transformă iar în informaţie pentru calculator. După cum îţi imaginezi acest lucru nu este din cale afara de eficient, deoarece liniile telefonice nu au fost făcute pentru genul acesta de lucruri, dar este un sistem răspândit deoarece liniile telefonice sunt atât de obişnuite şi ieftine: modemurile costa sub 50$ şi linia telefonica 200$ pe an.

Cel mai obişnuit sistem să conectezi computerele într-un LAN este sa foloseşti Ethernet. Ethernetul poate fi de trei tipuri (în ordinea în care au fost realizate): Thinwire/Coax/10base2, UTP/10baseT şi UTP/100baseT. Gigabit ethernet (1000baseT începe să sune ciudat) este în curs de a fi realizat. 10baseT este de obicei un fir coaxial negru care are din loc în loc T-uri pentru a putea fi conectate la computere, toţi sunt conectaţi într-o linie, linie care are la capete terminatori speciali. UTP este de obicei un cablu de culoare albastru deschis, care are două capete prevazute cu terminatori din plastic similari celor de la telefon, care sunt conectaţi în dispozitivele fizice (placă ethernet, hub, etc.). Cablul costa câţiva dolari metrul, şi plăcile de reţea 10baseT/10base2 (multe au conectori pentru ambele tipuri) sunt greu de găsit noi de firma. 100baseT sunt de 10 ori mai rapide decât 10baseT, sunt compatibile si cu acestea, şi costa cam 30$.

Tehnologia de vârf este însă fibra optică; un fir de sticlă subţire în cămaşă protectoare care poate fi folosită pentru a lega în reţea continente. În general costa mii de dolari.

În mod normal numim fiecare conexiune la un nod "interfaţă de reţea" sau pe scurt "interfaţă". Linux le numeşte astfel "eth0" pentru prima interfaţă ethernet, şi "fddi0" pentru prima interfaţă de fibră. Comanda "/sbin/ifconfig" ni le listează.


Protocol: Cum comunica.

Ultimul lucru care te interesează este limbajul pe care îl folosesc două noduri interconectate. Când două modemuri comunică unul cu altul printr-o linie telefonica, trebuie să se pună de acord ce vor însemna fiecare sunet, altfel pur şi simplu nu vor comunica. Aceasta convenţie este denumita "protocol". Pe măsură ce oamenii au descoperit noi posibilităţi de codare astfel încât computerele să spună mai multe în sunete mai scurte, noi protocoale s-au inventat; sunt cel puţin o duzina de protocoale diferite, şi fiecare modem va încerca câteva pana când va găsi unul care să fie înţeles şi de celalalt modem.

Un alt exemplu este reţeaua 100baseT menţionată mai sus. Aceasta foloseşte aceeaşi legătură fizică "UTP" ca şi 10baseT, dar comunică de 10 ori mai rapid.

Aceste doua protocoale sunt denumite protocoale de nivel de legătură (link level) care determină cum este transportata informaţia între două puncte pe conexiuni de reţea individuale. Cuvântul "protocol" se referă şi la alte convenţii după cum vom vedea mai jos.


Ce este "Internetul"?

Internetul este o reţea de tip WAN, care împânzeşte întregul glob: este cea mai mare reţea de calculatoare existenta. "Internetworking" înseamnă conectarea mai multor reţele pentru a crea una mai mare, prin urmare internetul este o mare îngrămădire de subreţele.

Aşa că acum uitându-ne la lista de mai sus, ne punem întrebarea: care este mărimea Internetului, din ce este formata fizic şi care sunt protocoalele folosite?

Mărimea am spus-o deja. Este globala.

Structura fizică este variata, fiecare subreţea este conectata într-un mod diferit. Încercarea de a creea o hartă folositoare este sortită deci eşecului.

Protocoalele folosite de fiecare legătură este de asemena diferită: toate protocoalele de mai sus pentru nivel de legatura sunt folosite şi multe altele.


Cum functionează Internetul?

Cum poate fiecare nod să vorbească cu alte noduri dacă folosesc protocoale de nivel legătură diferite?

Răspunsul este simplu: avem nevoie de un alt protocol care să controleze cum circulă informaţia prin reţea. Protocolul pentru nivel de legătură descrie cum să circule informaţia între doua noduri care sunt legate direct: protocolul pentru nivel de reţea face posibila transportul informaţie între un nod şi un altul peste oricât de mult legături de reţea.

Pentru internet, protocolul la nivel de reţea este INTERNET PROTOCOL (versiunea 4) sau "IP". Nu este singurul protocol existent (Apple's AppleTalk, Novell's IPX, Digital's DECNet şi Microsoft's NetBEUI fiind altele), dar este cel mai adoptat. A apărut o noua versiune de protocol "IP" numit IPv6, dar încă nu este atât de utilizat.

Aşa că pentru a transmite un mesaj dintr-un punct al globului în altul, computerul tău foloseşte protocolul IP, trimite informaţia la modem, care foloseşte protocolul pentru nivel de legătură pentru a trimite informaţia modemului din celalalt capăt, modem care se afla probabil într-un rack de modemuri, care trimite informaţia către un alt nod, nod care la rândul sau trimite către altul, şi tot aşa. Un nod care face legătura între două sau mai multe reţele este denumit "ruter": acesta va avea câte o interfaţă pentru fiecare reţea.

Numim acest sir de protocoale o "stivă de protocoale", de obicei desenată aşa:



     [ Aplicaţia: Primeşte poze ]      [ Nivelul aplicaţie: transmite poze ]
                    |                                          ^
                    v                                          |
      [ TCP: are grija de transport ]          [ TCP: are grija de transport ]
                    |                                          ^
                    v                                          |
          [ IP: are grija de routare ]          [ IP: are grija de routare ]
                    |                                          ^
                    v                                          |
[ Link: doar pentru conexiune directa ]  [ Link: doar pentru conexiune directa ]
                    |                                          |
                    +------------------------------------------+

Deci, în diagrama, vedem cum Netscape (aplicaţia din stânga sus) accesează nişte poze de pe un server web (aplicaţia din dreapta sus). Pentru a face acest lucru aplicaţia noastră foloseşte nivelul TCP, protocol pentru controlul transportului: peste 90% din din traficul internet foloseşte TCP, care este folosit mai ales pentru serviciile web şi mail.

Deci, Netscape trimite o cerere pentru o conexiune TCP către serverul remote: aceasta cerere este preluata la nivel de protocol de transport TCP, care trimite mai departe cererea nivelului protocolului de reţea IP, care la rândul lui transmite informaţia mai departe către nivelul protocolului de legătură.

La celălat capăt nivelul protocolului de legătură înaintează informaţia către nivelul protocolului IP, care vede că informaţia este destinată calculatorului respectiv (dacă nu va înainta informaţia nivelului de legătură pentru că informaţia să ajungă la următorul nod), care înaintează informaţia nivelului protocolului de transport TCP, care o înaintează server-ului, respectiv aplicaţiei.

Deci avem următoarele trei puncte:

1. Aplicaţia (Netscape, sau serverul din capătul celalalt) decide cu cine anume doreşte să vorbească şi ce anume doreşte să trimită

2. Nivelul de transport trimite pachete speciale pentru a începe conversaţia cu celălalt capăt şi apoi împachetează informaţia într-un "pachet" TCP: un pachet este doar un termen pentru o bucată de date care trece printr-o reţea. Nivelul de transport TCP pasează acest pachet către nivelul de reţea IP: apoi transmite în continuare pană când celălat capăt la nivel de transport TCP transmite recepţionarea pachetului. Acest mecanism este numit "retransmitere", şi are o mulţime de reguli complexe care controlează când să transmită, cât să aştepte, etc. Îi dă de asemenea fiecărui pachet o mulţime de numere, pentru că la celălalt capăt să fie sortate în ordinea corecta.

3. La nivel de reţea IP se ia în considerare destinaţia pachetului şi se decide următorul nod către care să se transmită pachetul. Aceasta operaţie este numita în mod simplu "rutare"(routing), şi diferă de la foarte simplu (dacă nu ai decât un singur modem şi nici o alta interfaţă de reţea, pachetele ar trebui să iasă numai prin acea interfaţă) până la extrem de complex (dacă ai 15 reţele complexe conectate direct prin tine).


Acest lucru numit IP

Aşadar rolul nivelului de legătură IP este să realizeze cum să "ruteze" pachetele către destinaţia finala. Pentru ca acest lucru să fie posibil, fiecare interfaţă din reţea trebuie să aibă o "adresă IP". Această adresă constă din patru numere separate prin puncte, cum ar fi "167.216.245.249". Fiecare număr trebuie să fie cuprins între 0 şi 255.

Interfeţele în aceeaşi reţea au tendinţa să aibă adrese IP vecine. De exemplu "1.1.1.19" sta chiar lângă sistemul cu adresa IP "1.1.1.20". De asemenea nu uita că un ruter este un nod cu interfeţe pentru mai mult de o reţea, aşa că ruter-ul va avea câte o adresă IP pentru fiecare interfaţă.

Aşa că nivelul de reţea IP al kernelului ţine un tabel cu "rute" diferite, punând la dispoziţie calea pentru a ajunge la grupuri variate de adrese IP. Cea mai simplă dintre rute este numita "ruta default": dacă nici o alta rută nu se potriveşte aceasta este calea pe care o iau pachetele. Poţi vedea o listă a acestor rute cu ajutorul comenzii "/sbin/route".

Rutele fie indică o legătură, fie un nod particular care este conectat la o altă reţea. De exemplu, când suni la ISP, ruta default va fi către legătura cu modemul, deorece acolo este punctul de acces către întreaga lume.


Modemul

      Modemul lui          ISP-ului
         Rusty                     {            }
             o------------------o { Internetul   }
                                   {            }
                                   


Dar dacă ai un sistem care este în permanenta conectat la lumea din afară, este puţin mai complicat. În diagrama de mai jos, sistemul meu poate să comunice în mod direct cu computerele lui Paul şi Tridge, şi cu firewall-ul, dar este necesar ca sistemul meu să ştie că pachetele care trebuiesc livrate restului lumii trebuie să se îndrepte către firewall care le va pasa mai departe. Aceasta înseamnă că vei avea doua rute: una care să zică "dacă destinaţia este în reţeaua mea trimite informaţia direct acolo" şi apoi o rută default care să spună "în caz contrar, trimite-o către firewall".


                               o  Maşină de lucru
                               |    a lui Tridge
        Maşină de lucru        |                     {            }
         a lui Rusty  o--------+-----------------o--{  Internetul  }
                               |            Firewall {            }
                               |                   
                               o  Maşină de lucru
                                    a lui Paul  


Grupuri de adrese IP: Netmask-uri

Mai este un ultim detaliu: există o notaţie standard pentru grupuri de adrese IP, uneori numită "adresă de reţea". La fel cum un număr de telefon poate fi împărţit în prefix şi restul, la fel putem divide o adresă IP într-un prefix de reţea şi restul.

Oamenii obişnuiau să vorbească despre "reţeaua 1.2.3", însemnând toate cele 256 de adrese de la 1.2.3.0 la 1.2.3.255. şi dacă asta nu era o reţea destul de mare ar fi putut să vorbească despre "reţeaua 1.2" care înseamnă toate adresele de la 1.2.0.0 la 1.2.255.255.

În mod normal nu scriem "1.2.0.0-1.2.255.255". În loc, scriem prescurtat "1.2.0.0/16". Notaţia ciudată "/16" (numită netmask) cere o mică explicaţie.

Fiecare număr despărţit prin puncte într-o adresă IP este de fapt un număr binar format din 8 cifre (00000000 la 11111111): le scriem în format zecimal pentru a putea fi mai uşor de citit. "/16" înseamna că primele 16 cifre binare reprezinta adresă reţelei, cu alte cuvinte partea "1.2" este reţeaua. (ţine minte fiecare număr reprezinta 8 cifre binare). Aceasta înseamnă că orice adresă care începe cu "1.2" face parte din această reţea: "1.2.3.4" şi "1.2.5.22" fac parte din aceasta reţea, dar "1.3.4.2" nu.

Pentru a face viata mai uşoară, în mod normal folosim reţele care au netmask "/8", "/16" şi "/24". De exemplu, "10.0.0.0/8" este o reţea imensă care conţine orice adresă de la 10.0.0.0 la 10.255.255.255 (peste 16 milioane de adrese!). "10.0.0.0/16" este mai mică, conţinând adresele doar de la 10.0.0.0 la 10.0.255.255. "10.0.0.0/24" este şi mai mică deţinând adresele de la 10.0.0.0 la 10.0.0.255.

Pentru a face lucrurile şi mai confuze, mai este un mod prin care putem să scriem netmask-urile. Putem să le scriem ca adrese IP:

10.0.0.0/255.0.0.0

În sfârşit, nu valorează nimic faptul că cea mai mare adresă dintr-o reţea este rezervat ca "adresă de broadcast", care poate fi folosită pentru a transmite un mesaj către toate host-urile din reţea.

Mai jos este un tabel cu netmask-uri:


Forma       Forma           Numărul de      Comentarii
scurtă      lungă             maşini maxim
 /8      /255.0.0.0         16,777,215  numită în trecut reţea de clasă A
 /16     /255.255.0.0       65,535      numită în trecut reţea de clasă B
 /17     /255.255.128.0     32,767
 /18     /255.255.192.0     16,383
 /19     /255.255.224.0     8,191
 /20     /255.255.240.0     4,095
 /21     /255.255.248.0     2,047
 /22     /255.255.252.0     1,023
 /23     /255.255.254.0     511
 /24     /255.255.255.0     255         numită în trecut reţea de clasă C
 /25     /255.255.255.128   127
 /26     /255.255.255.192   63
 /27     /255.255.255.224   31
 /28     /255.255.255.240   15
 /29     /255.255.255.248   7
 /30     /255.255.255.252   3


Nume de computere şi Adrese IP

În concluzie, orice interfaţă de pe fiecare nod are o adresă IP. Foarte repede s-a constatat că oamenii reţin destul de greu numerele, aşa că s-a hotărât (la fel ca la numerele de telefon) să avem un director cu nume. Dar cum folosim computere oricum, este mai simplu să punem computerele să găsească numele în mod automat.

Prin urmare avem DNS, sistemul de gestionare a numelor domeniilor. Sunt noduri cu adrese IP bine cunoscute pe care programele le pot interoga trimiţând nume pentru a primi adrese IP. Aproape toate programele pe care le foloseşti pot realiza această interogare, de asta poţi pune "www.linuxcare.com" în Netscape în loc de "167.216.245.249".

Bineînţeles, ai nevoie de adresele de reţea a cel puţin unuia dintre aceste "servere de nume": în mod normal aceste adrese se găsesc în fişierul "/etc/resolv.conf".

Cum interogările şi răspunsurile DNS sunt relativ mici (1 pachet de fiecare), protocolul TCP nu este folosit: acesta pune la dispoziţia retransmisie automată, ordonare a pachetelor şi o siguranţă a conexiunii, dar cu costul trimiterii de pachete în plus în reţea. De aceea folosim foarte simplul protocol UDP (protocol pentru datagrame utilizator), care nu oferă extra facilităţile pe care le oferă TCP şi de care nu avem nevoie.

Servici diferite: Email, Web, FTP, DNS

Într-un exemplu anterior, am arata cum Netscape trimite o cerere TCP către un server de web care rulează pe un alt nod. Dar să ne imaginam că acel nod care este şi server de web rulează şi server de email, un server de ftp şi un server DNS, cum ştie nodul pentru ce server este conexiunea TCP?

Aici TCP şi UDP au conceptul de "port". Fiecare pachet are precizat în el "portul destinaţie" care spune pentru ce serviciu este destinat pachetul. De exemplu, portul 25 TCP este pentru server-ul de mail, şi portul 80 TCP este server-ul de web (de asemenea câteodată poţi să întâlneşti servere web pe porturi diferite). O listă a porturile poate fi găsită în "/etc/services".

De asemenea, dacă doua ferestre Netscape, amândouă accesează părţi diferite din acelaşi site web, cum face sistemul linux pe care rulează Netscape să sorteze pachetele care se întorc de la server?

Aici intervine "portul sursa": fiecărei conexiune nouă TCP ii se atribuie un nou port sursă, aşa că sunt separate, chiar dacă se duc spre aceeaşi adresă destinaţie IP şi acelaşi port destinaţie. În mod normal primul port sursă alocat va fi 1024 şi creşte odată cu trecerea timpului.



Interfeţe dialup: PPP

Când suni cu modemul la un ISP, şi se conectează la modemul lor, kernelul nu începe pur şi simplu să trimită pachete IP prin conexiune. Există un protocol numit PPP (point-to-point protocol), care este folosit pentru a negocia cu celălalt capăt înainte de a se permite trimiterea oricăror pachete. Acesta este folosit de către ISP pentru identificarea clientului care a sunat: pe sistemul tău linux, un program numit "PPP daemon" se ocupă cu partea ta de negociere.

Pentru că în lume sunt mulţi utilizatori de dial-up, de obicei aceştia nu au propria lor adresă IP: cele mai multe ISP-uri îţi vor aloca una din adresele lor când te vei conecta (daemonul PPP va negocia acest lucru). Aceasta este adesea numită "adresă IP dinamica", diferită fata de "adresă IP statică" care este cazul normal când ai propria ta conexiune permanentă. În mod normal această adresă este determinată de modem, data următoare când te conectezi, probabil că vei nimeri alt modem, şi astfel vei avea altă adresă IP.



Cum arată pachetele

Pentru cei foarte curioşi iată o descriere a structurii unui pachet. Sunt mai multe aplicaţii care capturează pachetele care intră sau care ies dintr-un sistem linux: cel mai comun este "tcpdump" (care înţelege mai multe protocoale decât TCP), dar unul grafic este "ethereal". Aceste aplicaţii sunt numite "snifere de pachete".

Începutul fiecărui pachet conţine informaţii cum ar fi destinaţia, sursa, tipul pachetului, şi alte detalii administrative. Această parte a unui pachet este numită "header". Restul pachetului, ce conţine datele propriu-zise, este în mod uzual numit "corpul pachetului".

Aşa că orice pachet IP începe cu un "header IP", în mărime de cel puţin 20 bytes. Arată cam aşa (aceasta diagramă a fost preluată din RFC 791):

        .-------+-------+---------------+-------------------------------.
        |Version|  IHL  |Type of Service|          Total Length         |
        |-------+-------+---------------+-------------------------------|
        |         Identification        |Flags|      Fragment Offset    |
        |---------------+---------------+-------------------------------|
        |  Time to Live |    Protocol   |         Header Checksum       |
        |---------------+---------------+-------------------------------|
        |                       Source Address                          |
        |---------------------------------------------------------------|
        |                    Destination Address                        |
        "---------------------------------------------------------------"

Câmpurile importante sunt Protocol, care indică dacă pachetul este de tip TCP (numărul 6), un pachet UDP (numărul 17) sau altceva, adresă IP sursa, şi adresa IP destinaţie.

Acum, dacă acel câmp referitor protocolului spune că pachetul este TCP, atunci imediat un header TCP va urma imediat header-ului IP: header-ul TCP este de asemenea de cel puţin 20 bytes mărime:

        .-------------------------------+-------------------------------.
        |          Source Port          |       Destination Port        |
        |-------------------------------+-------------------------------|
        |                        Sequence Number                        |
        |---------------------------------------------------------------|
        |                    Acknowledgment Number                      |
        |-------------------+-+-+-+-+-+-+-------------------------------|
        |  Data |           |U|A|P|R|S|F|                               |
        | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
        |       |           |G|K|H|T|N|N|                               |
        |-------+-----------+-+-+-+-+-+-+-------------------------------|
        |           Checksum            |         Urgent Pointer        |
        "---------------------------------------------------------------"

Cele mai importante câmpuri sunt aici câmpurile reprezentând portul sursă şi portul destinaţie care determina către ce serviciu este destinat pachetul (sau, în cazul pachetelor replica, de la care serviciu provine). Numerele "sequence" şi "acknowledgment" sunt folosite pentru a tine o ordine în pachete şi pentru a spune celuilalt capăt ce pachete au fost primite. Flag-urile ACK, SYN, RST şi FIN (scrise pe verticala) sunt biţi unici folosiţi pentru negocierea deschiderii (SYN) sau închiderii (RST sau FIN) conexiunilor.

După acest header urmează mesajul real pe care îl trimite aplicaţia (corpul pachetului). Un pachet normal are până la 1500 bytes: aceasta înseamnă că cel mai mare spaţiu pe care îl pot ocupa datele este de 1460 bytes (20 bytes header-ul IP, 20 bytes header-ul TCP): peste 97%.


Sumar

În concluzie internetul modern foloseşte pachete IP pentru a comunica, şi cele mai multe dintre aceste pachete folosesc TCP pentru controlul conexiunii. Noduri speciale denumite "rutere" conectează micile reţele în reţele mai mari, şi pasează pachetele către destinaţia lor finală. Marea majoritatea a computerelor sunt parte doar dintr-o reţea (au doar o singura interfaţă), spre deosebire de rutere.

Fiecare interfaţă are o adresă IP unica, care seamănă cu "1.2.3.4": interfeţele în aceeaşi reţea vor avea adrese IP înrudite, cu acelaşi început, la fel cum telefoanele dintr-o anumită zonă au acelaşi prefix. Adresele de reţea sunt asemănătoare adreselor IP, urmate însă de semnul "/" şi un număr pentru a se specifică porţiunea din acea adresă care reprezintă prefixul, de exemplu "1.12.0.0/24" înseamna că primele 3 grupuri de cifre reprezintă adresă de reţea, fiecare cifră reprezintă 8 biţi.

Maşinile au asignate nume de către serviciul de nume pe domenii: programele interoghează serverele de nume adrese IP, furnizând acestora nume de genul: "www.lug.ro". Aceasta adresă IP este apoi folosită ca adresă IP destinaţie pentru a vorbi cu acel nod.

Rusty este destul de nepriceput pentru a scrie documente, în special pentru începători.

Enjoy!

Rusty.


Multumiri

Multumiri lui Alison, pentru că mi-a spus în cel mai frumos mod posibil ce tâmpenii am scris în versiunile de început.


Index

 o  "100baseT"
 o  "10base2"
 o  "10baseT"
 o  "Broadcast address" - adresă de broadcast
 o  "Coax, Coaxial cable"
 o  "Computer network" - reţea de calculatoare
 o  "Default route" - ruta default

 o  "Destination port" - port destinaţie
 o  "DNS, Domain Name Service" - serviciu de nume de domenii DNS
 o  "Dynamic IP address"- adresă IP dinamică
 o  "Ethernet"
 o  "Fiber" - fibră
 o  "Gigabit Ethernet"
 o  "Hop"
 o  "Hub" 
 o  "Internet"
 o  "IP, Internet Protocol"
 o  "IP address" - adresă ip
 o  "IP header" - header IP
 o  "IPv4, IP version 4"
 o  "IPv6, IP version 6"
 o  "LAN, Local Area Network" - reţea locală
 o  "Link-level protocol" - protocol de nivel de legătură
 o  "Modem"
 o  "Name server" - server de nume

 o  "Netmask" - netmask
 o  "Network address, network mask" - adresă de reţea, mask de reţea
 o  "Network interface, interface" - interfaţă de reţea, interfaţă
 o  "Network link" - legătură de reţea
 o  "Network protocol, protocol" - protocol de reţea, protocol
 o  "Node" - nod
 o  "Packet body" - corpul pachetului 
 o  "Packet header" - headerul pachetului
 o  "Packet sniffer" - snifer de pachete
 o  "Packet" - pachet
 o  "Port, TCP port, UDP port" - port, port TCP, port UDP
 o  "PPP, Point-to-Point Protocol"
 o  "PPP daemon" - daemon PPP
 o  "Protocol stack" - stivă de protocoale
 o  "Retransmission" - retransmitere
 
 o  "Route" - rută

 o  "Router" - ruter
 o  "Routing" - rutare
 o  "Sneakernet"
 o  "Source port" - port sursă
 o  "Star-topology" - topologie în stea 
 o  "Static IP address" - adresă IP statică
 o  "Sub-network" - sub-reţea
 o  "TCP, Transmission Control Protocol" TCP, protocol cu controlul transportului
 o  "TCP header" - header TCP
 o  "Terminator" - terminator
 o  "Topology" - topologie
 o  "UDP, User Datagram Protocol" - UDP, protocol pentru datagrame utilizator
 o  "UTP, Unshielded Twisted Pair"
 o  "WAN, Wide Area Network" - reţea întinsă