TCP

Wikipedia
Loikkaa: valikkoon, hakuun
Internet-protokolla
Network-receive.svg

sovelluskerros
DHCPDNSESMTPFTPHTTPIMAPIRCLDAPMGCPNNTPNTPPOP3RPCRTPRTSPSIPSMTPSNMPSOCKSSSHTelnetTLS/SSLXMPP
Go-up.svg

kuljetuskerros
TCPUDPDCCPSCTPRSVPRIPBGPECN
Internet-web-browser.svg

verkkokerros
IP (IPv4 ja IPv6)ICMPICMPv6IGMPOSPFIPsec

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.

Uudempia TCP:n kanssa samantyyppistä palvelua tarjoavia protokollia ovat

  • SCTP - parempi luotettavuus, mm. mahdollisuus useisiin vaihtoehtoisiin rinnakkaisyhteyksiin
  • RTP - reaaliaikainen tiedonsiirto esimerkiksi puhetta (VoIP) varten

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

TCP-yhteys[muokkaa | muokkaa wikitekstiä]

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

Yhteyden muodostaminen[muokkaa | muokkaa wikitekstiä]

Yhteyden muodostamiseen käytetään kolmitiekättelyä. Kolmitiekättelyssä yhteyden aloittajan laite lähettää ensiksi kohdelaitteelle SYN-paketin ja kohdelaitteen saatua SYN-paketin vastaan laite vastaa aloittajalle SYN/ACK-paketilla merkkinä että SYN-paketti on saapunut. Lopuksi aloittajalaite vastaa kohdelaitteelle ACK-paketilla merkiksi, että on ottanut kohdelaitteen SYN/ACK-paketin vastaan.

Tiedonsiirto[muokkaa | muokkaa wikitekstiä]

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[muokkaa | muokkaa wikitekstiä]

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.

Yhteyden voi myös katkaista suoraan jompikumpi osapuoli lähettämällä RESET-valitsimella varustetun paketin. Toimenpide on ilmaisu katkaista yhteys heti, eikä vastauspaketteja lähetetä.

Ruuhkanhallinta[muokkaa | muokkaa wikitekstiä]

Pakettien katoaminen johtuu yleensä ruuhkasta internetin reitittimillä. Näissä tilanteissa reitittimelle saapuu enemmän paketteja kuin se ehtii välittämään eteenpäin. Kun reitittimen puskuri täyttyy, ylimääräiset paketit joudutaan hylkäämään. Jos datan lähettäjä vain itsepintaisesti uudelleenlähettäisi paketit, se lisäisi reitittimen ruuhkaa entisestään. Sitä varten TCP-protokollaan on kehitetty ruuhkanhallintamekanismeja. Ruuhkanhallintamekanismit ovat pitäneet internetin käyttökelpoisena, vaikka liikenteen määrä on kasvanut vuosien saatossa räjähdysmäisesti. Osa ruuhkanhallintamekanismeista on standardisoitu RFC 2581.[1]

Oleellisia TCP:n ruuhkanhallinta-algoritmeja:

  • Hidas aloitus (slow start)[1]
  • Ruuhkan välttely (Congestion avoidance)[1]
  • Nopea toipuminen (Fast retransmit/fast recovery)[1]
  • NewReno[2]
  • SACK TCP -optio (Selective Acknowledgements)[3]

TCP-kehys[muokkaa | muokkaa wikitekstiä]

(Pituus on 32-bitin monikerta)

+ 0 - 3 4 - 9 10 - 15 16 - 31
0 Lähdeportti Kohdeportti
32 Järjestysnumero
64 Kuittausnumero
96 Otsikon pituus Reserved Liput Ikkunan koko
128 Tarkistussumma Kiirellisyysosoitin
160 Optiot ja täyte
192
Data

TCP-protokollan päälle rakennettuja protokollia[muokkaa | muokkaa wikitekstiä]

Nämä palvelut valitaan porttinumeron perusteella. Tämä mekanismi on yhteinen UDP-protokollan kanssa.

Useimmat näistä protokollista ovat täysin selväkielistä keskustelua tietokoneiden välillä. Esimerkiksi SMTP- ja HTTP-palvelimien kanssa voi "keskustella" telnet-pääteohjelmalla samoin kuin minkä tahansa komentorivipohjaisen sovelluksen kanssa.

Standardointi[muokkaa | muokkaa wikitekstiä]

IP-paketti.png
  • Transmission Control Protocol (1981)

TCP on IP-protokolla numero 6. IP-porttien numerointi löytyy artikkelista portti. [4]

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]