Teoria 3
Teoria 3 osion osaamistavoitteina on ymmärtää luotettavaan tiedonsiirtoon, reititykseen sekä kanavan jakamiseen liittyvät haasteet sekä niiden toteutukseen valitut ratkaisut Internetin eri kerrosten protokollissa.
Kuljetuskerros
- TCP yhteyden muodostus ja lopetus
- ymmärtää tilakaavion suhde protokollan toimintaan
- Luotettava tiedonsiirto
- Tehokas luotettava tiedonsiirto
- TCP Vuonvalvonta
- TCP ruuhkanhallinta
TCP tilakaavio
TCP yhteyden muodostus, lopetus sekä tilat
Luotettava tiedonsiirto
Luotettavan tiedonsiirtoprotokollan pitää ratkaista
- Kuinka toivutaan virheellisestä datapaketista?
- Lisätään tarkistussumma
- jotta havaitaan virheitä
- Lisätään kontrolliviesti(t)
- annetaan palautetta virheistä tai virheettömyydestä
- Lisätään tarkistussumma
- Kuinka toivutaan virheellisestä kuittauspaketista?
- Lähetetään paketti uudestaan
- mutta mitä jos onkin duplikaatti?
- Lisätään sekvenssinumerointi
- jotta tunnistetaan duplikaattipaketit
- Lähetetään paketti uudestaan
- Kuinka toivutaan kadonneesta data- tai kuittauspaketista?
- Lisätään datan lähettäjälle ajastin
- Ajastin laukeaa jos ei saada kuittausta
- → lähetetään datapaketti uudestaan
- Jos datapaketti oli kadonnut
- on ongelma korjattu
- Jos kuittauspaketti oli kadonnut
- vastaanottaja saa duplikaatin
- josta selvitään sekvenssinumeroinnilla
- Lisätään datan lähettäjälle ajastin
- Kuinka toivutaan viivästyneestä kuittauspaketista?
- Jos viive on suurempi kuin ajastimen arvo
- tulee turha datapaketin uudelleenlähetys
- Lähettäjä vastaanottaa duplikaattikuittauksen
- ja luulee että data paketti on kadonnut
- Koska kuittauspakettien duplikaatteja ei voi tunnistaa
- lähetetään varulta datapaketti uudestaan
- Sekvenssinumeroilla tunnistetaan datapakettien duplikaatit
- Viive voi vaihdella paljonkin
- tarvitaan menetelmä viiveen arvioimiseen
- ja ajastimen arvon päivittämiseen
- Jos viive on suurempi kuin ajastimen arvo
- rdt 3.0 on toimiva luotettava tiedonsiirtoprotokolla, mutta hidas!!!
Go Back N vs. Selective repeat
- Putkitettu protokolla: saa lähettää seuraavan paketin ennen kuin edelliseen on saatu kuittaus
- Kuinka monta pakettia saa lähettää, ennen kuin pitää pysähtyä odottamaan kuittausta? → Sen määrää Lähetysikkunan koko
- Visualizing the Go Back N and the Selective Repeat protocol
TCP Vuonvalvonta - Flow control
- Vastaanottajan toimenpide
- Vastaanottaja estää lähettäjää lähettämästä liian nopeasti
- Mainostetaan (päivitetään) vastaanottoikkunan kokoa lähettäjälle
- Visualizing the tcp flow control
- TCP vuonvalvonta on eri asia kuin TCP ruuhkanhallinta - Congestion control
- Ruuhkanhallinta on lähettäjän toimenpide, käsitellään ruuhkanhallintaa seuraavaksi
TCP Ruuhkanhallinta - Slow Start
- Slow Start
- Aloitetaan lähetys hitaasti
- Kasvatetaan nopeutta eksponentiaalisesti
- Jos paketti katoaa (timeout)
- lähetetään uudelleen kuittaamaton paketti
- aloitetaan Slow Start vaiheen alusta
- lähetysikkunan koko asetetaan alkuarvoon
- eli tiedonsiirtonopeus pudotetaan minimiin
- asetetaan raja-arvo puoleen saavutetusta nopeudesta
- Jos saavutetaan raja-arvo, siirrytään Congestion Avoidance vaiheeseen
TCP Ruuhkanhallinta - Congestion Avoidance
- Congestion Avoidance
- Kasvatetaan nopeutta lineaarisesti
- Jos paketti katoaa (timeout)
- lähetetään uudelleen kuittaamaton paketti
- aloitetaan Slow Start vaiheen alusta
- lähetysikkunan koko asetetaan alkuarvoon
- eli tiedonsiirtonopeus pudotetaan minimiin
- asetetaan raja-arvo puoleen saavutetusta nopeudesta
TCP Ruuhkanhallinta - Fast Retransmit (TCP Tahoe)
- Fast Retransmit
- Jos paketti katoaa (timeout)
- lähetetään uudelleen kuittaamaton paketti
- aloitetaan Slow Start vaiheen alusta
- lähetysikkunan koko asetetaan alkuarvoon
- eli tiedonsiirtonopeus pudotetaan minimiin
- asetetaan raja-arvo puoleen saavutetusta nopeudesta
- Uutta:
- Jos vastaanotetaan 3 kpl duplikaattikuittauksia →
- paketti oletetaan kadonneeksi →
- toimitaan kuten paketti olisi kadonnut
- ei tarvitse odottaa ajastinta
- Jos paketti katoaa (timeout)
TCP Ruuhkanhallinta - Fast Recovery (TCP Reno)
- Fast Recovery
- Jos paketti katoaa (timeout)
- lähetetään uudelleen kuittaamaton paketti
- aloitetaan Slow Start vaiheen alusta
- lähetysikkunan koko asetetaan alkuarvoon
- eli tiedonsiirtonopeus pudotetaan minimiin
- asetetaan raja-arvo puoleen saavutetusta nopeudesta
- Jos paketti oletetaan kadonneeksi (3 kpl duplikaatti ACK)
- uudelleen lähetetään kuittaamaton paketti
- asetetaan raja-arvo puoleen saavutetusta nopeudesta
- Uutta:
- aloitetaan Congestion Avoidance vaiheen alusta
- eli tiedonsiirtonopeus puolitetaan saavutetusta nopeudesta
- Jos paketti katoaa (timeout)
Verkkokerros (Teoria 3)
- DHCP (Dynamic Host Configuration Protocol)
- NAT (Network Address Translation)
- Mobile IP vs. liikkuva kännykkä
- Reititysprotokollat
DHCP toiminta
- DHCP kommunikaatio, oletuksena kaikki viestit lähetetään yleislähetysosoitteeseen 255.255.255.255
- Asiakas - DHCP palvelimen etsintä (DHCP Discover)
- Palvelimet - IP osoitteen 'vuokra'-tarjouksia (DHCP offer)
- Asiakas - IP osoitteen pyytäminen (DHCP request)
- Palvelin - IP osoitteen kuittaus (DHCP acknowledgement)
- Asiakas voi pyytää vastauksen täsmälähetyksenä, palvelimen asetuksista riippuu tuetaanko täsmälähetyksiä
- DHCP ja DHCPv6
- DHCP portit: 67 (palvelin), 68 (asiakas), 546 (IPv6 asiakas), 547 (IPv6 palvelin)
- IPv6 asiakkaat luo itse IP osoitteen käyttämällä Tilatonta autokonfiguraatiota
- DHCPv6 protokollaa voidaan (tarvittaessa) käyttää Tilattoman autokonfiguraation parametrien välittämiseen
Tehtäviä tulee myöhemmin lisää, tavoite on että kaikissa olisi (j) kohtaan asti. Aikataulusta en osaa sanoa mitään. Kaikkia kohtia ei todennäköisesti tule vuoden 2020 aikana.
—DHCP viestit
NAT (Network Address Translation)
- NAT (Network Address Translation) - Basic NAT
- Reititin muuttaa lähtevien pakettien lähettäjän IP osoitteen
- Jokainen privaatti IP:tä käyttävä laite saa oman julkisen IP osoitteen
- Vaatii paljon IP osoitteita (ostetaan ISP:ltä)
- Network Address and Port Translation (NAPT) - Dynamic NAT
- Reititin muuttaa myös lähettäjän porttinumeron
- Tällöin riittää vain yksi julkinen IP osoite
- Yleisin versio, ja nykyään NAT-termillä yleisesti tarkoitetaan juuri NAPT:tä
- Port Forwarding - Static NAT
- Reititin tallentaa pysyvästi porttimuunnoksen (sallii ulkopuoliset yhteydet porttiin)
- Käytetään kun kommunikaatio vaatii NAT:n takana olevan porttinumeron tuntemusta
Ei tullut 0.1 pistettä eikä seuraavasta.
—Silloin reititystaulussa on jotain väärin, tarkastele vielä tarkemmin pakettien osoitetietoja
—NAT:n hyödyt ja haitat
- Hyödyt
- Säästää julkisia IPv4 osoitteita
- Parantaa tietoturvaa
- Sisäverkon konfiguraatiota ja osoitteita voi vapaasti muuttaa
- Pienentää reitityksen tarvetta
- Haitat
- Kaikki protokollat ja sovellukset eivät toimi NAT:in läpi ilman erillisiä määrityksiä
- NAT viivästää omalta osaltaan IPv6:een siirtymistä
- NAT rikkoo kerrosarkkitehtuurin periaatetta
- reitittimien ei tulisi koskea kuljetuskerrokseen
- NAT:ista aiheutuu viivettä, prosessori- ja muistikuormaa reitittimessä
- jokaisesta paketista pitää muuttaa osoitteita ja laskea tarkistussummia uudestaan
Mobile IP
- Termejä
- Kotiosoite - pysyvä osoite (permanent address)
- Kotiagentti (Home Agent, HA)
- Vierasosoite - (Care-of-Address, CoA)
- Vierasagentti (Foreign Agent, FA)
- Kotisolmu - (Home Node, HN)
- Kommunikaatiokumppani - (Correspondant Node, CN)
- Kolmioreititys - epäsuora reititys
- Suora reititys
Mobile IP vs. GSM puhelun reititys
Reititysalgoritmit - vertailu
Yhteystila | Etäisyysvektori | Polkuvektori | |
---|---|---|---|
Algoritmi | Dijkstra | Bellman–Ford | Ei etsitä lyhintä reittiä |
Esimerkki | OSPF | RIP | BGP |
Topologia | Tunnetaan koko verkon topologia | Tiedetään minkä naapurin kautta kohteet saavutetaan | Tiedetään polku kohdeverkkoon (ei välttämättä lyhin) |
Kommunikoi | kaikkien reitittimien kanssa | naapuri- reitittimien kanssa | naapuri-AS:n reitittimien kanssa |
Päivitykset | Muutosten aiheuttamat (muuttunut tieto) | Periodiset (koko reititystaulu) | Muutokset polussa (uusi mainos) |
Käyttökohde | suuri, hierarkinen verkko | pieni, ei-hierarkinen verkko | AS:ien välinen reititys |
Laskenta-aika | on kriittinen parametri | Ei ole kriittinen parametri | Ei ole kriittinen parametri |
Ylläpito | Vaati laajempaa verkkotietämystä | Ei vaadi paljoa verkkotietämystä | Tarvitaan tietämystä myös ISP-sopimuksista |
Luennolla on käytetty CORE reititys emulaattoria. Opettaja esimerkkinä käyttämät verkot:
BGP reititystaulu
- Tietoja CIDR raportissa
- Internetin Globaalin reititystaulun koko
- toukokuussa 2016 on noin 600000 reittiä
- toukokuussa 2017 on noin 650000 reittiä
- toukokuussa 2018 on noin 720000 reittiä
- toukokuussa 2019 on noin 780000 reittiä
- joista reilu puolet on yhdistetty mainoksissa
- Eli reittejä joita AS:t BGP protokollalla mainostavat toisille AS:lle
- Reitit ovat reittejä joko IPv4 tai IPv6 verkkoihin
- AS:n reunareitittimet ylläpitävät BGP reititystaulua
- mainostavat naapureilleen tuntemiaan reittejä
- päivittävät oman taulunsa naapureiden mainosten ja oman politiikkansa mukaan
- AS:n muut reitittimet hoitavat AS:n sisäistä reititystä
Reititysalgoritmit
Reititysalgoritmien animaatioita
- Dijkstra'n algoritmin animaatio
- Etäisyysvektoriprotokollan animaatio
- Bellman-Ford, Dijikstra ja muita visualisointeja
- BGPlay - Kokeile vaikka AS1741 (Funet)
Linkkikerros (Teoria 3)
- Keskitin vs. kytkin vs. reititin
- ARP ja MAC osoitteet
- Ethernet CSMA/CD ja WLAN CSMA/CA
- Virheen havaitseminen ja korjaus
Ethernet keskitin (tai eng. hub)
Luennolla on käytetty CORE reititys emulaattoria. Opettaja esimerkkinä käyttämä verkko:
- Keskitin on Fyysisen kerroksen laite
- Käytetään yhdistämään useampia laitteita reitittimeen
- Läpinäkyvä - tietokoneet tai reitittimet eivät näe keskitintä
- forwardoi Ethernet kehyksiä, kaikkiin liityntöihin
- Laitteet sijaitsevat samassa törmäysalueessa
- Myös Toistin (eng. repeater) on fyysisen kerroksen laite
- Käytetään pidentämään laitteiden välistä etäisyyttä
- Läpinäkyvä - tietokoneet tai reitittimet eivät näe toistinta
- Vahvistaa heikentynyttä signaalia pitkillä kaapeliväleillä (tai myös langattomasti)
- Sekä keskitin että toistin ovat pääosin poistuneet käytöstä ja IEEE:n Ethernet standardi on määritellyt ne vanhentuneeksi verkkosegmenttien yhdistämiseen
- Keskittimelle on vielä muutama käyttökohde, esimerkiksi pakettien kaappaaminen saman verkon laitteista
Ethernet kytkin
- Linkkikerroksen laite
- Käytetään yhdistämään useampia laitteita reitittimeen
- Läpinäkyvä - tietokoneet tai reitittimet eivät näe kytkintä
- tallentaa ja forwardoi Ethernet kehyksiä
- Tutkii saapuvan paketin MAC osoitteita
- Kytkimet oppivat itse MAC osoitteiden sijainnin
- Laitteet sijaitsevat eri törmäysalueissa
- sen jälkeen kun kytkin on oppinut laitteiden sijainnin
- Viisaampi laite kuin keskitin
Reititin vs. kytkin vs. keskitin
- Reititin - Router
- Verkkokerroksen laite
- Välittää paketteja verkkokerroksen osoitteen perusteella
- Tarvitsee reititysprotokollia osoitteiden sijaintien oppimiseen, tai asetukset tehdään manuaalisesti
- Kytkin - Switch
- Linkkikerroksen laite
- Välittää paketteja linkkikerroksen osoitteen perusteella
- Oppii itse osoitteiden sijainnin lähetettyjen pakettien perusteella
- Silta - Bridge: muuten samanlainen mutta liityntöihin kytketään kokonaisia verkkoja. Ei juurikaan käytetä enää
- Keskitin - Hub
- Fyysisen kerroksen laite
- Välittää paketteja jokaiseen linkkiin (fyysiselle siirtotielle) riippumatta osoitteesta
- Toistin - Repeater: Vahvistaa fyysisen kerroksen signaalia ja välittää sen eteenpäin
Verkkolaitteet tänään
- Reititin - Layer 4 Router
- NAT ja palomuuri toimii osin kuljetuskerroksella
- Kytkin - Multilayer Switch
- Kytkimeen on lisätty useita eri ominaisuuksia
- Layer 3 switching, reititys toteutetaan laitteistolla (ASIC), reitittimessä ohjelmistolla
- Layer 4-7 switching, esim. load balancing, NAT, VPN, web switch
- Kytkin - Software-defined networking (SDN)
- Kytkimen kontrolli- ja data-osiot erotellaan
- Ohjelmallisesti muokataan kontrolli-osioon sääntöjä yms. sille miten ja minne data välitetään data-osion kautta
av: Huom: Tehtävänantoa muutettu, että kysytään vain tiettyä dokumenttia, kun tarkistin on päivitetty. Aiemmin hyväksyttiin 2 eri vaihtoehtoa, joten kaikki vanhat vastaukset eivät enää anna pisteitä
—ARP ja MAC osoitteet
- Address Resolution Protocol (ARP)
- Jotta IP paketti voidaan välittää linkkikerroksella oikealle laitteelle
- Selvittää IP osoitetta vastaavan MAC osoitteen
- tai
- Reitittimen MAC osoitteen, jos IP osoite on eri verkossa
ARP ja MAC osoitteet reitittimen kanssa
Olkoon meillä kuvan mukainen verkko, missä Laite A
ja Laite B
on yhdistetty reitittimen "eri puolille", eli laitteet eivät ole samassa aliverkossa. Laitteen A
MAC osoite on AA-AA-AA-AA-AA-AA
ja se on yhditetty reitittimen liityntään, jonka MAC osoite on BB-BB-BB-BB-BB-BB
. Laitteen B
MAC osoite on DD-DD-DD-DD-DD-DD
ja se on yhditetty reitittimen liityntään, jonka MAC osoite on CC-CC-CC-CC-CC-CC
.

