TCP ir UDP: Pagrindiniai skirtumai ir tinklų veikimo principai

Kasdien naudodamiesi internetu, mes susiduriame su daugybe techninių terminų, tokių kaip IP adresas, DNS, HTTP, SSL/TLS, LAN, maršrutizavimas, protokolai, prievadai ir daugybė kitų. Šiame straipsnyje mes siekiame aiškiai, be perteklinio žargono, paaiškinti pagrindines sąvokas, susijusias su kompiuterių tinklais ir internetu, ypač gilindamiesi į du esminius transporto sluoksnio protokolus: TCP (Transmission Control Protocol) ir UDP (User Datagram Protocol). Šių protokolų supratimas yra būtinas, norint suvokti, kaip veikia internetas, kaip perduodami duomenys ir kodėl vieniems poreikiams geriau tinka vienas protokolas, o kitiems - kitas.

Įvadas: Tinklų pasaulio pagrindai

Norint suprasti, kaip veikia internetas ir kompiuterių tinklai, pravartu susipažinti su pagrindinėmis sąvokomis. Šis straipsnis pateikia išsamų, bet suprantamas techninių terminų gidas, skirtas plačiajai auditorijai. Mes paaiškinsime svarbiausias sąvokas, susijusias su kompiuterių tinklais ir internetu, vengdami perteklinio akademinio žargono. Sužinosite, kas yra tinklas, kaip veikia internetas, kuo ypatingi IP adresai ir domenų vardai, kaip vyksta duomenų perdavimo protokolai (pvz., TCP ir UDP), kuo skiriasi HTTP nuo HTTPS, kas užtikrina ryšio saugumą (pvz., SSL/TLS), kas yra LAN ir WAN, kaip veikia maršrutizatoriai, kas yra prievadų numeriai, ugniasienės, VPN ir kiti svarbūs dalykai. Straipsnis suskirstytas į aiškius skyrius, kad galėtumėte patogiai rasti dominančią temą ir nuosekliai gilintis į tinklų pasaulį.

Kompiuterių tinklo schema

Kas yra kompiuterių tinklas ir internetas?

Pagrindinės sąvokos

Kompiuterių tinklas - tai tarpusavyje sujungtų įrenginių grupė, kurioje įrenginiai gali keistis tarpusavyje duomenimis. Paprastai kalbant, jei sujungsite du ar daugiau kompiuterių (ar kitų išmaniųjų įrenginių) taip, kad jie galėtų komunikuoti vienas su kitu, jūs sukursite tinklą. Toks sujungimas gali būti realizuotas įvairiomis priemonėmis: laidais (pavyzdžiui, Ethernet kabeliais), belaidžiu ryšiu (pavyzdžiui, Wi-Fi, Bluetooth) ar net per telefono linijas naudojant modemus. Tinklo terpė - tai fizinė arba belaidė aplinka, per kurią sklinda signalai, nešantys duomenis. Pavyzdžiui, variniu kabeliu duomenys perduodami kaip elektros impulsai, optiniu - šviesos impulsais, o belaidžiuose tinkluose - radijo bangomis. Nepaisant skirtingų techninių sprendimų, visų tinklų paskirtis ta pati: užtikrinti, kad duomenys galėtų keliauti nuo vieno įrenginio prie kito.

Internetas - tai pasaulinis kompiuterių tinklų tinklas. Dažnai internetą vadiname „tinklų tinklu“ (angl. network of networks), nes jis jungia daugybę atskirų mažesnių tinklų į vieną globalią sistemą. Nė vienas žmogus ar organizacija visiškai nekontroliuoja viso interneto - jis grindžiamas atvirais standartais ir protokolais, leidžiančiais skirtingų tipų įrenginiams bei tinklams susikalbėti tarpusavyje. Per internetą informacija gali pasiekti bet kurį pasaulio kampelį vos per akimirkas, nes duomenys keliauja per daugybę tarpinių mazgų ir ryšio linijų.

