Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä. Voit auttaa Wikipediaa lisäämällä artikkeliin tarkistettavissa olevia lähteitä ja merkitsemällä ne ohjeen mukaan.
Tätä artikkelia tai sen osaa on pyydetty parannettavaksi, koska se ei täytä Wikipedian laatuvaatimuksia. Voit auttaa Wikipediaa parantamalla artikkelia tai merkitsemällä ongelmat tarkemmin. Lisää tietoa saattaa olla keskustelusivulla. Tarkennus: käytetyt temit eivät ole normaalisti käytettyjä
Portit ovat tietotekniikassa käytettyjen protokollien päätepisteitä keskenään kommunikoivien sovellusten välillä. Portti tarjoaa jonon tiedon lähettämiseen ja vastaanottamiseen.[1] Porteilla erotellaan samaa verkkoyhteyttä käyttävät sovellukset ja numero on lisätunniste, jolla järjestelmä välittää tiedon oikealle sovellukselle.[2]
Esimerkiksi TCP/IP-pino käyttää portteja eri protokollien ja palvelujen erottamiseen.
Porttinumero liittyy aina tiettyyn IP-osoitteeseen ja yhdellä tietokoneella voi olla myös useampia osoitteita.
TCP- ja UDP-porttinumerot ovat 16-bittisiä positiivisia kokonaislukuja välillä 0–65535. Porttinumerot ovat abstrakteja ilman fyysistä esitystä ja niitä on jokaisella IP-osoitteella 65536 kappaletta. Porttinumerolla erotetaan oikea vastaanottava sovellusohjelma. Asiakas-palvelin-arkkitehtuurissa kuunteleva palvelinohjelma "sitoo" itsensä tiettyyn porttiin odottamaan yhteyttä.[3]
Porttinumero ei rajoita avoimien yhteyksien määrää, vaan asiakkaan portin ja osoitteen perusteella erotellaan avoimet yhteydet. Samaan porttiin voi olla yhtä aikaa useita avoimia yhteyksiä.[4]
Ehdotus porttinumeroiden varaamiseen on peräisin vuodelta 1972. Mukana oli ehdotus numeroiden ryhmittelystä eri sovelluksia varten.[5] Ensimmäinen numero varattiin telnet-ohjelmalle ja varattujen numeroiden lista kasvoi nopeasti.[6] Ennen porttinumeroita ehdotettiin palvelunimen käyttöä (Server socket name).[7]
Portteja varataan kolmessa ryhmässä: järjestelmäportit (System Ports, 0-1023), käyttäjäportit (1024-49151) ja dynaamiset ja/tai yksityiset portit (49152-65535).[8]
Porttinumeroiden käyttöä on selkeytetty alkuperäisestä ehdotuksesta vuosien varrella ja uusia protokollia on lisätty, muun muassa SCTP ja DCCP.[9]
Palvelinohjelma kytkeytyy tyypillisesti odottamaan (kuuntelemaan) yhteyttä johonkin hyvin tunnettuun porttiin (well-known ports) palvelinkoneella. Yhteyttä ottavat asiakasohjelmat voivat varata satunnaisen portin omalta koneelta.
Unix-tyyppisissä käyttöjärjestelmissä porttien, joiden numero on alle 1024, avaamiseen tarvitaan pääkäyttäjäoikeudet. Porttinumeron 0 käyttö on sallittu, mutta usein sillä pyydetään järjestelmää valitsemaan vapaa portti.
Portit ovat yhteinen mekanismi sekä TCP- että UDP-protokollille. TCP-portti 80 ei ole sama kuin UDP-portti 80. Yleinen käytäntö on kuitenkin se, että jos TCP-portti 80 on varattu jollekin protokollalle (HTTP) niin vastaavaa UDP-porttia 80 pidetään varattuna samaan käyttötarkoitukseen, vaikkei protokolla sitä tarvitsisikaan.
Nämä ovat vain vakioportteja — mikään taho ei pakota esimerkiksi ajamaan HTTP-palvelinta juuri portissa 80. Tällöin portti on kuitenkin tiedettävä, esim. on käytettävä URL:ia http://yritys.fi:8080 ottamaan yhteyttä HTTP-palvelimeen, joka odottaa yhteyksiä vaihtoehtoisessa HTTP-portissa 8080.
Useita yksinkertaisia ja vähän käytettyjä palveluja on ajettu inetd-palvelimen avulla. Tämä palvelin voidaan määrittää kuuntelemaan useita portteja ja käynnistämään varsinainen palvelinohjelma kun kyseiseen porttiin otetaan yhteys.
Useat vanhemmista palveluista ovat jääneet käytöstä tai niistä on luovuttu tietoturvariskien vuoksi.
TCP-portteihin otettu yhteys on yleensä selväkielistä. Monia protokollia voi kokeilla Telnet-pääteohjelmalla mainitsemalla portin.
Komennolla
telnet yritys.fi 80
otetaan yhteys koneen yritys.fi porttiin 80 (HTTP). Telnet-komento löytyy useimmista Windows- ja Linux/Unix-käyttöjärjestelmillä varustetuista tietokoneista. (Useimmat HTTP-palvelimet vastaavat esimerkiksi yksinkertaiseen syöteriviin "GET /").