Mikä on TCP ja UDP? Yksinkertainen selitys

Internet perustuu kahteen protokollaan tiedonvaihtoon tietokoneiden välillä. Nämä viestintäprotokollat määrittelevät säännöt, jotka määrittävät, miten datansiirto tapahtuu minkä tahansa kahden osapuolen välillä, olipa kyseessä kahdenkeskinen tai yksi-moneen -viestintä. Transmission Control Protocol (TCP) ja User Datagram Protocol (UDP) ovat kaksi protokollaa, joita voit käyttää siirtämään tietoa verkkojen läpi. Molemmat toimivat OSI-mallin kuljetuskerroksessa.

Samankaltaisia, mutta silti erilaisia, nämä kaksi protokollaa suorittavat tehtävänsä tehokkaasti. Toisin kuin toinen, joka on yhteyskeskeinen ja vaatii yhteyden muodostamisen ennen datan siirron aloittamista, toinen on yhteysvapaa ja lähettää dataa ilmoittamatta ensin kohdelaitteelle. Protokollien toiminnassa on enemmänkin, kuten alla selviää. Tämä artikkeli keskittyy TCP:hen ja UDP:hen — miten ne toimivat, niiden edut, haitat ja erot.

## Mikä on TCP?

Transmission Control Protocol on kommunikaatioprotokolla, joka käsittelee pääasiassa datapakettien siirtoa internetissä. Se toimii avoimen järjestelmien yhteysmallin (OSI) kuljetuskerroksessa (kerros 4). Tämä protokolla auttaa siirtämään datapaketteja asiakaslaitteen/-sovelluksen ja palvelimen välillä (yhdessä UDP:n kanssa).

TCP on yhteyskeskeinen, mikä tarkoittaa, että asiakkaan ja palvelimen on muodostettava yhteys ennen kuin tietoja voidaan lähettää mihinkään suuntaan. Lisäksi se on luotettava protokolla, koska se tarkistaa virheet ja varmistaa, että datapaketit saapuvat määränpäähänsä siinä järjestyksessä, kuin lähettävä laite tai sovellus tarkoitti.

## Miten TCP toimii?

Kun käytetään TCP:tä, asiakas ja palvelin muodostavat yhteyden käyttäen niin kutsuttua kolmivaiheista kättelyä ennen kuin kaksisuuntainen datapakettien siirto alkaa. Ennen kolmivaiheisen kättelyn alkamista palvelimen on kuunneltava portissa hyväksyäkseen yhteyden. Kättely alkaa kolmen viestin (tai lipun) vaihdolla, jotka tunnetaan nimillä SYN, SYN/ACK ja ACK asiakkaan ja palvelimen välillä.

Katsotaanpa vaiheittainen prosessi vaihdosta alla. 

1. Asiakas lähettää SYN-datapaketin palvelimelle. SYN-paketti sisältää satunnaisen sekvenssinumeron (X), jonka asiakas määrittää. Tämän paketin tarkoitus on nähdä, onko palvelin saatavilla uutta yhteyttä varten. 

2. Palvelin vastaanottaa SYN-paketin ja kuittaa sen lähettämällä SYN/ACK-paketin. Palvelin asettaa kuittausnumeron yhden suuremmaksi kuin sekvenssinumeron (1+X), jonka asiakas määritti alkuperäiseen SYN-pakettiin, ja asettaa toisen satunnaisen sekvenssinumeron (Y). Joten palvelin lähettää kaksi sekvenssinumeroa SYN/ACK-paketissaan asiakkaalle.

3. Asiakas vastaanottaa SYN/ACK-paketin palvelimelta ja kuittaa sen lähettämällä ACK-paketin. Asiakas asettaa kuittausnumeron yhden suuremmaksi kuin sekvenssinumeron (1+Y), jonka se sai palvelimelta. 

Kun kolmivaiheinen kättelyprosessi on saatu päätökseen, asiakas ja palvelin voivat lähettää ja vastaanottaa tietoja toisiltaan.

## TCP:n edut ja haitat

Kuten useimmat protokollat, myös TCP ei ole virheetön; sillä on etunsa ja haittansa. Katsotaanpa alla TCP:n käytön hyviä ja huonoja puolia.

