1. Av
2 Introduksjon og forord Internett er som kjent bygd opp i adresser, akkurat som husstander, byer og land, dette er fordi Internett er bygd opp mye likt post systemet, du kan sammenligne en maskin på Internett med en vanlig husstand, for at posten skal komme frem dit må det huset ha en adresse, ellers så vet ikke postmannen hvor han skal levere brevene. På samme måte er det med Internett, for at dataen fra og til din maskin skal komme frem, må den vite adressen dit den skal. Jeg kommer ikke til å gå veldig i detalj på hvordan verken internett er bygd opp og hvordan pakkene som sendes fra maskin til maskin ser ut, ei heller hvordan de forskjellige internett protokollene er bygd opp, bare kort og presist problemstillingen ved den nåværende protokollen i motsetning til den «nye». Disse adressene kalles Internett Protokoller, forkortet «IP», per dags dato så er Internett hovedsakelig basert på Internett Protokoll versjon 4. Internett Protokoll versjon 4, forkortet Ipv4, bruker 32-bit adresser, dette begrenser totale mengden adresser til 2^32 = 4 294 967 296 adresser, det høres kanskje ut som en stor mengde adresser, men en god del av disse er reservert for ting som lokale adresser, altså adresser innenfor lokale nettverk, det vil si ikke adresser som kommuniseres med ut på Internett. Neste generasjons internett protokoll Internett Protokoll versjon 6, forkortet IPv6, skal være løsningen på dette problemet, IPv6 er på 128 biter i motsetning til IPv4 på 32 biter. Det vil si mengden adresser er på 2^128 (tallet er for stort til å skrives her, men mange millioner ganger flere enn IPv4 adressene på bare 4,3 milliarder.) IPv6 er normalt skrevet i heksadesimalt med kolon istedenfor punktum som i IPv4. Eksempel på IPv6 adresse er 2001:beef:baad::88ae:337:1337, mens en vanlig IPv4 adresse ser slik ut; 158.38.222.10. Bare tallene imellom separatorene, punktum i IPv4 og kolon i IPv6 viser klart en forskjell på antallet. IPv4 har 256 forskjellige mulige kombinasjoner, siden 0 er en gyldig IPv4 adresse, mens i IPv6 så er det 4 heksadesimale karakterer, det vil si 16 mulige kombinasjoner per karakter, som da tilsvarer 16^4 = 65536. Dette ble en lang introduksjon i hva temaet dreier seg om, det jeg skal gå i dybden på er implementasjon av IPv6 i eksisterende IPv4 systemer, og hvilke problemer vi kan støte på der.
3 Endring av internett protokoll i programvare Per dags dato er de fleste applikasjoner/programmer som på en eller annen måte kommuniserer med internett/lokale nettverk basert på å kommunisere over IPv4 protokollen, derfor vil en global oppgradering av internett protokollen gjøre at mange applikasjoner ikke lenger vil fungere. Hoved forskjellen er den tekniske logikken bak dette, da en IPv4 adresse er 32-biter, det vil si at en vanlig variabel innen programmering størrelse er basert på prosessor størrelsen, en 64-biters prosessor kan ha variabler på 64-bit, det vil si at størrelsen på tallet som variabelen kan holde er på 2^64 på 64- biters prosessor og 2^32 på 32-biters prosessorer siden en 64-biters prosessor lett støtter 32-biters variabler, er det vanlig at utviklere bruker 32-biters variabler siden da slipper de å lage to versjoner av programmet sitt for at det skal fungere på begge prosessorene. Eksempel på implementasjon av IPv4 i C++ programmering: Kildekoden er hentet fra kilde nr. 3 Programming guidelines on transition to IPv6. Eksempel på implementasjon av IPv6 i C++ programmering:
4 Kildekoden er hentet fra kilde nr. 3 Programming guidelines on transition to IPv6. Nok bakgrunnsinformasjon om variabler, kildekoder og prosessorer, problemet med variabler i programmering og IPv6 adresser er at, IPv4 adresser er som kjent 2^32 akkurat det samme som størrelsen på en 32-biters variabel, det vil si at for programkode skal kunne lagre en IPv4 adresse trengs kun en adresse i maskin minnet/en variabel å opprettes som holder denne informasjonen. Med IPv6 som er, som nevnt tidligere, 2^128 så ville ikke engang 64-biters variabler klart å lagre denne informasjonen, det vil si at man må bruke en helt annen logikk for å benytte seg av det, man må lagre adressen på flere variabler eller datasett. Derfor er det klart at man ikke bare kan skru av IPv4 og satse på at applikasjonene greier å kommunisere over IPv6 når de er programmert for IPv4 adressene er rett og slett for store til at programmet greier å benytte seg av dem, ikke nok med det, men pakke strukturen er veldig annerledes på de to protokollene, jeg kommer ikke til å gå så dypt i detaljer at jeg forklarer hvordan oppbygningen av pakkene er forskjellige og lignende. Grunnen til at de fleste applikasjoner ikke støtter IPv6 er at de som produserer applikasjonen ikke vil sette av mer timer og kroner for at utvikleren skal lage støtte for det, da applikasjonen vil fungere nå med kun IPv4. Hadde bare alle programvareprodusenter og utviklere laget støtte for begge deler ville vi kunne beveget oss over på IPv6 for lenge siden, i og med at IPv6 faktisk var klart i 1996.
5 Konklusjon Bruken av IPv4 adresser er såpass stigende at det ikke finnes tvil om at vi kommer til å gå tom for ubrukte IPv4 adresser innen rimelig kort tid, derfor er flytte deler av nettet, om ikke hele over på IPv6 ett reelt tema. Ut i fra denne artikkelen så ser vi at programmer ikke automatisk vil komme til å fungere over IPv6 og derfor applikasjoner, programmer og spill som ikke lenger utvikles og som benytter seg av internett ikke vil fungere dersom brukere blir tvunget over på IPv6, selvfølgelig vil det bli lagd systemer til å gå rundt det, som IPv4-tunneller og virtuelle nettverk som benytter den gamle protokollen, men det vil ikke klare å kommunisere rett på IPv6 protokollen. Av problemer vi vil støte på i en slik implementasjon i programvare er at adressene ikke kan oppbevares på samme måten, IPv4 adresser er 32-biter, tilfeldigvis det samme som størrelsen på en 32-bites variabel av typen integer, (helt tall), dette er som tidligere nevnt den vanligste typen variabel/ oppbevaringsboks av tall og verdier i programmering, problemet er jo at det finnes ingen 128-biters variabel, derfor må en 128-biters adresse deles opp i flere variabler/datasett.
6 Kilder og referanser Kilde/referanse fra Sted Artikkel fra Internett (1) Information Sciences Institute, 1981, http://tools.ietf.org/html/rfc791 (Hentet 9 September 2010) Artikkel fra Internett (2) Artikkel fra Sean Silverthorne ved Harvard Business School, http://hbswk.hbs.edu/item/5968.html (Hentet 10 September 2010) Artikkel fra Internett (3) Programming guidelines on transition to IPv6, skrevet av Tomás P. de Miguel og Eva M. Castro fra Department of Telematic Systems Engineering og Technical University of Madrid. Artikkel fra Internett (4) http://www.cav6tf.org/articles/trans_ipv6_v013.pdf (Hentet 12 September 2010) Understanding IP Addressing, skrevet av RIPE (Réseaux IP Européens, Europeiske IP Nettverk ) http://www.ripe.net/info/info-services/addressing.html (Hentet 14 September 2010)