Norint įsigilinti į interneto ir tinklų veikimą, naudinga susipažinti su sluoksnių samprata. Tinklų architektūroje duomenų perdavimas dažnai skirstomas į sluoksnius, kur kiekvienas sluoksnis atlieka tam tikrą funkciją: nuo fizinio (signalai kabeliu ar oru), kanalo/tinklo (adresavimas ir maršrutų parinkimas), transporto (patikimumas arba sparta) iki taikomųjų programų (naršyklės, el. paštas). Klasikinis modelis - OSI (7 sluoksniai), o praktiškai internete plačiai naudojamas TCP/IP modelis (supaprastinti 4 sluoksniai). Nors paprastam vartotojui nebūtina detaliai išmanyti visų sluoksnių, verta žinoti, kad tokia struktūra egzistuoja - ji padeda paaiškinti, kaip sudėtingos tinklo operacijos suskaidomos į mažesnes, lengviau valdomas dalis.

Apibendrinant, kompiuterių tinklas - tai sujungti įrenginiai, kurie gali dalytis informacija, o internetas - milžiniškas viso pasaulio tinklų junginys, leidžiantis mums bendrauti, dirbti ir pramogauti globaliu mastu. Toliau aptarsime konkrečius terminus ir komponentus, kurie užtikrina šio milžiniško tinklo veikimą.

Tinklų tipai: LAN, WAN ir kiti

Kompiuterių tinklai gali būti skirstomi pagal aprėpties dydį. Dažnai sutiksite terminus LAN ir WAN, nusakančius tinklo mastą.

LAN (Local Area Network, vietinis tinklas) - tai nedidelės geografinės aprėpties tinklas. LAN paprastai jungia įrenginius, esančius viename pastate ar ribotoje teritorijoje - pavyzdžiui, namų ūkio tinklas, biuro tinklas ar mokyklos kompiuterių klasė. Vietiniame tinkle įrenginiai gali dalytis failais, naudotis bendrais ištekliais (pvz., spausdintuvais, tinklo diskais) ir bendrauti tarpusavyje dideliu greičiu, nes atstumai nedideli. Vietinis belaidis tinklas dažnai žymimas WLAN - tai tiesiog LAN, naudojantis belaidį ryšį (dažniausiai Wi-Fi). Pavyzdžiui, jūsų namų Wi-Fi maršrutizatorius sukuria belaidį LAN tinklą, prie kurio jungiasi visi namų įrenginiai (telefonai, kompiuteriai, išmanūs televizoriai).

WAN (Wide Area Network, plataus masto tinklas) - tai didelę geografinę teritoriją apimantis tinklas. WAN jungia kelis vietinius tinklus ir gali driektis per miestus, šalis ar net žemynus. Geriausias pavyzdys - pats internetas, kuris iš esmės yra didžiulis viso pasaulio tinklus jungiantis WAN. Taip pat WAN gali būti ir privatus organizacijos tinklas, sujungiantis įmonės biurus skirtinguose miestuose. Plataus tinklo ryšys paprastai naudoja telekomunikacijų operatorių infrastruktūrą (optinius kabelius, palydovinį ryšį, povandeninius kabelius ir pan.), kad perduotų duomenis dideliais atstumais. WAN tinkluose duomenų perdavimas dažnai lėtesnis (dėl atstumų ir apkrovos) nei LAN, tačiau apima daug didesnę aprėptį.

Be LAN ir WAN, literatūroje pasitaiko ir kitų terminų tam tikriems tarpiniams ar specializuotiems tinklams apibūdinti: pavyzdžiui, MAN (Metropolitan Area Network) - metropoliteno tinklas, jungiantis vieno miesto ar regiono įstaigas; PAN (Personal Area Network) - asmeninis tinklas, apimantis labai nedidelį atstumą (pvz., įrenginių sujungimas aplink asmenį, naudojant Bluetooth); VPN (Virtual Private Network) - virtualus privatus tinklas, kurį aptarsime vėliau atskiroje saugumo dalyje. Tačiau LAN (lokalus) ir WAN (globalus) yra pagrindiniai tipai, padedantys suprasti tinklo apimtį.

