TCP/IP

**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.

## Historia
TCP/IP toteuttaa *Internet-arkkitehtuurin* ja juontaa juurensa ARPANETin referenssimalliin (, 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.
ARPANETin käyttämän NCP-protokollan ja CYCLADESin käyttämän STST-protokollan epäyhteensopivuuksien tutkimuksen myötä Gérard Le Lann kutsuttiin Stanfordiin Vint Cerfin ryhmään, jossa hän osallistui "liukuvan ikkunan" menetelmän kehitykseen TCP/IP:tä varten.
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 (, 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ä.

## 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

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, *[[kapselointi|kapseloitu]]*, IP-paketin data-osioon. Näin ollen IP-tasolla toimiva verkko ei ole tietoinen ylemmän tason protokollista ja yhteyksistä.

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-protokollassa internetillä tarkoitetaan 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

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

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
*  – Requirements for Internet Hosts – Communication Layers
*  – Requirements for Internet Hosts – Application and Support
*RINA

## Lähteet

## Aiheesta muualla