Hrajte v súťaži Logo FreeSH!

Vaša reklama na tomto mieste za 2.4 € / mesiac

DirectoGlobal.com, reklamný systém kde neplatíte za kliknutia, ale za dobu zobrazenia

December 27, 2008

(0) Comments

Prehľad portov

Mnohokrát sme už hovorili o rôznych portoch. Dnes si spravíme malý prehľad základných portov používaných v sieťovej prevádzke.

  • Port 20 – slúži na prenos dát cez protokol FTP
  • Port 21 – taktiež používaný v protokole FTP, na kontrolu prenesených dát (Viz Manuály)
  • Port 23 – Používa ho služba Telnet (prípadne SSH)
  • Port 25 – tento port využíva protokol SMTP na odosielanie e-mailov (viz Manuály)
  • Port 53 – DNS servery využívajú port 53 na komunikáciu a prenos informácií
  • Port 80 – štandardný port pre HTTP protokol (Viz Manuály)
  • Port 110 – protokol POP3 na príjem pošty využíva tento port. Starý POP2 protokol komunikoval na porte 109
  • Port 123 – NTP (Network Time Protokol) je služba na automatickú aktualizáciu (synchronizáciu) času
  • Port 143 – IMAP používa na prenos e-mailov a komunikáciu s klientom port 143 (Viz Manuály)
  • Port 443 – je port ktorý používa HTTPS protokol (SSL spojenie)
  • Port 993 – šifrované spojenie pre IMAP
  • Port 1433 – využívaný databázovým systémom MS SQL
  • Port 2401 – používaným OpenSource systémom CVS
  • Port 3306 – MySQL databázy načúvajú na porte 3306

Zámerne som vynechal niektoré ďalšie porty ktoré sú používané, uviedol som len tie najčastejšie pužívané a tie, s ktorými sa môžte bežne stretnúť aj na rôznych iných stránkach.

December 18, 2008

(0) Comments

Transmission Control Protocol (TCP)

brano

V článku o protokoloch sme spomenuli aj protokol TCP ktorý je základom prenosu dát po sieti. Dnes si tento protokol rozoberieme trošku hlbšie.

Transmission Control Protocol (TCP) je jedným z protokolov balíka internetových protokolov, ktoré tvoria jeho jadro. Vďaka TCP môžu programy na počítačoch v sieti vytvárať medzi sebou spojenia (connections), ktorými je možné posielať dáta. Protokol pritom zaručuje, že dáta odoslané z jedného konca spojenia budú prijaté na druhej strane spojenia v rovnakom poradí a bez chýbajúcich častí. Rozlišuje tiež dáta pre rôzne aplikácie (ako webserver a emailový server) v rámci jedného počítača.

Transmission Control Protocol (TCP) je spojovo orientovaný, spoľahlivý komunikačný protokol transportnej vrstvy prenášajúci bajtový tok.

Aplikácie posielajú sieťou pomocou TCP toky dát s 8-bitovými slabikami a TCP rozdeľuje tok bajtov do segmentov s vhodne zvolenou veľkosťou (zvyčajne ovplyvnenou maximálnou veľkosťou prenosovej jednotky). TCP potom podáva výsledné pakety Internet protokolu na doručenie internetom TCP modulu na opačnom konci spojenia. TCP vykonáva kontrolu, aby sa uistil, že sa žiaden paket nestratí tak, že dá každému paketu poradové číslo, ktoré na druhom konci opäť TCP modul kontroluje a zabezpečuje tiež, že dáta sú doručené v správnom poradí. Vzdialený TCP modul zasiela späť potvrdenie (acknowledgement) o úspešne prijatých bajtoch; časovač odosielajúceho TCP spôsobí timeout (vypršanie času), ak nedostane potvrdenie vo vhodne zvolenom intervale obehu (round tip time) a dáta o ktorých predpokladá, že sa stratili pošle znova. TCP kontroluje, či dáta neboli poškodené tak, že ráta kontrolný súčet (checksum) pre každý blok odoslaných dát, ktorý sa pri prijímaní kontroluje.

TCP spojenie má tri fázy: nadviazanie spojenia, prenos dát a ukončenie spojenia.

Nadviazanie spojenia

Hoci je možné, aby dva stroje nadviazali spojenie zároveň, zvyčajne na jednom stroji beží serverová služba počúvajúca na určitom porte a pasívne počúva, t.j. čaká na prichádzajúce spojenia. Bežne sa to nazýva pasívne otvorenie a určuje stranu spojenia, ktorá funguje ako server. Klientská strana spojenia začne aktívne otvorenie tým, že pošle úvodný SYN segment serveru. Server by mal odpovedať platnou požiadavkou SYN so SYN/ACK. Nakoniec by mal klient odpovedať ACK, čím sa 3-way handshake, a teda fáza nadviazania TCP spojenia ukončí.