Intranetas - privatus vidinis tinklas, dažniausiai priklausantis organizacijai, kuris naudoja tas pačias technologijas kaip ir internetas (pvz., tinklalapiai, el. paštas), tačiau yra uždaras pašaliniams. Tik tam tikri vartotojai (pvz., įmonės darbuotojai) gali prisijungti prie intraneto turinio. Tai tarsi mažas „internetas“ organizacijos viduje, skirtas vidinei komunikacijai. Intranetai paprastai būna LAN arba WAN dalis, tačiau izoliuoti ugniasienėmis ir kitomis saugumo priemonėmis.

Apibendrinant, vietinis tinklas (LAN) aprėpia nedidelę teritoriją ir pasižymi greitu ryšiu tarp netoliese esančių įrenginių, o platus tinklas (WAN) jungia tolimas vietoves ir leidžia komunikaciją dideliais atstumais. Internetas yra globalus WAN, jungiantis daugybę LAN ir kitų tinklų į vieną didelę visumą.

Tinklo įranga: Maršrutizatoriai, komutatoriai, modemai

Kad tinklai veiktų, reikalinga speciali techninė įranga. Pagrindiniai tinklo įrenginiai, su kuriais susiduria tiek paprasti naudotojai, tiek sistemų administratoriai, yra maršrutizatoriai, komutatoriai ir modemai. Kiekvienas jų atlieka skirtingą vaidmenį užtikrinant duomenų perdavimą tarp įrenginių.

Maršrutizatorius (taip pat - kelvedis; angl. router) - įrenginys, jungiantis skirtingus tinklus ir nukreipiantis duomenų paketus tinkama kryptimi. Paprastai maršrutizatorius turi kelis tinklo interfeisus (pvz., vieną jungtį interneto tiekėjui ir kelias jungtis vietiniam LAN). Jo pagrindinė užduotis - atlikti maršrutizavimą, t. y. parinkti tinkamiausią kelią duomenų paketams pasiekti paskirties tinklą. Maršrutizatorius palaiko tinklo lygmens protokolus (dažniausiai IP) ir turi vidinę maršrutų lentelę - tarsi žemėlapį, kuriame nurodyta, per kurį interfeisą pasiekti konkrečius adresus. Wi-Fi maršrutizatoriai viename įrenginyje dažnai derina kelias funkcijas: veikia kaip maršrutizatorius (jungia jūsų LAN su tiekėjo tinklu), kaip komutatorius (suteikia kelias laidines LAN jungtis) ir kaip belaidžio ryšio prieigos taškas (skleidžia Wi-Fi). Pažangesni maršrutizatoriai gali atlikti ir ugniasienės, NAT (Network Address Translation) bei kitas funkcijas.

Komutatorius (angl. switch) - įrenginys, skirtas sujungti daugelį įrenginių viename vietiniame tinkle. Komutatorius veikia daugiausia antrojo (kanalo) OSI sluoksnio pagrindu: jis persiunčia duomenų rėmelius pagal MAC adresus. Kiekvienas komutatoriaus prievadas paprastai sujungiamas su atskiru įrenginiu (kompiuteriu, spausdintuvu ir pan.), o komutatorius pasirūpina, kad duomenų paketai būtų perduoti būtent tam įrenginiui, kuriam jie skirti (skirtingai nei ankstyvieji „hub“ tipo šakotuvai, siuntę visiems).

Modemas - įrenginys, moduliuojantis ir demoduliuojantis signalą, kad duomenis būtų galima perduoti tam tikru ryšio kanalu. Šiandien modemų sąvoka apima DSL, kabelinius, šviesolaidinius (ONT) ir mobiliojo ryšio (4G/5G) modemus. Modernūs namų maršrutizatoriai dažnai turi integruotą modemo funkciją, tad atskiro įrenginio nereikia. Modemai „suderina kalbą“ tarp jūsų namų tinklo ir interneto tiekėjo infrastruktūros.

IP adresai: Skaitmeniniai tinklo adresai