## Edut

1. Luotettava

TCP on luotettava, koska se varmistaa, että datapaketit saapuvat määränpäähänsä oikeassa järjestyksessä. Kun TCP lähettää datasegmentin, se käynnistää ajastimen ja odottaa kuittausta kohteesta. Se lähettää segmentin uudelleen, jos se ei saa kuittausta. Lisäksi se käyttää sekvensointia tietääkseen, kun datapaketit saapuvat väärässä järjestyksessä.

2. Virheen havaitseminen ja korjaaminen

TCP käyttää päästä päähän -tarkistussummaa tarkistaakseen mahdolliset muutokset paketeissa, kun ne saapuvat määränpäähänsä. Se hylkää virheelliset paketit ja odottaa lähettäjän lähettävän ne uudelleen. Lisäksi se hylkää myös datan kaksoiskappaleet.

3. Ruuhkien hallinta

TCP käyttää puskurointia ja ikkunointia ruuhkien hallintaan. Ruuhkat voivat tapahtua, kun TCP-yhteyden vastaanottopää saa liikaa datapaketteja kerralla käsiteltäväksi. TCP käyttää puskureita ruuhkien hallintaan, mutta kun puskurit täyttyvät, se käyttää ikkunointia vähentämään lähetettävän datan määrää kerralla.

## Haitat

1. Hidas nopeus

UDP:hen verrattuna TCP on hidas. Ensinnäkin tarvittava kolmivaiheinen kättely vie aikaa. Sitten on nopeuden vähentyminen, jonka virtauksen hallinta, ruuhkautumisen hallinta ja virheentarkistus aiheuttavat datansiirron aikana. Tällaisissa tapauksissa TCP uhraa nopeuden luotettavuuden vuoksi.

2. Haavoittuvainen DoS-hyökkäyksille

TCP:n kolmivaiheinen kättely tekee siitä haavoittuvaisen DoS- tai DDoS-hyökkäyksille. SYN-tulva on yksi tällainen hyökkäys, jossa pahantahtoinen taho tekee palvelimen käyttökelvottomaksi tulvittamalla sen SYN-paketeilla. Tämän hyökkäyksen tavoitteena on saada palvelin ylikuormittumaan, estäen sen vastaamasta aitoihin pyyntöihin. 

## Mikä on UDP?

User Datagram Protocol (UDP) on kommunikaatioprotokolla kuten TCP, joka toimii OSI-mallin kuljetuskerroksessa. Toisin kuin TCP, se on yhteysvapaa protokolla, mikä tarkoittaa, että asiakkaan ei tarvitse muodostaa yhteyttä palvelimeen ennen datan pakettien lähettämistä. Tämän seurauksena ei ole kolmivaiheista kättelyä, virtauksensäätöä eikä sekvensointia. 

UDP ei välitä, saapuvatko lähetetyt datagrammit määränpäähänsä tai saapuvatko ne siinä järjestyksessä, jossa asiakas ne lähetti. Tämä tekee siitä vähemmän luotettavan kuin TCP:n, mutta nopeamman, koska sen ei tarvitse odottaa kuittauksia tai lähettää tietoja uudelleen. UDP kuitenkin välittää datan eheydestä ja käyttää tarkistussummaa varmistaakseen, ettei kolmas osapuoli ole muokannut datagrammeja. 

## Miten UDP toimii?

UDP:n avulla datagrammien siirtäminen niiden lähteestä määränpäähän on helppo prosessi. Lisättyään oman otsikkonsa verkkokerrokselta saamiinsa IP-paketteihin, se lähettää datagrammit suoraan kohdepalvelimelle tarvitsematta ensin muodostaa yhteyttä. Juuri tämän prosessin yksinkertainen luonne tekee UDP:stä yhteysprotokollan.

Lisäksi UDP on ihanteellinen aikaherkkään viestintään, jossa datan häviäminen siirron aikana on hyväksyttävää. Esimerkiksi ääni- ja videoviestintä käyttää UDP:tä. 

## UDP:n edut ja haitat

UDP:n virtauksensäädön ja datan uudelleenlähetysten puute on sekä etu että haitta. Alla tarkastelemme UDP:n käytön hyviä ja huonoja puolia.

