**TCP/IP** *(Transmission Control Protocol / Internet Protocol)* on usean Internet-liikennöinnissä käytettävän tietoliikenneprotokollan yhdistelmä eli *pino*. IP-protokolla on alemman tason protokolla, joka vastaa päätelaitteiden osoitteistamisesta ja verkkopakettien reitittämisestä verkossa. Sen päällä voidaan ajaa useita muita verkko- tai kuljetuskerroksen protokollia, joista TCP-protokolla on yleisin. Se vastaa kahden päätelaitteen välisestä tiedonsiirtoyhteydestä, pakettien järjestämisestä ja hukkuneiden pakettien uudelleenlähetyksestä. 

Vaikka TCP/IP-protokollaperheeseen kuuluu monia muitakin protokollia, pääosa liikennöinnistä tapahtuu TCP-yhteyksinä IP-protokollan päällä. Tämän takia protokollaperhe yleensä tunnetaan nimellä TCP/IP.

TCP/IP-protokollapino.

Historia
--------

TCP/IP toteuttaa *Internet-arkkitehtuurin* ja juontaa juurensa ARPANETin referenssimalliin (engl. *ARPANET Reference Model*, ARM). Muita kehitettyjä protokolla-arkkitehtuureja ovat muun muassa Xeroxin XNS sekä IBM:n SNA. TCP/IP protokollaperhe noudattaa ARPANETin mallia, jossa on viisi kerrosta toisin kuin OSI-mallin seitsemän, ja osa toiminnoista on *epävirallisessa* kerroksessa 2.5 kuten ARP-protokolla.

Xerox halusi pitää XNS:n suljettuna ja tiukasti omassa hallussaan. Samaan aikaan TCP/IP oli vasta varhaisessa vaiheessa.

Louis Pouzin kehitti Ranskassa CYCLADES-tietokoneverkkoa, joka vaikutti myös TCP/IP:n kehitykseen.
Vint Cerf työskenteli DARPAssa TCP/IP:n toteutuksen kanssa ja Bill Joy sai tehtäväkseen integroida TCP/IP:n Unixiin, mutta kirjoitti toteutuksen uudelleen vuonna 1982 pelkän integroimisen sijaan. Seurauksena toteutuksen lähdekoodit olivat saatavilla käyttöjärjestelmän mukana, joka oli saatavilla myös VAX-alustalle ja Ethernet-verkkoon.
ARPANET siirtyi käyttämään TCP/IP:tä 1. tammikuuta 1983. Berkeley Unixin myötä TCP/IP levisi myös CERNiin.

OSI-protokollapinon oli tarkoitus korvata TCP/IP 1980-luvulla, mutta TCP/IP oli jo kasvavassa käytössä.

Varhaiset versiot TCP/IP protokollapinosta on kuvattu Internet Experiment Note (IEN) dokumenteissa, joista IEN 2 kuvailee TCP:n ja IP:n erillisinä protokollina eikä yhdistettynä kuten aiemmin. IEN 2:ssa TCP-protokollan tehtävät jaetaan kahtia ja esitellään IP-protokollan versio 0. TCP:n vastuulle jää "päästä-päähän" tapahtuva kommunikaatio ja IP:n vastuulle reititettävä "hyppy-hypyltä" kommunikaatio, jotka aiemmin olivat molemmat TCP:n tehtäviä.

Kerrokset
---------

Eri kerroksien protokollatiedot (engl. *protocol data unit*, PDU) kapseloidaan toisessa kerroksessa. Kerroksittaisella kapseloinnilla mahdollistetaan protokollien multipleksaus ja usean eri protokollan eläminen yhdessä samassa infrastruktuurissa. Kapselointi mahdollistaa useita yhtäaikaisia instansseja (kuten yhteydet, *connections*) ilman häiriöitä toisiinsa. Kapselointi käsittelee toisen kerroksen dataa läpinäkymättömästi tulkitsematta sitä.

Datan kapselointi sen liikkuessa kerroksien välillä, kuten kuvattu dokumentissa RFC 1122.

Standardit
----------

TCP/IP-protokollaperheestä vastaa IETF-standardointiorganisaatio. Sovellus-, kuljetus- ja verkkokerroksen protokollat määritellään sen hyväksymissä RFC-sarjan dokumenteissa. Fyysisen peruskerroksen protokollat eivät kuulu TCP/IP-protokollaperheeseen vaan ne ovat usein IEEE-, IEC- tai ITU-standardointiorganisaatioiden määrittelemiä. Internetissä käytettävän sisällön esitys on eri tahojen määrittelemää, esimerkiksi W3C-standardointiorganisaatio on määritellyt HTML- ja XML-esitystavat.

IP-protokolla
-------------

*Pääartikkeli: IP*
Verkkokerroksen IP-protokolla on TCP/IP-protokollan ydin. Verkossa tietoa välittävät reitittimet välittävät ainoastaan IP-paketteja, mikä perustuu IP-pakettien otsikkokenttien tietoihin. Kaikki ylemmän tason protokollat, kuten TCP, ovat sisällytetty, *kapseloitu*, IP-paketin data-osioon. Näin ollen IP-tasolla toimiva verkko ei ole tietoinen ylemmän tason protokollista ja yhteyksistä.

|  | HTTP | FTP | SNMP | DNS |
| --- | --- | --- | --- | --- |
| ICMP | TCP | UDP |
| Internet-protokolla |
| Ethernet | TokenRing | ATM | UMTS |