Vienas svarbiausių interneto ir tinklų veikimo elementų - IP adresas. IP (Internet Protocol) adresas - tai skaitmeninis identifikatorius, unikaliai žymintis įrenginį tinkle. Kiekvienas paketas pažymimas siuntėjo ir gavėjo IP adresais, o maršrutizatoriai pagal juos sprendžia, kur toliau siųsti paketą.

  • IPv4 ir IPv6: IPv4 - 32 bitų adresavimo schema, įprastai rašoma keturiomis dešimtainėmis grupėmis (pvz., 192.168.0.10). Dėl augančio interneto IPv4 adresų ėmė stigti, todėl pereinama prie IPv6 - 128 bitų adresavimo (rašoma šešioliktainėmis grupėmis, pvz., 2001:db8::/64), suteikiančio beveik neišsemiamą adresų erdvę ir kitų patobulinimų.
  • Privatūs ir viešieji IP adresai: IPv4 erdvėje dalis adresų rezervuota vidaus tinklams (pvz., 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). Tokie adresai internete nemaršrutuojami - prie interneto jungiasi maršrutizatorius su viešuoju IP, atlikdamas NAT (vidinių adresų „vertimą“ į vieną ar kelis viešuosius). Tai taupo adresus ir suteikia papildomą apsaugos sluoksnį.
  • Statiniai ir dinaminiai IP adresai: Viešieji IP gali būti pastovūs (statiniai) arba laikini (dinaminiai). Statiniai tinka serveriams ir kameroms (visada tas pats adresas), dinaminiai paprastai skiriami namų vartotojams (keičiami po persijungimo ar tam tikru periodu).
  • MAC adresas: Be IP, tinkluose svarbus MAC (Media Access Control) adresas - aparatinis tinklo įrenginio identifikatorius (48 bitai, pvz., 00:1A:2B:3C:4D:5E). MAC naudojamas vietinio tinklo lygmeniu (komutatoriuje), o globaliam maršrutizavimui naudojami IP adresai.

Santrauka apie IP: IP - unikalus „adresas“ tinkle; IPv4 - 32 bitai, IPv6 - 128 bitų; privačių/viešųjų adresų bei NAT mechanizmai leidžia internetui veikti globaliai ir efektyviai.

Domenų vardai ir DNS: Interneto „adresų knyga“

Nors kompiuteriai internete vieni kitus atpažįsta pagal skaitinius IP adresus, žmonėms juos įsiminti nepatogu. Todėl sukurta domenų vardų sistema - DNS (Domain Name System), kuri savotiškai „išverčia“ žmonėms patogius vardus (pvz., delfi.lt) į IP adresus. DNS yra hierarchinė, paskirstyta sistema su šakniniais, aukščiausio lygio (TLD) ir autoritetingais vardų serveriais; naršyklė pirmiausia klausia rezolverio (dažnai - tiekėjo ar viešo DNS), o šis prireikus paklausomis „pakyla“ per hierarchiją iki autoritetingo serverio, grąžinančio IP.

DNS pateikia ne tik A/AAAA įrašus (IP), bet ir MX (pašto serveriams), CNAME (aliasams), TXT (patvirtinimams, SPF/DMARC politikoms), NS (vardų serveriams) ir kt. Šiuolaikinės sistemos papildomai gali naudoti šifruotas DNS užklausas (DoH/DoT), mažinančias riziką užklausų perėmimui ar nukreipimui.

Domenų vardų struktūra: Domenai skaitomi iš dešinės į kairę hierarchine tvarka: TLD (pvz., .lt, .com), antro lygio domenas (pvz., vu.lt), galiausiai - subdomenai (pvz., naujienos.delfi.lt). Domenai registruojami atitinkamose registrų organizacijose (Lietuvoje - .lt domenus administruoja KTU Domreg).

Tinklo protokolai: Bendravimo taisyklės

Tam, kad skirtingi įrenginiai tarpusavyje suprastų vienas kitą perduodami duomenis, egzistuoja tinklo protokolai - susitarimų ir taisyklių rinkiniai, apibrėžiantys duomenų mainų formatą bei procedūras.

IP (Internet Protocol) - atsakingas už adresavimą ir paketų maršrutų parinkimą tinklo lygmenyje (paketų antraštės, fragmentavimas).

