Risto Partanen
Internet-Protokolla on ehkäpä kaikkein tärkein protokolla, koska kaikki muut protokollat hyödyntävät sitä. IP-protokolla ei luo varsinaista yhteyttä kahden laitteen välillä, joten sitä kutsutaan yhteydettömäksi protokollaksi. Yhteydetön protokolla tarkoittaa, että IP-protokolla ei huolehdi siitä onko paketti varmasti on saapunut pisteestä A pisteeseen B? Tietyissä tilanteissa IP-protokolla "hyödyntää" myös ICMP protokollaa, mutta nämä ovat lähinnä tapauksia joissa IP paketin siirrossa on tapahtunut jokin virhe ja siitä pitää saada tieto lähettäjälle. Lähinnä tiedottamisen tekevät verkossa IP-pakettien kuljetuksesta vastaavat aktiivilaitteet.
Kuvassa näkyy IP-protokollan paketti, jossa tärkeimmät (ohjelmoijan/ohjelman kannalta) kentät ovat "Source IP Address" ja "Destination IP Address".
Käytännössä siis kaikki muut protokollat jotka "keskustelevat" verkon välityksellä tukeutuvat IP-protokollaan! Ohjelmoijalle tärkeää on tietää että mistä koneesta ja mihin koneeseen paketti on menossa, eli mikä on kohdekoneen osoite? Kaikki tämä tieto (lähettävän ja vastaanottavan koneen osoite) on mukana IP-protokollan mukaisessa IP-paketissa, kuten ensimmäisen sivun kuvasta voidaan päätellä. Oikeastaan, tästä tiedosta ohjelmalta ei tule kuin sen kohdekoneen osoite, koska alustakoneen tiedot täytetään pakettia luodessa. Joten ohjelman tarvitsee siis vähintään tietää että mihin IP-osoitteeseen tuo kyseinen datapaketti halutaan lähettää (määritellään koodissa).
TCP-protokollan tehtävänä on huolehtia että yhteys on varmasti luotettava ja että yksikään siirretty bitti kahden laitteen välillä ei häviä. TCP-protokolla luo yhteyden kahden koneen välille ja on siis yhteydellinen protokolla. Yhteydellisyys tarkoittaa, että TCP-protokolla huolehtii yhteden ensin pystyyn ja huolehtii myös siitä että yhtään bittiä ei häviä yhteyden aikana. Yhteyden muodostaminen tapahtuu hyödyntäen ns. kolmivaiheista kättelyä, josta on kuva alla:
Tärkein ominaisuus TCP-protokollassa on yhteyden luonnin lisäksi, myös pakettien häviämättömyydestä huolehtiminen johon kättely antaa aloituksen.
Kun sovellus haluaa lähettää dataa hyödyntämällä TCP-protokollaa, määritellään silloin sovelluksessa lähettävä ja vastaanottava portti. Toisin kuin IP-protokollassa, TCP-protkollassa ei siis määritetä kohdekoneen tai lähettävän koneen IP-osoitetta, vaan nyt käytetään portteja. Kohdekoneen ja lähettävän koneen IP-osoitteista huolehtiminen jää IP-protokollalle, jonka sisälle TCP-protokollan paketti laitetaan. Alla on kuva TCP-Protokollan paketista:
Pakettien järjestys on siis, kun sovellus haluaa lähettää dataa:
Tässä meillä on IP-protokollan jälkeen yksi tärkeimmistä protokollista, kun puhutaan tiedon siirtämisestä verkon yli. Yhdessä IP-protokollan kanssa nämä kaksi protokollaa tuottavat TCP/IP protokollaperheen, joita melkein kaikki muut protokollat hyödyntävät. Yhdessä nämä 2 protokollaa (TCP ja IP) siis huolehtivat siitä että data matkaa verkossa kahden koneen välillä käyttäen IPv4 tai IPv 6 osoitteita ja että data saavuttaa kohdekoneessa sen portin johon sen oletetaan saapuvan. Myös NodeJS hyödyntää näitä kahta protokollaa, silloin kun luodaan palvelu ja otetaan palveluun yhteys käyttäen HTTP-protokollaa.