TCP

TCP (lyhenne sanoista Transmission Control Protocol) on tietoliikenneprotokolla, jolla luodaan yhteyksiä tietokoneiden välille, joilla on pääsy Internetiin. TCP-yhteyksien avulla tietokoneet voivat lähettää toisilleen tavujonoja luotettavasti. TCP-protokolla pitää myös huolta, että paketit saapuvat perille oikeassa järjestyksessä. Tarvittaessa hävinnyt paketti voidaan lähettää uudestaan. Tätä tarkoitusta varten TCP-protokollaan on kehitetty erilaisia vuonvalvonta- ja ruuhkanhallintamekanismeja. Suurin osa Internetin liikenteestä perustuu TCP-protokollaan ja koko TCP/IP-protokollaperhe on saanut nimensä TCP-protokollan perusteella.

Esimerkiksi WWW-sivujen hakeminen tehdään siten, että selaimen ja palvelimen välille muodostetaan TCP-yhteys, jossa selain voi lähettää tavujonoja palvelimelle ja palvelin tavujonoja selaimelle.

TCP:n paikka OSI-mallissa on kuljetuskerroksessa.

TCP:ssä on haavoittuvuuksia, jotka mahdollistavat mm. TCP-kaappauksen.

TCP-yhteys

TCP-yhteys sisältää kolme vaihetta. Yhteyden muodostaminen, tiedon siirto sekä yhteyden katkaisu.

Yhteyden muodostaminen

Yhteyden muodostamiseen käytetään kolmitiekättelyä. Kolmitiekättelyssä asiakaspään laite lähettää ensiksi serveripään laitteelle SYN-paketin, seuraavaksi serveripään laitteen pitäisi vastata SYN/ACK-paketilla. Lopuksi asiakaspään laite vastaa ACK-paketilla ja päättää kolmitiekättelyn ja datan siirto voi alkaa.

Tiedonsiirto

Tiedon siirtovaiheen aikana useat eri mekanismit varmistavat datan eheyden. Näitä mekanismeja ovat sekvenssinumerointi TCP-pakettien järjestyksen varmistamiseksi, tarkistussummat virheiden tarkistusta varten sekä ajastimet ja tunnistimet hukatuille paketeille ja viiveelle. Yhteyden muodostuksen aikana yhteyden välillä jaetaan sekvenssinumerot joiden perusteella datavirrasta tunnistetaan kullekin yhteydelle kuuluvat paketit. Jokaisesta vastaanotetusta TCP-paketista lähetetään kuittaus lähettäjälle. Jos kuittausta ei tule, paketti lähetetään uudestaan.

Yhteyden päättäminen

Yhteys päätetään nelitiekättelyllä. Yhteyden molemmat osapuolet katkaisevat yhteyden erikseen. Molemmat lähettävät FIN-paketin ja molemmat kuittaavat sen ACK-paketilla.

Yhteys voidaan päättää myös kolmitiekättelyllä. Toinen osapuoli lähettää FIN-paketin, jonka toinen osapuoli kuittaa FIN-ACK paketilla. Tämän jälkeen ensimmäinen osapuoli lähettää ACK-paketin.

Yhteys voidaan myös keskeyttää suoraan jommankumman osapuolen toimesta lähettämällä RESET-valitsimella varustettu paketti. Tämä toimenpide on ilmaisu katkaista yhteys heti eikä vastauspaketteja lähetetä.

UDP

UDP (lyhenne sanoista User Datagram Protocol) on ns. yhteydetön protokolla, joka ei vaadi yhteyttä laitteiden välille, mutta mahdollistaa tiedostojen siirron.[1]

UDP eroaa TCP:stä monin tavoin. Muun muassa paketin perillemenoa ei varmisteta päästä päähän (alempi taso kyllä varmistaa seuraavaan solmuun asti). UDP:ta käytetään esimerkiksi DNS-pyyntöjen lähettämiseen, verkkopeleissä ja reaaliaikaisen videon ja äänen välittämiseen. UDP:n yleisrasite on pienempi kuin TCP:n, siinä ei suoriteta alkukättelyä, pakettien kuittailua eikä kolmivaiheista yhteyden lopettamista. Se ei silti välttämättä ole nopeampi kuin TCP, koska TCP:n liikkuva ikkuna (sliding window) kompensoi tehokkaasti kuittausten viemää aikaa.