TCP (Transmission Control Protocol) - transporto lygmens protokolas, suteikiantis patikimą, nuoseklų duomenų srautą (trijų žingsnių „rankos paspaudimas“, pakartotiniai perdavimai, srauto/spūsčių valdymas).

UDP (User Datagram Protocol) - alternatyva TCP: nejungtinis, be patvirtinimų; todėl greitesnis ir tinkamas realaus laiko srautams (transliacijoms, žaidimams, DNS užklausoms), kur laikas svarbesnis už tobulo tikslumo garantijas.

Apibendrinant TCP vs UDP: TCP - patikimumas ir tvarka; UDP - mažesnė delsa ir režijos sąnaudos. Taip pat egzistuoja šiuolaikiniai sprendimai, pvz., QUIC (virš UDP) bei HTTP/3.

TCP ir UDP: Detalus palyginimas

Perdavimo valdymo protokolas (TCP) ir vartotojo duomenų gramų protokolas (UDP) yra du pagrindiniai kompiuterių tinklo protokolai, veikiantys interneto protokolų rinkinio transportavimo lygmenyje. Jų pagrindinis skirtumas slypi patikimumo ir greičio pusiausvyroje.

TCP: Patikimumas ir ryšys

TCP yra į ryšį orientuotas protokolas. Prieš perduodant duomenis, jis užmezga ryšį tarp siuntėjo ir gavėjo. Šis ryšys yra virtuali grandinė, užtikrinanti patikimą duomenų perdavimą. TCP garantuoja nuoseklų ir be klaidų duomenų paketų pristatymą naudojant tokius mechanizmus kaip:

  • Patvirtinimo mechanizmas: Gavėjas patvirtina sėkmingą duomenų paketų gavimą. Jei siuntėjas negauna patvirtinimo per nurodytą laikotarpį, jis pakartotinai persiunčia duomenų paketą. Tai užtikrina, kad duomenys bus pristatyti.
  • Sekos nustatymas: Kiekvienas duomenų segmentas yra numeruojamas, siekiant užtikrinti, kad jie būtų pateikti teisinga tvarka gavėjo gale. Jei trūksta kokių nors segmentų, TCP prašo pakartotinai perduoti tuos konkrečius segmentus, kad išlaikytų duomenų nuoseklų vientisumą.
  • Kontrolinės sumos: Duomenų paketų vientisumas tikrinamas, apskaičiuojant kontrolinės sumos reikšmes abiejuose galuose.
  • Srauto valdymas: TCP įgyvendina srauto valdymo mechanizmus, kad valdytų duomenų perdavimo spartą tarp siuntėjo ir gavėjo, taip pat perkrovos valdymą.

Kai siuntėjas perduoda duomenis per TCP, jis laukia, kol gavėjas patvirtins, prieš siųsdamas daugiau duomenų. Jei siuntimo metu kuris nors paketas prarandamas arba sugadinamas, TCP pakartotinai perduos prarastą paketą, kol jis bus sėkmingai pristatytas. Dėl šio patikimumo TCP tinka programoms, kurioms reikalingas tikslus ir išsamus duomenų pateikimas, pvz., naršyti internete, el. paštas, failų perkėlimas. Į ryšį orientuotas TCP pobūdis užtikrina, kad duomenys būtų patikimai pateikiami teisinga tvarka, todėl jis tinkamas programoms, kurios teikia pirmenybę tikslumui ir išsamumui, o ne greičiui. TCP yra patikimas protokolas, užtikrinantis tikslų duomenų pristatymą naudojant į ryšį orientuotą metodą.

TCP ir trišalio rankos paspaudimo paaiškinimas. Tolesnė laboratorija.

UDP: Greitis ir paprastumas

Kita vertus, UDP yra be ryšio protokolas. Jis nepateikia integruotų klaidų valdymo mechanizmų, tokių kaip TCP. UDP negarantuoja patikimo duomenų pristatymo, sekos nustatymo ar duomenų paketų patvirtinimo. Kiekvieną duomenų paketą jis traktuoja kaip nepriklausomą vienetą ir negarantuoja paketų pristatymo ar užsakymo. Jei nėra klaidų apdorojimo mechanizmų, tokių kaip TCP, UDP naudojančios programos yra atsakingos už klaidų aptikimo ir taisymo mechanizmų įgyvendinimą, jei duomenų patikimumas yra būtinas.