Prenos dát

Počas fázy prenosu dát určuje niekoľko kľúčových mechanizmov spoľahlivosť a robustnosť TCP. Patria medzi ne poradové čísla pre určenie poradia TCP segmentov a detekciu duplikátnych (dvojitých, rovnakých) dát, kontrolné súčty pre detekciu chýb v segmentoch a potvrdzovanie a časovače pre detekciu a prispôsobenie sa strate alebo oneskoreniu dát.

Počas fázy nadviazania TCP spojenia sa medzi dvoma strojmi vymenia tzv. initial sequence numbers (ISN). Tieto slúžia na idetifikáciu dát v dátovom toku a počítanie dátových bytov. V každom TCP segmente existuje dvojica poradových čísel, ktoré sa nazývajú poradové číslo a potvrdzovacie číslo. Odosielateľ TCP segmentu nazýva poradové číslo jednoducho poradové číslo, zatiaľ, čo odosielateľ považuje poradové číslo segmentu od prijímateľa za potvrdzovacie číslo. Aby bola zabezpečená spoľahlivosť, prijímateľ potvrdzuje dáta v TCP segmente tak, že oznamuje obdržané množstvo súvislých bajtov v TCP toku.

Rozšírenie TCP nazývané selektívne potvrdzovanie (selective acknowledgement, SACK) umožňuje prijímateľovi potvrdzovať bloky mimo poradia.

Použitím poradových a potvrdzovacích čísel je TCP schopné doručovať obdržané segmenty v správnom poradí v dátovom toku prijímajúcej aplikácii. Poradové čísla sú 32-bitové čísla bez znamienka, ktoré po dosiahnutí čísla 2 na 32-1 pokračujú znova od nuly.

16-bitový kontrolný súčet pozostávajúci z doplnkov do jednotky a sumy doplnkov do jednotky obsahu hlavičky TCP segmentu a dát vypočíta odosielateľ a zahrnie ho do prenosu.  TCP prijímač počíta súčet prijatej TCP hlavičky a dát. Doplnok bol použitý preto, aby prijímač nemusel nulovať súčtové pole po uložení hodnoty inde,  namiesto toho prijímač jednoducho vypočíta doplnok do jednotky na mieste kontrolného súčtu a výsledok by mal byť -0. Ak je to tak, segmet prišiel nedotknutý a bez chýb.

Podľa súčasných štandardov je kontrolný súčet pomerne slabou kontrolou. Spojové vrstvy s vysokou pravdepodobnosťou bitových chýb môžu požadovať dodatočné kontroly a opravy chýb. Ak by dnes bolo TCP znova navrhované, pravdepodobne by obsahovalo 32-bitovú cyklickú kontrolu redundancie (CRC, cyclic redundancy check) namiesto súčasného kontrolného súčtu. Slabá kontrola je čiastočne kompenzovaná bežným použitím CRC alebo inej kontroly na vrstve 2, pod TCP a IP, ako je použité v rámci PPP alebo Ethernetu. To však neznamená, že je kontrolný 16-bitový TCP súčet nadbytočný.

Ukončenie spojenia

Ukončenie spojenia sa deje za použitia 4-way handshake, kde sa spojenie ukončuje na každom konci nezávisle. Preto typické zrušenie spojenia vyžaduje pár segmentov FIN a ACK z každého konca TCP spojenia.

Záver

V priebehu rokov sa postupne zvyšovala rýchlosť sietí. Čo začalo ako protokol vyvinutý pre nespoľahlivé nízkorýchlostné siete (niekoľko Kbps) v súčasnosti musí stíhať Gbps rýchlosti. Softvérové TCP implementácie vyžadujú vysoký výpočtový výkon. Samotná gigabitová TCP komunikácia konzumuje 100% Pentium 2.4 mHz procesora.

Jedným zo spôsobov, ako predísť vysokým požiadavkám TCP na výpočtový výkon je implementovať ho hardvérovo, čo sa nazýva TCP Offload Engine (TOE). Hlavným problémom TOE je, že je ťažké ich integrovať do výpočtových systémov, keďže vyžadujú rozsiahle zmeny v operačnom systéme alebo zariadení. Lepším riešením sú Network Traffic Accelerators (NTA) alebo TCP akcelerátory. NTA sú hardvérové koprocesory, ktoré asistujú CPU v systéme pri spracovávaní paketov. NTA vo všeobecnosti nevyžadujú zmeny v operačnom systéme a je relatívne jednoduché ich implementovať.