Mediatyypit Internetissä, erityisesti Webissä

Mikä on mediatyyppi?

Internet-mediatyyppi (media type) on määrätyllä tavalla kuvattu datakokonaisuuden ominaisuus, joka kertoo sekä datan yleisen tyypin (esim. teksti tai ääni) että alityypin, joka tarkemmin ilmaisee datan formaatin (esim. määrätyn ääniformaatin).

Mediatyyppi kuvataan ilmaisulla, joka on muotoa
päätyyppi/alityyppi
missä päätyyppi (engl. top-level media type) on jokin seuraavista:

text
teksti; huomaa, että tekstinkäsittelyohjelmien (esim. MS Word) normaalisti tuottamaa tallennusmuotoa ei tulkita tekstimuotoiseksi tässä mielessä
image
kuva, graafisessa muodossa esitettävä data; huomaa, että myös monia application-tyyppejä voidaan pitää grafiikkaformaatteina
audio
ääni, esim. musiikki tai puhe
video
liikkuva kuva
application
muu data, tyypillisesti binaaridata, johon ei liity mitään erityistä tulkintaa, tai jossakin sovelluskohtaisessa esitysmuodossa (esim. MS Word -muodossa) oleva data
message
Internet-viesti kuten meiliviesti (E-mail message) tai nyysiartikkeli (Usenet news message)
model
mallinnusdataa; tämä päätyyppi on määritelty RFC 2077:ssä
multipart
moniosainen viesti, jossa osat voivat olla keskenään eri mediatyyppiä.

Päätyyppien joukko on tarkoitettu melko pysyväksi. Tämä merkitsee käytännössä sitä, että ne uudet mediatyypit, jotka eivät luontevasti sovi muualle, sijoitetaan "kaatopaikkaluokkaan" application.

Esimerkkejä mediatyypeistä:

text/plain pelkkä teksti ilman mitään muotoilukoodeja; tarkoitettu esitettäväksi sellaisenaan
image/gif Gif-muodossa esitetty grafiikka
audio/basic eräs äänidatan muoto
video/mpeg liikkuva kuva, joka on esitetty Mpeg-muodossa
application/postscript Postscript-muodossa oleva dokumentti
application/vnd.ms-excel Excel-dokumentti
message/partial meiliviesti (mail message), joka muodostaa yhden osan laajemmasta kokonaisuudesta, isosta viestistä, joka on jaettu osiin
model/vrml malli, joka on tehty VRML-kielellä (Virtual Reality Modeling Language).
multipart/alternative data, joka koostuu saman informaation kahdesta tai useammasta vaihtoehtoisesta esitysmuodosta, esim. pelkkänä tekstinä (text/plain) ja HTML:nä (text/html)

Mediatyyppiin voidaan myös liittää parametreja kuten charset-parametri, joka kertoo käytetyn merkkikoodin. Parametreihin ei tässä esityksessä juurikaan puututa.

Internet-mediatyyppejä kutsuttiin alun perin MIME-tyypeiksi (MIME types), ja tätä nimitystä käytetään vieläkin usein. Nimi on alun perin lyhenne sanoista Multipurpose Internet Mail Extensions.

Mihin mediatyyppejä tarvitaan?

Mediatyyppejä tarvitaan, jotta eri ohjelmat voisivat viestiä toisilleen, millaista dataa ne lähettävät. Esimerkiksi meilissä (sähköpostissa) voi lähettävä ohjelma sisällyttää otsikkotietoihin seuraavan:
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
joka kertoo vastaanottaville ohjelmille, kuten vastaanottajan meiliohjelmalle, missä muodossa ja minkä merkkikoodin ja koodauksen mukaisena viesti on. Tämä mahdollistaa hyvinkin monenlaisen datan lähettämisen meilitse, kunhan asianomaiset ohjelmat osaavat tunnistaa ja käsitellä mediatyypit oikein. Mediatyyppinä on tässä tapauksessa tekstitiedostojen normaalityyppi text/plain. (Sen jäljessä oleva ; charset="iso-8859-1" on parametri, joka kertoo, että merkkien koodaus on ISO 8859-1:n eli ISO-Latin-1:n mukainen.)