UDP yra geriausias protokolas, užtikrinantis minimalų klaidų tikrinimą ir be pakartotinio perdavimo, srauto valdymo ar perkrovos valdymo mechanizmų. Jis naudojamas programose, kuriose duomenų perdavimas realiuoju laiku yra svarbesnis nei patikimumas, pvz., srautinė medija, internetiniai žaidimai, VoIP ir DNS. UDP yra greitesnis protokolas, kuris dėl savo be ryšio pobūdžio paaukoja patikimumą dėl mažesnio delsos.

UDP naudojančios programos yra atsakingos už klaidų aptikimo ir taisymo mechanizmų įgyvendinimą, jei duomenų patikimumas yra būtinas. Nors UDP nesiūlo sekos numeravimo funkcijos, programos, naudojančios UDP, pavyzdžiui, VoIP, dažnai naudoja kitus protokolus, tokius kaip RTP (Real-time Transport Protocol), kurie užtikrina duomenų sekos išlaikymą.

TCP ir UDP palyginimas trumpai:

SavybėTCP (Transmission Control Protocol)UDP (User Datagram Protocol)
Ryšio tipasĮ ryšį orientuotas (Connection-oriented)Be ryšio (Connectionless)
PatikimumasAukštas (patvirtinimai, pakartotiniai perdavimai, srauto valdymas)Žemas (nėra garantijų dėl pristatymo ar tvarkos)
GreitisLėtesnis (dėl patikimumo mechanizmų)Greitesnis (minimali režijos sąnauda)
Režijos sąnaudosDidelės (dėl papildomų mechanizmų)Mažos
Sekos nustatymasTaipNe
Klaidų taisymasTaip (pakartotiniai perdavimai)Ne (programinės įrangos atsakomybė)
Naudojimo atvejaiNaršymas internete, el. paštas, failų perkėlimas, duomenų bazėsVaizdo ir garso transliacijos, internetiniai žaidimai, DNS, VoIP

Internetinių paslaugų protokolai: Nuo HTTP iki el. pašto

Taikomųjų programų lygmens protokolai - tai konkretų funkcionalumą suteikiančios „taisyklių knygos“. Kai naršote tinklalapį, siunčiate el. laišką ar dalijatės failais, programos bendrauja naudodamos atitinkamus protokolus.

HTTP protokolas (žiniatinklis)

HTTP (HyperText Transfer Protocol) - užklausos-atsako protokolas tarp kliento (naršyklės) ir serverio. Naršyklė atidaro ryšį (dažniausiai TCP), pateikia užklausą (GET, POST ir kt.), o serveris grąžina atsakymą su statuso kodu (pvz., 200, 404), antraštėmis ir turiniu. Evoliuodamos versijos (HTTP/1.1 → HTTP/2 → HTTP/3) ženkliai padidino efektyvumą (daugiaskanalis perdavimas, antraščių glaudinimas, mažesnė delsa per QUIC).

HTTP protokolas yra pagrįstas užklausos/atsakymo modeliu. Pirma, klientas užmezga TCP ryšį su serveriu ir siunčia serveriui užklausą, kurioje yra užklausos metodas, URI, protokolo versija ir susiję MIME stiliaus pranešimai. HTTP/1.1 sukuria naują TCP ryšį kiekvienai HTTP užklausai / atsakymui, todėl puslapis, kuriame yra HTML turinio ir paveikslėlių, turės užmegzti kelis trumpalaikius TCP ryšius. Be to, norint gauti reikiamą perdavimo greitį, TCP turi skirti papildomo ryšio į abi puses laiko (RTT). Kiekvienos nuorodos sukūrimas reikalauja tokių reguliarių pridėtinių išlaidų ir neperduoda realių naudingų duomenų, o tik užtikrina nuorodos patikimumą. Todėl HTTP/1.1 siūlo tvarų nuorodų diegimo metodą.

HTTPS ir SSL/TLS: Saugus žiniatinklio ryšys