## Edut

1. Nopea datansiirto

Koska UDP:n ei tarvitse vahvistaa datagrammeja ennen kuin kohdetietokone voi vastaanottaa lisää eikä se lähetä dataa uudelleen, se on nopeampi kuin TCP. Lisäksi kolmivaiheisen kättelyn puuttuminen johtaa vähäisempään ylikuormitukseen ja nopeampiin datansiirtoihin.

2. Virheen havaitseminen

Kuten TCP, myös UDP käyttää päästä päähän -tarkistussummaa havaitakseen, onko datagrammeissa virheitä. Näin se ylläpitää datan eheyttä ja hylkää virheelliset datagrammit. Koska uudelleenlähetysmekanismia ei ole, UDP ei palauta tai lähetä uudelleen hylkäämiään datagrammeja.

## Haitat

1. Epäluotettava

Ominaisuudet, jotka tekevät yhteydestä luotettavan, puuttuvat UDP-yhteyksistä. Toisin kuin TCP, UDP ei takaa, että lähetetyt datagrammit saavuttavat määränpäänsä. Tämän seurauksena datagrammeilla ei ole ajastinta eikä niitä tarvitse vahvistaa vastaanottavalla laitteella. Lisäksi ei ole takeita siitä, että datagrammit saapuvat määränpäähänsä oikeassa järjestyksessä. 

2. Ei ruuhkanhallintaa

UDP:llä ei ole mekanismia ruuhkautumisen hallintaan. Koska se ei vahvista datagrammeja tai käytä ikkunointia datan siirron hallitsemiseksi, ei ole keinoa estää ruuhkautumista. Tämän seurauksena suuret datan purkaukset voivat aiheuttaa ruuhkautumisia.

## Eroja TCP:n ja UDP:n välillä

Alla tarkastelemme yhteyssuuntautuneen TCP:n ja yhteydettömän UDP:n eroja.

1. Luotettavuus

TCP on luotettavampi protokolla verrattuna UDP:hen. TCP varmistaa, että datasegmentti saavuttaa määränpäänsä ennen kuin lähettää toisen. Lisäksi se varmistaa, että segmentit saapuvat samassa järjestyksessä kuin ne lähetettiin ja lähettää uudelleen tiedot, jotka eivät pääse määränpäähänsä. Lisäksi TCP käyttää virtauksensäätöä varmistaakseen, että asiakas ei lähetä paketteja nopeammin kuin palvelin pystyy käsittelemään niitä. Päinvastoin, UDP ei tee mitään edellä mainituista ja välittää enemmän tiedon siirtämisestä niin nopeasti kuin mahdollista.

2. Nopeus

TCP:n luotettavuuden takaavat ominaisuudet tekevät siitä hitaamman kuin TCP. Kolmivaiheinen kättely, virtauksensäätö, ruuhkautumisenhallinta ja uudelleenlähetysmekanismi eivät kuulu UDP:hen. Tämän seurauksena, vähemmän ylikuormituksen vuoksi, UDP on nopeampi kuin TCP.

3. Käyttö

TCP:n yhteyskeskeinen tiedonsiirto tekee siitä sopivan sovelluksille, jotka vaativat luotettavuutta ja eivät voi hyväksyä datan katoamista. Esimerkiksi se tukee protokollia, kuten HTTP, SSH, FTP, SMTP ja IMAP. Toisaalta UDP:n nopeus tekee siitä sopivan aikaan sidotuille sovelluksille tai protokollille, jotka voivat hyväksyä datan menetyksen, kuten live-video- tai äänichatit, Voice over IP, DNS-pyynnöt ja online-pelaaminen.

## Yhteenveto

TCP ja UDP ovat internetin kommunikaation perusta. Ilman näitä kahta protokollaa laitteiden, jotka ovat yhteydessä internetiin, olisi vaikea kommunikoida keskenään. TCP on protokolla, johon turvaudutaan, kun tarvitaan luotettavuutta ja tarkkuutta. Toisaalta, UDP on protokolla, jota tarvitset, jos et ole niin huolissasi datan pakettien häviämisestä ja haluat niiden saapuvan määränpäähänsä nopeasti.