Kenties selvimmin mediatyyppien hyödyllisyys tulee esiin Webissä. Kun Web-palvelin (server) lähettää käyttäjän katseluohjelmalle tämän pyytämän datan (dokumentin), se lähettää mukana myös otsikkotietoja, jotka kertovat mm. datan mediatyypin (joka ilmoitetaan otsikkotietojen Content-Type-kentässä). Katseluohjelman tulisi perustaa dokumentin käsittely sen mediatyyppiin. Esimerkiksi jos mediatyyppi on video/mpeg, katseluohjelman tulisi antaa data käsiteltäväksi jollekin ohjelmalle, joka pystyy esittämään MPEG-muodossa esitettyä liikkuvaa kuvaa, tai sitten kertoa käyttäjälle, ettei dataa pystytä esittämään (jolloin katseluohjelma voi tarjoutua tallettamaan datan levylle mahdollista myöhempää käsittelyä varten).

Mediatyyppien ja niitä käsittelevien ohjelmien vastaavuus pitää tietysti määritellä katseluohjelmassa, joko järkevien oletusarvojen perusteella tai käyttäjän tekemien määrittelyjen mukaan. Esimerkiksi Netscape Communicatorissa tällaisia määrittelyjä pääsee tekemään seuraavasti: valitaan Edit -> Preferences... -> Navigator -> Applications jonka jälkeen voidaan sitten muutella ja lisäillä mediatyyppien ja ohjelmien välisiä vastaavuuksia. Periaatteessa tiedoston nimen loppuosalla eli ekstensiolla (kuten .html) ei pitäisi tässä vaiheessa olla enää mitään merkitystä. Käytännössä etenkin Internet Explorer sotkee asioita "päättelemällä" itse mediatyypin tiedoston nimestä.

Kuka määrittelee mediatyypit?

Mediatyyppien (MIME-tyyppien) järjestelmän määrittelee joukko RFC-dokumentteja, ensimmäisenä RFC 2045, joka kuvaa Internet-viestien rakenteeseen tarvittavia laajennuksia. Taustalla (ja pohjana) on vanha yleinen viestimuoto RFC 822, jossa datan muotona on pelkkä riveihin jaettu Ascii-teksti. Ks. Juha Merimaan tiivistelmää RFC 2045:stä.

Mediatyyppijärjestelmän perusteet, muun muassa edellä luetellut päätyypit (paitsi model), on määritelty RFC 2046:ssa, joka sisältää myös yleisiä mediatyyppeihin liittyviä spesifikaatioita. Kyseinen dokumentti on RFC:ksi harvinaisen luettava, varsinkin alkuosaltaan. Kyseisten yleisten määrittelyjen lisäksi on olemassa kymmeniä RFC:itä, joiden nimessä esiintyy MIME ja jotka kuvaavat mm. eri mediatyyppejä sekä MIME-datan käsittelyä eri yhteyksissä. Earl Hood on koonnut sivuston Multipurpose Internet Mail Extensions MIME, joka sisältää mm. aihetta koskevat perus-RFC:t hypertekstimuodossa ja niiden yhteisen sisällysluettelon.

Uusien alityyppien rekisteröinti tapahtuu RFC 2048:n mukaisesti. Ajantasaista rekisteriä ylläpitää IANA-niminen organisaatio nykyisin osoitteessa
http://www.iana.org/assignments/media-types/ Ks. myös Harald Alvestrandin lyhyttä (osittain vanhentunutta) dokumenttia rekisteröinnin käytännöstä.

Käytännössä kuitenkin mediatyyppejä saatetaan ottaa käyttöön rekisteröimättä niitä. Periaatteessa tällaisten "yksityisten" mediatyyppien pitäisi olla sellaisia, että niiden alityypin nimi alkaa merkeillä x-. Todellisuudessa monia rekisteröityjen tyyppien näköisiä, mutta rekisteröimättömiä tyyppejä (esim. audio/mpeg, joka tarkoittaa MPEG3-ääniformaattia) käytetään aika yleisesti.