HTTPS - tai HTTP ryšys, vykdomas šifruotu TLS kanalu (istorinis pavadinimas „SSL“ vis dar plačiai vartojamas). Naudojant HTTPS, tarp naršyklės ir serverio atliekamas TLS „rankos paspaudimas“, serveris pateikia sertifikatą, susitariama dėl raktų, o tolesnis srautas šifruojamas (paprastai - simetriniu šifru). HTTPS pagal nutylėjimą naudoja 443 prievadą, o HTTP - 80. Naršyklės žymi nesaugų HTTP ir skatina naudoti HTTPS net ir paprastoms svetainėms.

Kuo skiriasi HTTP ir HTTPS?

  • HTTP perduoda duomenis atviru tekstu, o HTTPS - šifruotai (TLS); todėl HTTPS užtikrina konfidencialumą ir duomenų vientisumą.
  • HTTP pagal nutylėjimą naudoja 80 prievadą, HTTPS - 443; naršyklės šių numerių paprastai nerodo, bet naudoja automatiškai.
  • HTTPS reikalauja galiojančio sertifikato, patvirtinančio serverio tapatybę; gauti sertifikatą šiandien paprasta (pvz., Let’s Encrypt ar komerciniai CA).

Be HTTP/HTTPS, dažni ir kiti taikomieji protokolai: FTP/SFTP (failų perdavimui), el. paštas (SMTP - išsiuntimui; POP3/IMAP - gavimui), SSH (saugiam nuotoliniam prisijungimui), WebSocket (realiojo laiko mainams virš HTTP), DNS (vardo → IP). Dauguma jų remiasi TCP arba UDP, o prieinamumą įprastai lemia prievadai (žr. toliau).

Socket: Programinės įrangos sąsaja

Socket yra tarpinis programinės įrangos abstrakcijos sluoksnis, skirtas bendrauti tarp taikomųjų programų sluoksnio ir TCP/IP protokolų šeimos, ir tai yra sąsajų rinkinys. Projektavimo režimu Socket iš tikrųjų yra fasadinis režimas, kuris slepia sudėtingą TCP/IP protokolų šeimą už Socket sąsajos.

Prievadai ir ugniasienės

Jei konfigūruojate užkardą ar panašią prieigos kontrolės schemą, prievadų stebėjimo programinė įranga gali padėti jums nuspręsti, kaip tai padaryti. Atminkite, kad kai kuriuose produktuose gali būti naudojami skirtingi prievadai ir paslaugos, įskaitant čia nedokumentuotus prievadus ir paslaugas. Kai kurios paslaugos, pvz., VPN, gali naudoti kelis prievadus. Jei užkardoje nenurodytas prievado tipas, tikriausiai konfigūruojamas tas prievadas tiek TCP, tiek UDP.

TCP ir UDP prievadai yra skirtingi, bet kartais jie gali naudoti tą patį prievado numerį. Pavyzdžiui, UDP/53 ir TCP/53 abu naudojami DNS, tačiau tai yra skirtingi ryšio tipai.

TCP ir UDP saugumas ir pažeidžiamumas

Nors TCP ir UDP yra esminiai tinklo protokolai, jie nebuvo sukurti su stipriu saugumo dizainu. Šie protokolai gali būti pažeidžiami įvairioms atakoms:

  • Paketų snifinimas: Nešifruotas IP ryšys leidžia kibernetiniams nusikaltėliams skaityti TCP segmentų ir UDP datagramų laukus, o tai gali būti panaudota atakoms.
  • Flood atakos: Tiek TCP, tiek UDP yra pažeidžiami potvynio atakoms. TCP SYN flood atakoje atakuojantis asmuo siunčia daugybę SYN pranešimų į atvirą TCP prievadą, perkraunant sistemą. UDP flood atakoje siunčiami datagramai į atvirus prievadus, sukeliant didelį kiekį ICMP atsakymų.
  • IP spoofing: Hakeriai gali apžiūrėti TCP segmentus ir gauti pakankamai informacijos, kad sukurtų suklastotus segmentus, kuriais galėtų siųsti komandas gavėjui. Nors sekos numerių generavimas turėtų užkirsti kelią tokioms atakoms, kai kuriuose TCP/IP kamienuose naudojami nuspėjami atsitiktinių skaičių generatoriai, todėl jų ryšiai tampa pažeidžiami.