Laitteiden reititystaulut on esitetty alla. Oletetaan että ARP-taulut ovat tyhjiä.
Laite A
Destination Netmask Gateway Interface
0.0.0.0 0.0.0.0 111.111.111.111 111.111.111.222
Laite B
Destination Netmask Gateway Interface
0.0.0.0 0.0.0.0 222.222.222.111 222.222.222.222
Reititin
Destination Netmask Gateway Interface
111.111.111.0 255.255.255.0 On-link 111.111.111.111
222.222.222.0 255.255.255.0 On-link 222.222.222.111
Laite A lähettää ping viestin laitteelle B, mihin laite B reagoi lähettämällä vastauksen ping viestiin. Tarvittaessa MAC osoitteet selvitetään ARP protokollalla.
Halutessasi voit itse kokeilla kuvan mukaista simulaatiota, jos sinulla on Java versio 7. Simulaattori https://code.google.com/p/psimulator/ ei toimi Javan version 8 kanssa. Simulaattorin käyttöön löytyy ohjeita http://www.brianlinkletter.com/psimulator2-graphical-network-simulator/. Ohjelmasta on tehty versio, joka toimii uudempien Java versioiden kanssa Rakenna vastaava verkko itse ja kokeile toistaa opettajan videolla tekemät visualisoinnit.
En saa tätä millään oikein
—Tässä pitää ottaa huomioon ARP protokollan toiminta, eli ARP etsii IP osoitteen omistajan MAC osoitetta, eli paketti lähetetään kaikille verkon laitteille, vaikka tehtävänannon tapauksessa sitten reititin vastaa laitteelle A.
—Carrier Sense Multiple Access
Step | Collision Detection (CD) | Collision Avoidance (CA) | Collision Avoidance with RTS/CTS |
---|---|---|---|
1 | Kuunnellaan onko hiljaista | Kuunnellaan onko hiljaista | Kuunnellaan onko hiljaista |
2 | Jos ei, niin odotetaan, kunnes on hiljaista | Jos ei, niin odotetaan, kunnes on hiljaista | Jos ei, niin odotetaan, kunnes on hiljaista |
3 | Jos on, niin lähetetään | Jos on, niin lähetetään | Jos on, niin pyydetään lupaa lähettää |
4 | Kuunnellaan meneekö lähetys ilman häiriötä perille | Odotetaan kuittausta datapaketille | Jos pyynnöt törmäävät, odotetaan satunnainen aika ja mennään kohtaan 1 |
5 | Jos ei, niin on tapahtunut törmäys | Ei kuittausta, oletetaan törmäyksen tapahtuneen | Jos saadaan lupa lähettää, lähetetään |
6 | Odotetaan satunnainen aika ja mennään kohtaan 1 | Odotetaan satunnainen aika ja mennään kohtaan 1 | Jos ei saada lupaa, odotetaan satunnainen aika ja mennään kohtaan 1 |
Bittivirheiden havaitseminen ja korjaus
- Virheiden havaitsemiseksi tai korjaamiseksi lisätään viestiin ylimääräisiä bittejä
- Data bitit ja ylimääräiset bitit muodostavat koodisanan
- Virheiden havaitseminen
- Vertaamalla vastaanotettuja bittejä hyväksyttäviin koodisanoihin, voidaan havaita virheitä
- Yksinkertaisin: pariteettibitin lisääminen
- Valitaan kumpaa tarkastellaan: nollia vai ykkösiä
- Valitaan pitääkö niitä olla pariton vai parillinen määrä
- Virheiden korjaus
- Ylimääräisisten bittien avulla voidaan tulkita, jollakin todennäköisyydellä, virheellisen viestin virheetön muoto
- Yksinkertaisin: toistetaan lähetettävää dataa
- Lähetetään kaksi tai useampia kopioita samasta bitistä
- Jos vastaanottaessa kopiot poikkeavat toisistaan, oletetaan että lähetetty bitti on se jota on enemmistö kopioista
Koodisana esimerkki
Muodostetaan esimerkkinä koodisana, jossa lisätään kahden bitin perään pariteettibitti, siten että muodostetussa koodisanassa on aina pariton määrä 1-bittejä. Alla on taulukoitu kaikki mahdolliset kahden bitin kombinaatiot ja niistä muodostuvat edellä olevan määritelmän mukaiset koodisanat.
Databitit | Koodibitit | Koodisana |
---|---|---|
00 | 1 | 001 |
01 | 0 | 010 |
10 | 0 | 100 |
11 | 1 | 111 |
Vastaanotossa tutkitaan onko vastaanotettu bittijoukko jokin koodisana. Lähettäessä kolmen bitin jono on aina jokin muodostetuista koodisanoista. Vastaanotettaessa, bittivirheiden sattuessa, voi bittijono olla myös sellainen, jota ei voi muodostua lähetyksessä koodausmenetelmän sääntöjen mukaan. Alla on taulukoitu kaikki kolmen bitin kombinaatiot ja verrattu niitä edellisen taulukon määritelmän mukaisiin koodisanoihin.
Vastaanotetut bitit | Onko hyväksytty koodisana |
---|---|
000 | 000 (ei, virhe) |
001 | 001 (on) |
010 | 010 (on) |
011 | 011 (ei, virhe) |
100 | 100 (on) |
101 | 101 (ei, virhe) |
110 | 110 (ei, virhe) |
111 | 111 (on) |
Pariteetin tarkistus
Pariteettibitin käyttäminen on yksinkertaisin keino havaita bittivirheitä. Pariteettibittiä käytettäessä valitaan joko parillinen tai pariton pariteetti. Tällöin koodisanassa tulee olla parillinen tai pariton määrä 1
-bittejä. Käytännössä pariteettibittiä käyttävät koodisanat ovat melkein aina tavun monikertoja, ja hyvin usein yhden tavun kokoisia, joten niiden bittien kokonaismäärä on parillinen. Tällöin parillinen tai pariton pariteetti on sama sekä 1
- että 0
-biteille. Käytännön toteutuksissa käytetään 1
-bittien pariteetin asettamista parittomaksi tai parilliseksi. Lähetettäessä dataan, eli lähetettävään bittijonoon, lisätään pariteettibitti, siten että koodisanassa on valittu pariteetti. Vastaanotossa voidaan havaita pariteetin muuttuminen, jolloin viesti havaitaan virheelliseksi.
Seuraavissa tehtävissä tarvitsee selvittää 7-bittisiä ASCII merkkejä vastaava bittikuvio, eli binääriluku. ASCII taulukoita löytyy Internetistä, tai voit käyttää allaolevaa python-koodia.
Pariteettibittiä on käytetty mm. 7-bittisten ASCII-merkkien yhteydessä. Nykyään pariteettia käytetään esimerkiksi sarjaliikenteessä ja yleensä pariteettibitillä suojataan binääristä informaatiota, siten että pariteetin lisäyksen jälkeen koodisana on tavun kokoinen tai jokin tavun monikerta. Seuraavissa tehtävissä on käytössä tämä tarkistin.
Pariteettimatriisi
Pariteettibitillä voidaan vain havaita virheen tapahtuneen, jos virheitä on ollut pariton määrä. Virheen korjaaminen vaatii lisää informaatiota ja pariteettia käytettäessä on mahdollista tutkia binäärilukuja 2-ulotteisesti, käyttämällä pariteettimatriisia. Pariteettimatriisissa lähetettävä data, esimerkiksi 7-bittiset ASCII binääriluvut, ryhmitellään isommiksi kokonaisuuksiksi. Käytännössä tämä tehdään muodostamalla matriisi, eli asettamalla binääriluvut allekkain. Sitten pariteetti lasketaan jokaiselle riville ja pariteettibitti lisätään jokaisen rivin loppuun. Lopuksi lisätään vielä yksi rivi, johon tulee pelkkiä pariteettibittejä. Tämän viimeisen rivin bitit lasketaan yläpuolella olevista riveistä sarakekohtaisesti. Alla on esimerkki, johon on asetettu binääriluvut ASCII-merkeistä ITKP104
, jokainen omalla rivillään. Pariteettina on parillinen määrä 0- (tai 1-bittejä, koska sarakkeita ja rivejä on pariteettibittien lisäämisen jälkeen parillinen määrä). Rivi- ja sarakekohtaiset pariteettibitit on merkitty sinisellä, data bitit on värjätty TIM-järjestelmän oletusvärillä.
1001001 | 1 |
1010100 | 1 |
1001011 | 0 |
1010000 | 0 |
0110001 | 1 |
0110000 | 0 |
0110100 | 1 |
0110011 | 0 |
Jos bittiryhmässä tulee yksittäinen bittivirhe, aiheuttaa se sekä rivi- että sarakepariteetin muuttumisen. Näin virheellinen bitti voidaan tunnistaa, kun tiedetään millä rivillä ja millä sarakkeella virhe on tapahtunut. Menetelmä vastaa muuten yksinkertaista pariteetin tarkistusta, mutta nyt lähetetään tietyin väliajoin pariteettirivi, mikä pienentään koodin hyötysuhdetta, eli databittien suhdetta kaikkiin lähetettäviin bitteihin.
Etsi seuraavassa tehtävässä esiintyvä bittivirhe ja korjaa se. Seuraavien tehtävien matriisissa saa olla ylimääräisiä väli( )-, putki(|)- ja väliviiva(-) -merkkejä sekä rivinvaihtoja. Tabulaattoria tarkistin ei vielä tue.
Tässä lukee ITKP1043
—Pariteettimatriisissa on jokaisen rivin lopussa pariteetti bitti ja sen lisäksi viimeinen rivi on kokonaan pariteettibittejä ja sitä ei pidä tulkita informaatioksi
—Seuraavissa tehtävissä muodosta harmaalla taustalla olevia ASCII-merkkejä vastaavat binääriluvut omille riveilleen ja lisää pariteettimatriisiin pariteettibitit tehtävänannossa määritellyn pariteetin mukaan.
Virheen havaitseminen ja korjaus - Hamming etäisyys
- Hammingin etäisyys on koodisanojen toisistaan eroavien bittien lukumäärä
- Koodin minimi Hamming etäisyys on koodin koodisanojen välinen pienin Hamming etäisyys
- Koodin minimi Hamming etäisyys määrittää koodin kyvyn havaita ja/tai korjata virheitä
- Jos minimi hamming etäisyys on \(n\), niin
- \(n-1\) bitin virheet voidaan havaita ja
- \(\frac{n-1}{2}\) bitin virheet korjata
Minimi Hamming etäisyys - Esimerkki
Alla on taulukoitu aiemman esimerkin, pariton määrä 1-bittejä pariteetti, koodisanojen väliset erot biteissä. Koodi muodostaa tasaisen Hamming etäisyyden, eli kaikki koodisanat eroavat toisistaan kahden bitin osalta, näin koko koodin minimi Hammin etäisyys on 2. Koodi kykenee siten havaitsemaan yhden bitin virheet, mutta ei korjaamaan virheitä. Kahden tai kolmen bitin virheet jäävät havaitsematta.
001 | 010 | 100 | 111 | |
---|---|---|---|---|
001 | - | 0xx | x0x | xx1 |
010 | 0xx | - | xx0 | x1x |
100 | x0x | xx0 | - | 1xx |
111 | xx1 | x1x | 1xx | - |
Jos virheitä kontrolloiva menetelmä on huono, se voi generoida koodisanoja, jotka ovat liian lähellä toisiaan. Jos menetelmä muodostaa esimerkiksi koodisanat 000, 100, 001
ja 111
, niin Hamming etäisyys on suurimmillaan kolme, mutta joissain tapauksissa 2 tai jopa 1. Minimi Hamming etäisyyden ollessa 1, ei menetelmällä voi varmasti havaita edes yhden bitin virheitä.
000 | 001 | 100 | 111 | |
---|---|---|---|---|
000 | - | 00x | x00 | xxx |
001 | 00x | - | x0x | xx1 |
100 | x00 | x0x | - | 1xx |
111 | xxx | xx1 | 1xx | - |
Virheen havaitseminen ja korjaus - Esimerkkejä
Databitit | Koodibitit | Koodisana |
---|---|---|
00 | 0 | 000 |
01 | 1 | 011 |
10 | 1 | 101 |
11 | 0 | 110 |
Minimi Hamming etäisyys = 2
Databitit | Koodibitit | Koodisana |
---|---|---|
0 | 0 | 00 |
1 | 1 | 11 |
Minimi Hamming etäisyys = 2
Databitit | Koodibitit | Koodisana |
---|---|---|
0 | 00 | 000 |
1 | 11 | 111 |
Minimi Hamming etäisyys = 3
Toistokoodi
Toistokoodi on yksinkertaisin menetelmä korjata virheitä. Ideana on että jokaisesta lähetettävästä bitistä lähetetään useita kopioita. Vastaanotossa sitten tarkastetaan onko kaikki kopiot samoja. Virheen tapahtuessa tulkitaan vastaanotettu bitti siksi, josta on vastaanotettu eniten kopioita.
Toistokoodia ei juurikaan käytetä, koska sen tehokkuus virheenkorjauksessa on huono ja informaatiobittien suhde kaikkiin lähetettyihin bitteihin on pieni. Ainoa hyvä puoli on sen toteutuksen yksinkertaisuus. Kolmen pituinen binäärinen toistokoodi on vastaava kuin (3,1) - Hamming koodi.
Tämä toistokoodi ei auennut, ei ilmeisesti ole käyty luennoilla läpi?
—3-toisto näyttää tarkoittavan käytännössä sitä, että jos binäärikoodi on esimerkiksi: abab niin kolmen toiston jälkeen se näyttää tältä: aaabbbaaabbb
—Videoilla on käyty asiaa läpi jonain vuonna, mutta en ole näköjään vielä linkittänyt tähän kohtaan aiheesta. Täytyypä etsiä ja linkittää
—Tämän c-tehtävän tarkistimessa on jotain häikkää. Ei anna pisteitä.
av: selvitämme asiaa TIM-tuen kanssa.
EDIT: vika korjattu, liittyi |
-merkkiin, joka on yksi arvottavista merkeistä.
Virheiden havaitseminen Internetissä
Virheitä havaitaan Internetissä monella kerroksella. Virheiden korjausta tehdään pääasiassa langattomissa linkkitekniikoissa, linkkikerroksella. Sovelluskerroksella käytetään joskus virheenkorjausta, kun kuljetuskerroksella on UDP, yleisempää kuitenkin on toteuttaa mekanismeja, joilla toivutaan kadonneista paketeista. Bittivirheen jääminen huomaamatta sekä linkki-, verkko- että kuljetuskerroksella on hyvin epätodennäköistä.
- Linkkikerros
- Ethernet kehys
- CRC-32 tarkistussumma
- Vastaanottajan verkkolaite hylkää väärän tarkistussumman sisältävät kehykset
- Erilaisia eri linkkitekniikoilla
- Ethernet kehys
- Verkkokerros
- IPv4
- IPv4 tarkistussumma suojaa otsikkokenttiä
- Reitittimet tai vastaanottaja hylkää väärän tarkistussumman sisältävät kehykset
- IPv6
- Tarkistussumma poistettiin versiosta 6 reitittimien laskentakuorman minimoimiseksi
- Oletetaan että linkkikerros ja kuljetuskerros tarjoavat riittävän suojan virheiden havaitsemiselle
- IPv4
- Kuljetuskerros
- UDP
- UDP Tarkistussumma, joka suojaa hyötykuorman ja informaation sekä UDP että IP protokollien otsikkokentistä
- Vapaaehtoinen IPv4:n kanssa, pakollinen IPv6:n kanssa
- Vastaanottajan käyttöjärjestelmän verkkopino hylkää väärän tarkistussumman sisältävät paketit
- TCP
- TCP Tarkistussumma, joka suojaa hyötykuorman ja informaation sekä TCP että IP protokollien otsikkokentistä
- Vastaanottajan käyttöjärjestelmän verkkopino hylkää väärän tarkistussumman sisältävät paketit
- Uudelleen lähetykset joko ajastimen lauetessa tai kolmesta duplikaattikuittauksesta
- UDP
- Sovelluskerros
- Jos kuljetuskerroksella käytössä UDP, niin sovelluksen tarpeiden mukaan
- uudelleenlähetykset tai jokin muu menetelmä virheistä toipumiseen
Lopuksi - Kaikki mitä tapahtuu www- sivun pyynnössä
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.