Dokumentti Multipart Internet Mail Extensions (MIME) (Ian S. Grahamin teoksessa The HTML Sourcebook, 3Ed on lueteltu koko joukko rekisteröimättömiä mutta yleisesti käytettyjä mediatyyppejä (rekisteröityjen tyyppien ohella). Toinen samantapainen luettelo on kirjan Special Edition Using CGI (julkaisija: QUE) liitteessä B.

Lisätietoja mediatyypeistä ja MIMEstä, etenkin eräistä koodauksista, on Nyysioppaan kohdissa Mime ja Merkkien koodaus.

Mediatyypit Webissä

Edellä jo oli lyhyt kuvaus mediatyyppien merkityksestä Webissä. Seuraavassa yritetään asiaa valaista hiukan yksityiskohtaisemmin esimerkin avulla: Oletetaanpa, että Web-dokumentissa on tällaista:
We have a  stirring <A href=
"http://www.olemiss.edu/depts/music/audio/olemiss.au"><strong>fight 
song</strong></A> (400k .au).
Katseluohjelma näyttää tämän esimerkiksi seuraavanlaisena:
We have a stirring fight song (400k .au).
Jos nyt käyttäjä valitsee kyseisen linkin (klikkaamalla tms.), niin hänen katseluohjelmansa lähettää asianomaiselle palvelimelle (tässä www.olemiss.edu) pyynnön saada dokumentti. Palvelin lähettää dokumentin ja sen mukana tiedon sen mediatyypistä. Jos mediatyyppi on jokin audio-tyyppi (esimerkiksi audio/basic), niin selaimen tulisi käsitellä se jollakin äänitiedostoille sopivalla tavalla. Jos selain pystyy esittämään äänet, sen tulisi käynnistää siihen sopiva ohjelma. Jos ei, niin selain saattaa vain kysyä käyttäjältä, mihin tiedostoon dokumentti talletetaan, tai kysyy, haluaako käyttäjä tallentaa tiedoston vai avata sen ja millä ohjelmalla. Olennaista on, että selain ei saisi suinkaan ruveta esittämään dokumenttia tekstinä näytöllä. Jotta tämä onnistuisi, sen täytyy saada oikea tai edes oikeansuuntainen tieto mediatyypistä ja sen täytyy olla oikein konfiguroitu. Jos esimerkiksi tietokoneeseen, jossa ei ole äänitukea, asennetaan siihen tarvittava laitteisto ja ohjelmisto, on syytä tarkistaa myös Web-katseluohjelman asetukset niin, että se osaa käynnistää sopivan ohjelman, kun tulee audio-tyyppistä dataa.

Edellä sanottu merkitsee, että tiedoston nimen päätteellä ei enää pitäisi olla mitään merkitystä sen jälkeen, kun palvelin on lähettänyt tiedoston. Selaimen pitäisi tulkita tiedosto palvelimen ilmoittaman mediatyypin mukaan eikä suinkaan itse yrittää päätellä sitä nimen loppuosan perusteella.

Usein kysytään, miten Web-dokumentissa voisi käyttää linkkiä, jonka kautta käyttäjät voivat "imuroida" esim. tekstitiedoston tai binaarimuodossa olevan ohjelman suoraan kovalevylleen. Kysymys perustuu väärinkäsitykseen. Dokumentin tasolla riittää kirjoittaa normaali linkki, ja dokumentin ulkopuolella pitää esim. nimen loppuosan valinnalla huolehtia siitä, että mediatyyppi on oikea. Katseluohjelman ja käyttäjän asia on valita dokumentin käsittelyn tapa (niistä vaihtoehdoista, jotka kullekin dokumentille ovat mielekkäitä). Esimerkiksi Netscapen käyttäjä voi valita linkin siten, että hän käyttääkin hiiren oikeanpuoleista nappia (eikä vasenta kuten yleensä) ja sitten valitsee avautuvasta valikosta vaihtoehdon Save Target As...

Web-palvelimen lähettämä tieto mediatyypistä

Palvelimen lähettämä tieto mediatyypistä perustuu yleensä (mutta ei mitenkään välttämättä) siihen, että palvelimen konfiguraatiossa on määritelty kuvaus (mäppäys), joka liittää tiedostoon mediatyypin tiedoston loppuosan perusteella. Palvelin voisi esimerkiksi tulkita kaikki ne tiedostot, joiden nimi loppuu merkkeihin .doc, MS Word -muotoisiksi dokumenteiksi, mikä merkitsee, että se kertoisi niille mediatyypiksi application/msword. Palvelimen toiminta tässä suhteessa saattaa olla dokumentin tekijän muutettavissa esim. ns. .htaccess-tiedoston avulla. Esimerkiksi TKK:n Web-palvelimen www.hut.fi toiminta tässä suhteessa on kuvattu paikallisissa Web-ohjeissa olevassa erillisessä dokumentissa.

Sitä, minkä mediatyyppitiedon palvelin lähettää, ei välttämättä voi päätellä katseluohjelman toiminnasta. Voihan olla, että palvelimen lähettämä tieto on oikea mutta katseluohjelma tältä osin puutteellisesti konfiguroitu. Niinpä voikin olla tarpeen tarkistaa kyseinen tieto. Tähän on käytettävissä monia palveluita, joiden nimi on HTTP Header Viewer tai jotain vastaavaa, esimerkiksi Rex Swain’s HTTP Viewer.

Toinen, teknisesti hiukan vaativampi tapa on olla suoraan yhteydessä palvelimeen Telnet- ja HTTP-protokollilla. Kun halutaan tietää dokumentin http://palvelin/polkunimi mediatyyppi, otetaan Telnet-yhteys koneeseen palvelin, käyttäen numeroa 80 ellei itse URL:ssä ole ilmoitettu muuta. Sitten annetaan käsky
HEAD /polkunimi HTTP/1.0
ja tyhjä rivi (siis painetaan returnia kahdesti). Seuraavassa esimerkissä tämä on tehty Unix-koneella, ja tutkittavana dokumenttina on ollut http://www.hut.fi/home/jkorpela/perhe.jpg:

beta ~ 51 % telnet www.hut.fi 80
Trying 130.233.224.28...
Connected to info-e.hut.fi.
Escape character is '^]'.
HEAD /home/jkorpela/perhe.jpg HTTP/1.0

HTTP/1.1 200 OK
Date: Tue, 23 Sep 1997 12:37:05 GMT
Server: Apache/1.2.4
Last-Modified: Tue, 08 Aug 1995 08:29:53 GMT
ETag: "16391-9232-30272081"
Content-Length: 37426
Accept-Ranges: bytes
Connection: close
Content-Type: image/jpeg

Connection closed by foreign host.
beta ~ 52 % exit
Tässä Content-Type:-kertoo, että mediatyyppi on image/jpeg.

Lisälukemista

Learning HTML 3.2 by Examples sisältää lyhyen yleisesityksen mediatyypeistä sekä niihin liittyviä tietoja ja esimerkkejä A-elementin kuvauksessa.

WDG Web Authoring FAQ:ssa luku Other Media käsittelee mediatyyppeihin liittyviä asioita.

Mediatyyppejä ei pidä sekottaa "tiedostotyyppeihin" Windows-mielessä eikä tiedoston nimen loppuosaan, vaikka näiden asioiden välillä onkin joitakin yhteyksiä. Esimerkiksi ".doc-tyyppi" ei ole mikään tiedostotyyppi. Aiheesta kertoo lisää juttu "Sain tiedoston, jonka nimi loppuu .xyz; mitähän se sisältää?", jossa myös kerrotaan, mistä saa tietoja tiedostonnimen loppuosan ja mediatyypin välisistä mahdollisista yhteyksistä.


Jukka K. Korpela
2004-02-01. Muokattu viimeksi 2008-05-19.