TCP ir UDP naudojimo optimalumas

Kai svarstote, kurį protokolą naudoti - TCP ar UDP - turite atsižvelgti į savo prioritetus:

  • Duomenų vientisumo svarba: Jei duomenų vientisumas yra jūsų prioritetas, TCP visada bus geriausias pasirinkimas. Jis garantuoja pilną pristatymą ir tikslų originalių duomenų atstatymą. Programos, kurios perduoda didelius duomenų failus, dažniausiai naudoja TCP, nes protokolo delsa ir našumo problemos nėra kritinės.
  • Vėlavimo (latency) svarba: UDP suteikia pranašumą programoms, kurioms reikia greitai gauti duomenis, net jei dėl to nukenčia tikslumas. Būtent todėl realaus laiko programos, kaip audio ir vaizdo transliacijos, dažnai naudoja UDP.
  • Imančiųjų galimybių našumas: TCP yra labiau resursų reikalaujantis protokolas nei UDP.
  • Gavėjų skaičius: TCP gali perduoti duomenis tik iš vieno taško į kitą. UDP, dėl savo be ryšio pobūdžio, leidžia jį naudoti daugiasklaidai (multicasting) ar transliacijai (broadcasting) į kelis gavėjus.

Lengvas būdas suprasti skirtumą yra palyginti vaizdo įrašų platinimo būdus. Atsisiunčiant filmus, medijos programėlė naudotų TCP. Prioritetas čia yra tiksliai pristatyti failą, kad būtų užtikrintas teisingas atkūrimas. Tačiau transliuojant vaizdo įrašą, tikslumas yra mažiau svarbus nei tęstinumas. UDP užtikrina, kad duomenys pasiektų transliuotoją greitai. Medijos programėlė naudoja klaidų taisymą, kad tvarkytų trūkstamus duomenis.

TCP ir UDP praktiniame pritaikyme

  • Naršymas internete, el. paštas, failų perkėlimas: Šioms veikloms reikalingas aukštas patikimumas, todėl jos naudoja TCP. Kiekvienas bitas turi būti teisingas, o duomenų tvarka - išlaikyta.
  • Vaizdo ir garso transliacijos (streaming), internetiniai žaidimai, VoIP: Šioms programoms svarbiausia yra maža delsa ir nuolatinis duomenų srautas. Jei keli paketai prarandami, tai gali sukelti trumpalaikius trikdžius, tačiau tai geriau nei laukti, kol bus pakartotinai persiųsti prarasti paketai, kas sukeltų pastebimus vėlavimus. Šiose srityse dažnai naudojamas UDP, kartais kartu su papildomais protokolais, kaip RTP, siekiant užtikrinti seką.
  • DNS (Domain Name System): DNS užklausos yra trumpalaikės ir reikalauja greito atsakymo. Nors DNS gali naudoti TCP, dažniausiai jis naudoja UDP, nes greitis yra svarbesnis nei visiškas patikimumas kiekvienai atskirai užklausai.

Išvada

TCP ir UDP yra du esminiai transporto sluoksnio protokolai, kiekvienas turintis savo stipriąsias ir silpnąsias puses. TCP užtikrina patikimą ir tvarkingą duomenų perdavimą, todėl idealiai tinka programoms, kurioms reikalingas didelis tikslumas. UDP, kita vertus, yra greitesnis ir turi mažesnes režijos sąnaudas, todėl yra tinkamas programoms, kurioms svarbiausia minimali delsa ir realaus laiko perdavimas. Dažnai programos naudoja abu protokolus skirtingoms funkcijoms atlikti, priklausomai nuo konkretaus poreikio. Suprasti šių protokolų skirtumus ir panaudojimo atvejus yra svarbu kiekvienam, norinčiam geriau suprasti, kaip veikia šiuolaikinis internetas.

tags: #tcp #ir #udp #skirtumai