IP-protokollaa voidaan ajaa lähes minkä tahansa verkon päällä, joten sillä on helppo yhdistää erilaisia verkkoja isommiksi kokonaisuuksiksi. Internet on vain yksi mutta merkittävin tällä tavalla rakentunut verkko. Internet-protokolla-sanassa internet tarkoittaa verkkojen välistä verkkoa.

Lähes mitä tahansa sovellusta voidaan ajaa internet-protokollan päällä. Yksinkertainen internet-protokolla, jonka päälle on helppo rakentaa kaikenlaista, voi toimia pohjana lähes minkälaiselle sovellukselle tahansa.

Internet-protokollan suunnitteluperiaatteena on ollut *IP over everything, everything over IP*.

TCP-protokolla
--------------

*Pääartikkeli: TCP*
Kuten TCP/IP-protokollaperheen nimestä voi päätellä, toinen tärkeä perheen protokolla on TCP-protokolla, joka luo yhteydet tietokoneiden sovellusten välille käyttäen IP-paketteja. Se huolehtii vianhallinnasta, luotettavuudesta, kuittauksista ja pakettien laittamisesta oikeaan järjestykseen.

UDP-protokolla
--------------

*Pääartikkeli: UDP*
UDP *(User Datagram Protocol)* on sovelluksille tarjottava tietosähke. UDP:ssä on TCP:n kaltainen porttimekanismi ja se sijaitsee samassa kuljetuskerroksessa kuin TCP.

UDP ei takaa viestin perille välittämistä vaan tämä jää käyttäjäsovelluksen oman päätännän ja käsittelyn haltuun. UDP-paketteja käytetään kun tietomäärä on suuri, mutta jokaisen viestin perille saapumista ei tarvita. UDP:n käyttöön toisinaan viitataan myös UDP/IP-parina.

Muut kuljetus- ja verkkokerroksen protokollat
---------------------------------------------

SCTP ja RTP ovat uudemmat vaihtoehdot TCP:lle ja UDP:lle puhelinverkkosovellusten tyyppiseen luotettavampaan käyttöön. Niitä kuitenkin käytetään vielä vähän.

ICMP *(Internet Control Message Protocol)* on internet-protokollan valvontaprotokolla, jolla laitteet kommunikoivat keskenään IP-pakettien perille toimittamiseen liittyviä kiireisiä viestejä.

Lähiverkkoratkaisuilla on protokollat, joilla IP-osoitteen perusteella löydetään vastaava lähiverkon osoite. Tavallisin tällainen protokolla on Ethernet-verkkojen MAC-osoitteiden etsimiseen tarkoitettu protokolla ARP *(Address Resolution Protocol)*.

DHCP *(Dynamic Host Configuration Protocol)* protokollalla tietokone, joka ei tiedä omaa IP-osoitettaan, voi kysyä sitä verkosta. Tämä on välttämätöntä esimerkiksi kannettavissa tietokoneissa, joiden on saatava kulloiseenkin sijaintipaikkaansa soveltuva IP-osoite.

DNS *(Domain Name Service)* on palvelu, jolla Internetin domain-nimet, kuten *www.firma.fi*, muunnetaan IP-osoitteeksi.

Internetin reitittimet vaihtavat keskenään reititystietoa, jonka avulla voidaan löytää optimaalinen reitti kahden solmun tai verkon välillä. Reititysprotokollia ovat esimerkiksi OSPF, BGP ja RIP.

Katso myös
----------

* TCP/IP-viitemalli
* OSI-malli
* RFC 1122 – Requirements for Internet Hosts – Communication Layers
* RFC 1123 – Requirements for Internet Hosts – Application and Support
* RINA

Lähteet
-------

1. 1 2 3 4 5 6 7  Fall, Kevin R. & Stevens, W. Richard: *TCP/IP Illustrated, Volume*. Second Edition. Addison-Wesley. ISBN 978-0-321-33631-6.
2. 1 2 3 4 5  James Pelkey: TCP/IP and XNS 1981 – 1983 *historyofcomputercommunications.info*.  Arkistoitu 17.6.2018. Viitattu 6.6.2018.
3. ↑  Louis Pouzin Internet Hall of Fame. Viitattu 17.6.2018.
4. ↑  James Pelkey: CYCLADES Network and Louis Pouzin 1971 – 1972 *historyofcomputercommunications.info*.  Arkistoitu 17.6.2021. Viitattu 17.6.2018.
5. ↑  Ben Segal: A Short History of Internet Protocols at CERN *ben.home.cern.ch*.  huhtikuu 1995.  Arkistoitu 2.5.2015. Viitattu 17.6.2018.
6. ↑  Andrew L. Russell: OSI: The Internet That Wasn’t  30.7.2013. IEEE Spectrum. Viitattu 17.6.2018.
7. ↑  James Pelkey: ISO/OSI (Open Systems Interconnection): 1979 – 1980 *historyofcomputercommunications.info*. Viitattu 17.6.2018.
8. ↑  OSI Protocols Techopedia. Viitattu 17.6.2018.
9. 1 2 3  Jon Postel: IEN 2, *Comments on Internet Protocol and TCP* *rfc-editor.org*.  15. elokuuta 1977. Viitattu 23.5.2019. (englanniksi)

Aiheesta muualla
----------------

* Kuvia tai muita tiedostoja aiheesta **TCP/IP** Wikimedia Commonsissa